我是MS Access的新手,原谅我这个简单的问题,但我对目前的问题感到很困惑。
所以我希望在表收到其中一个字段的更新后运行VBA函数。我所做的是:
在CREATE-> Macro下创建一个名为Macro_update的宏,其中包含动作RunCode,其参数是我希望运行的VBA函数。该功能没有错误。
选择我的表格,在表格>更新后,我写了
IF [Old].[status]=0 And [status]=1 THEN
RunDataMacro
MacroName Macro_update
但是在我更新我的表中的状态字段之后没有发生任何事情......我怀疑在第2步中我的操作是RunDataMacro,但我实际上正在运行宏(有区别吗?)...任何帮助表示赞赏!
答案 0 :(得分:7)
您现在可以使用数据宏让它在本地运行。这意味着该表将需要存储在Access数据库中。
如果您的Web服务实际上没有使用Access Runtime与访问数据库容器进行交互,那么数据宏可能无法正常触发或未按预期触发。您的里程可能会有所不同。
如果您以后将数据库迁移到SQL服务器(MySQL,Microsoft SQL,PostgreSQL),那么您的数据宏将需要在SQL服务器上本机实现为 Trigger 。
目前,我正在编写一些说明,以演示如何在单个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
创建数据宏(这里更具描述性,因为人们很容易迷失在这里)
将名称设置为任意值,例如:MyLocalVar
将表达式设置为以下
表达文字:
=VBAFunction([Old].[FieldName],[FieldName])
测试它:创建更新查询
接下来,您需要创建一个更新查询,在包含您刚刚创建的数据宏的表上执行更新。
要对此进行测试,您只需将所有记录中的字符串字段更新为一个值即可。
UPDATE [TestTable] SET [TestText] = "Test"
按控制+ G 以显示立即窗口。您会注意到为每个更新的记录触发了数据宏。