我希望能够跟踪对现有表中任何字段所做的任何更改。方案如下:
我希望能够将更改(10个更改/行)推送到新表,然后能够在数据表视图中将其打开以引用它。有没有办法在不使用表格的情况下进行访问?
答案 0 :(得分:1)
在2010年及以后,您可以使用数据宏,或者其他系统通常称为表触发器。
你不能在2007年。
请注意,您在此处使用“保存表”这一术语非常错误。实际上在大多数数据库的上下文中都是错误的。用户不“保存”表格。
您只能在数据表中一次编辑一行。当您移开该记录时,将保存ROW(而不是表格)。 ,如果您离开,则保存记录。
在2010年及以后,您使用了表过程代码。这样就可以使用表触发器。
所以2010年及以后确实支持表触发器和存储过程代码。但由于您的问题包括Access 2007,因此我建议使用表触发器(称为数据宏)可能不起作用,除非您可以将用户限制在2010年及以后。
在以下示例中,当用户更新行时,将使用用户信息更新“审核”表。函数fosusername()实际上是一个VBA函数。此代码是从表的更改前更新事件中调用的。
当然这里的问题是你的问题非常基础假设用户保存一个表 - 他们没有,他们编辑+保存“单个”记录,或一次一行。因此,“弄清楚”用户如何完成肯定会是一个挑战。因此,虽然代码可以在用户编辑数据时运行,但是表格代码在“何时”运行时,用户无法关闭表格。
在一天结束时,最好创建一个看起来像表格的数据表,然后将一些设置更改为“锁定”并阻止用户直接使用表格。
答案 1 :(得分:0)
据我所知,没有使用表格就没有解决方法。我不知道实际数据表的事件(如更改或脏事件)。
在表单中,您可以使用dirty属性来确保获取数据。您可以使用DoCmd.RunCommand acCmdDatasheetView
使表单看起来像datahseet,或者在默认情况下在数据表视图中设置表单。