MS 访问事件加载表单

Posted

技术标签:

【中文标题】MS 访问事件加载表单【英文标题】:MS access event load form 【发布时间】:2017-08-11 17:20:22 【问题描述】:

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

【问题讨论】:

每个表单是如何加载的?您是否根据某些用户交互在运行时手动加载表单?还是用户使用 Access 中的内置导航来加载每个表单? 表单正在通过各种各样的用户交互加载(我自己没有编写包)。每次打开/加载表单时,我只需要添加某些功能。诸如“Form_Load (pForm As Form)”之类的 DB 事件本来是完美的,但似乎不存在。还是谢谢! 【参考方案1】:

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

我可能会做以下事情:

    使用计时器创建一个隐藏表单,该表单在您的数据库打开时(使用 autoexec 宏)打开。 加载隐藏表单时,初始化数据库中所有可用表单的集合/多级数组,并将其状态设置为关闭(有些困难,可能会与多级数组或集合内的集合一起使用)存储表单名称 + 布尔值打开或关闭)。 定期迭代集合,检查更改,以便您可以查看表单何时关闭并触发您的事件。

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

总的来说,可能,但很难。如果您需要有关某些步骤的指示,我可以提供,但对于实施的主要问题,我会提出一个单独的问题。

【讨论】:

好的,我可以使用 VBA 访问 VBE 对象并修改代码。它确实在 Excel 中工作,我已经做到了,但我并不认为它特别稳定。 Access 是 i.m.h.o.当然不会比 Excel 稳定……但这可能是一种可能性。无论如何,谢谢。 我自己从来没有遇到过任何不稳定的情况。它确实需要对数据库的独占访问权限,但这只是一次修改。但如前所述,我的偏好是第一个(定期检查打开表单的表单)。

以上是关于MS 访问事件加载表单的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MS 访问中过滤负载?

MS-Access 2007 - 如何在点击事件中以编程方式访问子表单列数据

基于当前字段值的MS访问表单组合框行源

MS访问Treeview控件加载缓慢,我需要使用ADO而不是DAO吗?

循环访问 MS Access 子窗体并获取列可见性

如何使用组合框在记录 ms 访问中搜索多个字段?