我更简单的解决方案可能是使用指向 SQL 数据库的链接表,然后创建并调用一个 VBA 函数,该函数使用该函数构建和执行更新查询。在链接表上使用 SQLPassthough。这允许函数立即返回,避免 SQL 数据库中的维护和开销,以及所有初始设置时间。如果需要,链接表还可以保留所有连接,包括用户名和密码。
来自数据宏的 DAO SQLPassthrough 调用的存根
VBA 函数(通用代码)
Public Function SetTimeStamp(ByVal RecordID as Variant)
Dim strSQL As String
Dim db As DAO.Database
strSQL = "UPDATE tblName SET tblName.TimeStampField = " & Now()
strSQL = strSQL & " WHERE RecordIDField = " & RecordID
Set db = CurrentDB()
db.execute strSQL, dbSQLpassThrough + dbRunAsync
End Function
要在更新后事件中实现,请使用 SetLocalVar 调用函数数据宏(通用代码)
If Updated("MyField1") or Updated("MyField2") or Updated("MyField3")
SetLocalVar
Name varTemp
Expression =SetTimeStamp([TableName].[RecordIDField]
End If
这将导致函数执行。它反过来使用 SQLPassThrough 和异步选项运行查询,这会导致 Access 应用程序的速度为零。它可以很容易地修改为将表名称和时间戳字段名称作为参数传递,以便可以在任何表上使用,写入更多字段等。
我发现单个 Access 函数的优势在于,如果您决定增强它,您只需将数据字段添加到表中并修复单个函数。此外,没有计划任务或要维护的队列,这使其成为更清洁的解决方案。
艺术