更新行后MS Access运行代码

Nen*_*Nen 2 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
    
    Run Code Online (Sandbox Code Playgroud)

但是在我更新我的表中的状态字段之后没有发生任何事情...我怀疑在第2步中我的操作是RunDataMacro,但我实际上正在运行宏(有区别吗?)...任何帮助都是不胜感激!

DHW*_*DHW 8

您现在可以使用数据宏使其在本地工作.这意味着该表将需要存储在Access数据库中.

如果您的Web服务实际上没有使用Access Runtime与访问数据库容器进行交互,则数据宏可能无法正确触发或未按预期触发.你的旅费可能会改变.

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

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


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

  • 模块中创建,而不是在窗体或类模块中创建.
  • 这必须是一个功能,不能是一个

码:

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
Run Code Online (Sandbox Code Playgroud)

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

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

  6. Expression设置为以下内容

    • 请务必键入=符号,这将导致显示两个相等的符号

表达文字:

    =VBAFunction([Old].[FieldName],[FieldName])
Run Code Online (Sandbox Code Playgroud)
  1. 保存数据宏关闭宏设计器.
  2. 保存表关闭表

测试它:创建更新查询

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

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

UPDATE [TestTable] SET [TestText] = "Test"
Run Code Online (Sandbox Code Playgroud)
  • 运行查询

Control + G调立即窗口.您会注意到为每个更新的记录触发了数据宏.