MS 访问事件加载表单

MS access event load form

我有大约 20 个 MS-Access 数据库和大约 400 个表单,并且希望在加载任何表单时执行一个操作。 我可能需要一个数据库或应用程序级别的事件,该事件将以 opened/loaded 的任何形式触发。然后我可能只需要为 20 个数据库中的每一个添加一次代码,而不是为 400 个表单中的每一个添加代码。 并且:它必须在 VBA 中(Access >= 2010)! 我的问题:这有可能吗?如果是这样,有人有提示吗? 谢谢, 皮特

我认为有多种方法可以解决这个问题。

我可能会做的是:

  1. 创建一个隐藏的表单,只要您的数据库打开(使用 autoexec 宏),它就会使用计时器打开。
  2. 加载隐藏表单时,初始化数据库中所有可用表单的collection/multi-level数组,并将它们的状态设置为关闭(有点困难,可能会用多级数组或集合中的集合来能够存储表单名称+布尔值打开或关闭)。
  3. 定期迭代集合,检查更改,这样您就可以看到表单何时关闭并触发您的事件。

您还可以使用 VBA 遍历所有表单,如果有 none,则向它们添加一个模块,然后将您想要的 Form_Load 代码添加到该模块。 (同时创建代码来撤消该操作可能是明智的,这样您就可以实际维护代码)。在完善它的同时,您可以检查表单是否已经有一个 Form_Load 操作,如果存在,则将代码附加到它。

总而言之,可能,但很难。如果你想要一些步骤的指示,我可以给他们,但对于实施的主要问题,我会问一个单独的问题。