Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 表单上的数据更改时的表单级事件_Vba_Ms Access - Fatal编程技术网

Vba 表单上的数据更改时的表单级事件

Vba 表单上的数据更改时的表单级事件,vba,ms-access,Vba,Ms Access,基本上,我正在处理MSAccess应用程序和表单,管理员将在其中查看和编辑用户数据,我希望能够使用字段的旧值和新值随时调用事件。此函数将向审核表中添加记录以跟踪更改 创建查询以将条目添加到审计表中没有问题,但我不知道将函数调用放在何处。我已经尝试了一些表单级别的事件,所以我不必进入50个字段中的每一个字段并编辑它们的onBlur事件来检查新值,但运气不好 欢迎提供任何提示。您可以在“插入后”、“更新后”和“确认后”事件中调用您的函数。这些类似于在插入、更新或删除记录后触发的触发器。Microso

基本上,我正在处理MSAccess应用程序和表单,管理员将在其中查看和编辑用户数据,我希望能够使用字段的旧值和新值随时调用事件。此函数将向审核表中添加记录以跟踪更改

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


欢迎提供任何提示。

您可以在“插入后”、“更新后”和“确认后”事件中调用您的函数。这些类似于在插入、更新或删除记录后触发的触发器。

Microsoft有一篇关于此的文章:。

解决方案(1)是在“beforeUpdate”事件中添加事件处理程序。这很有趣

解决方案(2)是在afterUpdate事件中将记录集中的数据与控件中的数据进行比较:对于绑定到记录集中字段的控件,始终存在控件中的值与记录集中的值不同的步骤。当控制源是直字段名称时,这非常容易

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

如果您的数据更新是通过SQL synatx进行的,那么解决方案(3)将是将Access应用程序发送到数据库服务器的“插入”或“更新”字符串存储在“事务日志”中

我尝试过这个(特别是在更新之前/之后),发现当我在字段之间切换时它并不总是更新,但有时只有在我关闭表单或移动到新记录时才会更新。我想这是为了提高效率,但这意味着我必须将所有原始数据存储在全局变量中进行比较