您现在可以使用数据宏使其在本地工作。这意味着该表需要存储在 Access 数据库中。
如果您的 Web 服务实际上并未使用 Access 运行时与 access 数据库容器交互,则数据宏可能无法正确触发或按预期触发。你的旅费可能会改变。
如果您稍后将数据库迁移到 SQL 服务器(MySQL、Microsoft SQL、PostgreSQL),那么您的数据宏将需要在 SQL 服务器上作为触发器本地实现。
现在,我在下面编写一些说明来演示如何在单个 Access 数据库中从本地数据宏调用 VBA 函数:
创建 VBA 函数 这将是您要从数据宏中调用的函数。
- 在Module中创建它,而不是在 Form 或 Class Module 中。
- 这必须是一个函数,不能是一个子
代码:
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
创建数据宏 (这里将更具描述性,因为人们在这里很容易迷路)
- 在设计视图中打开表(即TestTable)
- 找到正确的功能区
- 在表设计视图中,有一个名为Design的上下文功能区。
- 在该功能区上,有一个名为“创建数据宏”的选项
- 单击创建数据宏并选择更新后
- 从添加新操作组合框中
选择SetLocalVar
- 出现一个SetLocalVar部分。
- 在本节中,我看到名称和表达式
将Name设置为任意值,例如:MyLocalVar
将表达式设置为以下
表达式文本:
=VBAFunction([Old].[FieldName],[FieldName])
- 保存数据宏并关闭宏设计器。
- 保存表并关闭表
测试它:创建更新查询
接下来,您将需要创建一个更新查询,该查询对包含您刚刚创建的数据宏的表执行更新。
要对此进行测试,您只需将所有记录中的字符串字段更新为一个值。
UPDATE [TestTable] SET [TestText] = "Test"
按Control + G调出即时窗口。您会注意到每个更新的记录都会触发数据宏。