如果您使用 .BeginTrans 和 .Execute 然后在 Access VBA 中退出 .CommitTrans 或 .Rollback 之前的代码,会发生什么情况。
问问题
2061 次
1 回答
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
于 2013-04-03T14:50:33.137 回答