更新行后MS Access运行代码

时间:2016-05-17 18:25:10

标签: ms-access access-vba ms-access-data-macro

我是MS Access的新手,原谅我这个简单的问题,但我对目前的问题感到很困惑。

所以我希望在表收到其中一个字段的更新后运行VBA函数。我所做的是:

  1. 在CREATE-> Macro下创建一个名为Macro_update的宏,其中包含动作RunCode,其参数是我希望运行的VBA函数。该功能没有错误。

  2. 选择我的表格,在表格>更新后,我写了

     IF [Old].[status]=0 And [status]=1 THEN
     RunDataMacro 
      MacroName Macro_update
    
  3. 但是在我更新我的表中的状态字段之后没有发生任何事情......我怀疑在第2步中我的操作是RunDataMacro,但我实际上正在运行宏(有区别吗?)...任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:7)

您现在可以使用数据宏让它在本地运行。这意味着该表将需要存储在Access数据库中。

如果您的Web服务实际上没有使用Access Runtime与访问数据库容器进行交互,那么数据宏可能无法正常触发或未按预期触发。您的里程可能会有所不同。

如果您以后将数据库迁移到SQL服务器(MySQL,Microsoft SQL,PostgreSQL),那么您的数据宏将需要在SQL服务器上本机实现为 Trigger

目前,我正在编写一些说明,以演示如何在单个Access数据库中本地从数据宏调用VBA函数:

创建VBA功能这将是您要从数据宏调用的功能。

  • 模块中创建,而不是在表单或类模块中创建。
  • 这必须是功能,不能是 sub

代码:

Public Function VBAFunction(OldValue As String, NewValue As String) As String
  Debug.Print "Old: " & Chr(34) & OldValue & Chr(34);
  Debug.Print vbTab;
  Debug.Print "New: " & Chr(34) & NewValue & Chr(34)
  VBAFunction = "Worked"
End Function

创建数据宏(这里更具描述性,因为人们很容易迷失在这里)

  1. 设计视图
  2. 中打开表格(即TestTable)
  3. 找到正确的功能区
    • 在表格设计视图中,有一个名为设计上下文功能区。
    • 在该功能区上,有一个名为创建数据宏
    • 的选项
  4. 点击创建数据宏,然后选择更新后
    • 现在应该打开“宏设计器”窗口
  5. 添加新操作组合框中选择 SetLocalVar
    • 出现 SetLocalVar 部分。
    • 在本节中,我看到名称表达
  6. 名称设置为任意值,例如:MyLocalVar

  7. 表达式设置为以下

    • 请务必键入=符号,这将导致显示两个相同的符号
  8. 表达文字:

        =VBAFunction([Old].[FieldName],[FieldName])
    
    1. 保存数据宏关闭宏设计器
    2. 保存表格关闭表格
    3. 测试它:创建更新查询

      接下来,您需要创建一个更新查询,在包含您刚刚创建的数据宏的表上执行更新。

      要对此进行测试,您只需将所有记录中的字符串字段更新为一个值即可。

      UPDATE [TestTable] SET [TestText] = "Test"
      
      • 运行查询

      控制+ G 以显示立即窗口。您会注意到为每个更新的记录触发了数据宏。