我无法在访问表单上实现事务/ rollaback功能。
以下是我所做的简要说明:
在表单的Load处理程序中,我启动事务
dbEngine.BeginTrans
gInTransaction = true
然后,有一个“取消”按钮,其Click处理程序就像
dbEngine.Rollback
gInTransaction = false
doCmd.close acForm, "frmName"
最后,表单的卸载处理程序具有:
if gInTransaction then
dbEngine.CommitTrans
gInTransaction = false ' just in case
end if
现在,关于回滚的表单似乎没有任何影响。按“取消”按钮似乎不会回滚任何内容。
我也尝试用dbEngine.workspaces(0)替换dbEngine,但也没有效果。
所以,问题是:如何在Access中实现事务?
感谢任何指向正确方向的指针, 雷
答案 0 :(得分:1)
我认为您不能在表单上实现事务,其中对记录集进行更新(使用beforeUpdate和afterUpdate事件),而事务链接到执行发送到数据库的INSERT,UPDATE或DELETE命令。
编辑:如果您的想法是能够同时管理对连续表单所做的所有更改,那么您有两种不同的解决方案:
答案 1 :(得分:0)
我同意Shahkalpesh表格的更新不会成为交易的一部分。您可以通过使用未绑定的表单而不是使用绑定表单来获取表单,以便您可以控制IO何时完成。
您可以通过几种方式执行此操作,但我首选的方法是将详细信息加载到表单onload中,然后使用一个保存按钮来触发将这些详细信息保存回数据库的sub。我还通常设置一个公共变量调用bDirty并在控件未注明日期时将其更改为true,这样您可以在保存更改之前尝试关闭表单时警告用户
答案 2 :(得分:0)
我posted a code example for how to use transactions in Access一个多星期前,但它并非设计用于处理以绑定形式编辑的数据。基本上,对于绑定表单,您没有通过其他接口执行的控制。这既是一个功能也是一个缺点,取决于你想要做什么。
答案 3 :(得分:0)