0

这个问题引用了 VBIDE 提出的一些事件。我正在寻找一个可以在保存 Access 对象时引发的事件(表单、querydef、模块、类模块等)。

如果这样的事件不可用,我正在寻找解决方法。项目范围的保存事件或代码模块更改事件将是可接受的替代方案。当“msys”系统表之一被更新时,也许有一些创造性的方式来通知,理想情况下,是哪一行。

在最坏的情况下,看起来我可以遍历CurrentDb.QueryDefs .LastUpdatedor CurrentProject.AllForms//属性并在某个时间间隔对其进行轮询,但如果可能的话,我想避免这种情况。.AllModules.AllReports .DateModified

4

1 回答 1

0

没有任何事件可以捕获,但可能有比轮询数据库对象更好的解决方案。

当用户界面中发生某些事情时,数据库窗口(包含所有表、查询和其他对象)将接收 Windows 消息。使用 Spy++ 快速查看显示,当保存对象时,数据库窗口似乎接收到 WM_ENABLE 消息。如果您可以使用 Win32 捕获该消息,那么您可能会开始一个可靠的“事件”。

请注意,VBA 用户窗体可以在 Access 项目中使用,但它们不会出现在数据库窗口中,因此这可能是个问题。

此外,以编程方式更改/添加/删除数据库对象的任何操作都可能不会触发自动数据库窗口刷新或消息。

于 2016-09-10T09:33:02.967 回答