【问题标题】:Temporarily disable MS Access data macros暂时禁用 MS Access 数据宏
【发布时间】:2014-08-25 21:44:04
【问题描述】:

我有几个 Access 文件,其中包含我要导入到一个主文件中的一组用户的数据。用户文件中的每个表都配置了一个更改前数据宏,该宏在用户每次编辑数据时添加一个时间戳。

(“数据宏”类似于 SQL Server 中的触发器。它们不同于 UI 宏。更多信息,see this page。)

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

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

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

【问题讨论】:

    标签: ms-access triggers vba


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      <DataMacro Event="BeforeChange"><Statements>
      

      ...与...

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-10
        • 2023-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-20
        相关资源
        最近更新 更多