如果您使用.BeginTrans和.Execute,那么您会在Access VBA中的.CommitTrans或.Rollback之前退出代码。
答案 0 :(得分:2)
丹尼尔的评论几乎总结了一下。当我运行以下代码时......
Sub noCommit()
Dim cdb As DAO.Database, rst As DAO.Recordset
Set cdb = CurrentDb
Set rst = cdb.OpenRecordset("tblSampleData", dbOpenTable)
DBEngine.Workspaces(0).BeginTrans
rst.Edit
rst!Item = "Item1amended"
rst.Update
'' no Commit and no Rollback
End Sub
...然后在数据表视图中打开表格,任何编辑两个记录中的任何一个的尝试都会在记录选择器上产生“哔”和“无条目”图标。
尝试添加新记录时遇到“无法更新”错误:
因此,不会写入事务中所做的更改,并且表将保持锁定状态,直到连接关闭(或事务被清除)。由于我的交易基于默认的Access连接(DBEngine.Workspaces(0)
),这意味着关闭和重新打开Access,或运行以下内容:
Sub transRollback()
DBEngine.Workspaces(0).Rollback
End Sub