我在我的 MS Access VBA 代码中使用事务。我更新了我的一个字段,即Incoming_Pieces
我的 Inventory 表中的字段。然后,在提交事务之前,我DLookup
在更新的字段上使用。该DLookup
函数将返回事务之前的值,而不是提交之前事务期间更新的值。
这是故意的吗?没有错误消息或任何警告表明我正在检索的数据与事务中正在更新的数据不同步。
是生成SELECT
语句而不是 DLookup 的唯一解决方法吗?
这是我的测试代码来证明这一点。
Public Function testTransaction()
Dim pieces As Variant
pieces = DLookup("Incoming_Pieces", "Inventory", "Code='MT-1-1000x1x1'")
Debug.Print (pieces) ' <------------ prints 0
DAO.DBEngine.BeginTrans
Dim sql As String
sql = "UPDATE Inventory SET Incoming_Pieces = 10 WHERE Code='MT-1-1000x1x1'"
CurrentDb.Execute (sql)
pieces = DLookup("Incoming_Pieces", "Inventory", "Code='MT-1-1000x1x1'")
Debug.Print (pieces) ' <------------ prints 0
DAO.DBEngine.CommitTrans
pieces = DLookup("Incoming_Pieces", "Inventory", "Code='MT-1-1000x1x1'")
Debug.Print (pieces) ' <------------ prints 10
End Function