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

问题描述 投票:0回答:4

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

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

欢迎任何提示。

vba ms-access
4个回答
2
投票

0
投票

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


0
投票

解决方案(1)是在“beforeUpdate”事件中添加一个事件处理程序。 Remou 的提议 对此非常有趣。

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

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

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


0
投票

每个可编辑控件都有一个 OnDirty 事件,您可以捕获并执行代码。一旦用户键入单个字符或以任何方式更改值,它就会变为 true。

这可以与更新前和/或更新后事件结合使用,以产生一些非常精细的审核。

© www.soinside.com 2019 - 2024. All rights reserved.