暂时禁用MS Access数据宏

时间:2014-08-25 21:44:05

标签: vba ms-access triggers access-vba

我有几个Access文件,其中包含我要导入一个主文件的一组用户的数据。用户文件中的表每个都配置有Before Change数据宏,每次用户编辑数据时都会添加时间戳。

(“数据宏”类似于SQL Server中的触发器。它们与UI宏不同。有关详细信息,请see this page。)

我想将这些时间戳导入主文件,但由于主文件是用户文件的克隆,因此它还包含同一组数据宏。因此,当我导入数据时,时间戳会更改为导入的时间,这是无益的。

我能找到编辑数据宏的唯一方法是在“设计视图”中打开每个表,然后使用功能区更改设置。必须有一个更简单的方法。

我正在使用VBA代码执行合并,我想知道我是否也可以使用它暂时禁用数据宏功能,直到合并完成。如果有另一种方法可以同时关闭所有文件/表的数据宏,即使在用户的文件/表上也是如此,我也会对此持开放态度。

2 个答案:

答案 0 :(得分:2)

禁用代码?不。绕过代码?是的。
使用表/字段作为标志。在导入之前设置状态。检查事件代码中此标志的状态,并确定是否要跳过其余代码。即。

If [tblSkipFlag].[SkipFlag] = false
  {rest of data macros}
EndIf

答案 1 :(得分:1)

另一个答案here解释了如何将{几乎 - 未记录的SaveAsTextLoadFromText方法与acTableDataMacro参数一起使用来保存和检索数据宏到a XML格式的文本文件。如果要为每个表保存数据宏XML文本,请替换...

<DataMacro Event="BeforeChange"><Statements>

...与......

<DataMacro Event="BeforeChange"><Statements><Action Name="StopMacro"/>

...然后将更新后的宏写回表中,这可能会使这些宏“短路”。