2008-12-24 39 views
0

基本上,我正在处理MSAccess应用程序和管理员将查看和编辑用户数据的表单,我希望能够在每次更改字段时使用旧字段和新字段的值调用事件。该功能将在审计表中添加一条记录以跟踪更改。在MSAccess表单上更改数据时的表单级别事件?

我没有问题创建查询将条目添加到审计表,但我不知道在哪里放置函数调用。我已经尝试了几个表单级别的事件,所以我不必进入每个五十个字段并编辑它们的onBlur事件来检查新的值,但没有运气。

任何提示将受到欢迎。

回答

0

您可以在插入后,更新后和删除确认事件后调用您的功能。这些有点像触发器,在插入,更新或删除记录后触发。

+0

我曾尝试过(特别是在更新之前/之后),发现当我在字段之间选中时并不总是更新,但有时仅当我关闭表单或移动到新记录时。我想这是为了提高效率,但这意味着我必须将全部原始数据存储在全局变量中进行比较 – 2008-12-24 01:50:14

0

解决方案(1)将在“beforeUpdate”事件中添加事件处理程序。 Remou's proposal对此非常有趣。 (2)将比较记录集中的数据和afterUpdate事件中控件中的数据:对于绑定到记录集中的字段的控件,总是有一个步骤,其中控件中的值不同于记录集。当控制源是直接字段名称时,这非常简单。

但我不喜欢在表单级别审计更改的概念:其结果可能不明确,因为表单级别的数据更改可能不会保存在表级别,因为表单可以在基础记录集之前关闭被更新,或者因为SQL查询没有发送到服务器。

如果您的数据更新是通过SQL synatx完成的,则解决方案(3)将在“事务日志”中存储从Access应用程序发送到数据库服务器的“INSERT”或“UPDATE”字符串。