3

如果您使用 .BeginTrans 和 .Execute 然后在 Access VBA 中退出 .CommitTrans 或 .Rollback 之前的代码,会发生什么情况。

4

1 回答 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 回答