MS Access - 跟踪对现有表的更改到另一个表(使用表数据表视图 - 不是表单)

时间:2015-03-27 18:47:22

标签: ms-access ms-access-2007 ms-access-2010

我希望能够跟踪对现有表中任何字段所做的任何更改。方案如下:

  • 用户打开MS Access 2007/2010中现有表的数据表视图
  • 更新2个字段和5行(10个单元格)中的值
  • 保存表格(覆盖它)

我希望能够将更改(10个更改/行)推送到新表,然后能够在数据表视图中将其打开以引用它。有没有办法在不使用表格的情况下进行访问?

2 个答案:

答案 0 :(得分:1)

在2010年及以后,您可以使用数据宏,或者其他系统通常称为表触发器。

你不能在2007年。

请注意,您在此处使用“保存表”这一术语非常错误。实际上在大多数数据库的上下文中都是错误的。用户不“保存”表格。

您只能在数据表中一次编辑一行。当您移开该记录时,将保存ROW(而不是表格)。 ,如果您离开,则保存记录。

在2010年及以后,您使用了表过程代码。这样就可以使用表触发器。

所以2010年及以后确实支持表触发器和存储过程代码。但由于您的问题包括Access 2007,因此我建议使用表触发器(称为数据宏)可能不起作用,除非您可以将用户限制在2010年及以后。

在以下示例中,当用户更新行时,将使用用户信息更新“审核”表。函数fosusername()实际上是一个VBA函数。此代码是从表的更改前更新事件中调用的。

enter image description here

当然这里的问题是你的问题非常基础假设用户保存一个表 - 他们没有,他们编辑+保存“单个”记录,或一次一行。因此,“弄清楚”用户如何完成肯定会是一个挑战。因此,虽然代码可以在用户编辑数据时运行,但是表格代码在“何时”运行时,用户无法关闭表格。

在一天结束时,最好创建一个看起来像表格的数据表,然后将一些设置更改为“锁定”并阻止用户直接使用表格。

答案 1 :(得分:0)

据我所知,没有使用表格就没有解决方法。我不知道实际数据表的事件(如更改或脏事件)。

在表单中,您可以使用dirty属性来确保获取数据。您可以使用DoCmd.RunCommand acCmdDatasheetView使表单看起来像datahseet,或者在默认情况下在数据表视图中设置表单。

相关问题