暂时禁用 MS Access 数据宏
Posted
技术标签:
【中文标题】暂时禁用 MS Access 数据宏【英文标题】:Temporarily disable MS Access data macros 【发布时间】:2014-08-25 21:44:04 【问题描述】:我有几个 Access 文件,其中包含我要导入到一个主文件中的一组用户的数据。用户文件中的每个表都配置了一个更改前数据宏,该宏在用户每次编辑数据时添加一个时间戳。
(“数据宏”类似于 SQL Server 中的触发器。它们不同于 UI 宏。更多信息,see this page。)
我想将这些时间戳导入主文件,但由于主文件是用户文件的克隆,它还包含相同的数据宏集。因此,当我导入数据时,时间戳会更改为导入时间,这无济于事。
我能找到编辑数据宏的唯一方法是在设计视图中打开每个表,然后使用功能区更改设置。一定有更简单的方法。
我正在使用 VBA 代码执行合并,我想知道是否也可以使用它来暂时禁用数据宏功能,直到合并完成。如果有另一种方法可以一次关闭所有文件/表的数据宏,即使是用户的文件/表,我也会对此持开放态度。
【问题讨论】:
【参考方案1】:禁用代码?不。绕过代码?是的。 使用表/字段作为标志。导入前设置状态。检查事件代码中此标志的状态,并决定是否要跳过其余代码。即
If [tblSkipFlag].[SkipFlag] = false
rest of data macros
EndIf
【讨论】:
【参考方案2】:另一个答案here 解释了如何使用带有acTableDataMacro
参数的(几乎)未记录的SaveAsText
和LoadFromText
方法将数据宏保存和检索到XML 格式的文本文件中。如果要为每个表保存数据宏 XML 文本,请替换 ...
<DataMacro Event="BeforeChange"><Statements>
...与...
<DataMacro Event="BeforeChange"><Statements><Action Name="StopMacro"/>
...然后将更新后的宏写回表中,这可能会产生“短路”这些宏的效果。
【讨论】:
以上是关于暂时禁用 MS Access 数据宏的主要内容,如果未能解决你的问题,请参考以下文章