我卡在访问表单上实现事务/回滚功能。如何在Access中实现交易?
这里是我做了什么的精简概要:
在窗体的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替换用到dbengine(0),没有任何效果。
所以,问题是:我怎么在Access实现事务?
感谢任何指针到正确的方向, 刘若英
在窗体加载和关闭之间执行什么DML语句(UPDATE/INSERT/DELETE)?如何将更改写入数据库? – shahkalpesh 2010-01-25 05:43:58
我没有*明确*写一些dml语句,但是通过填写(连续)表单和追加记录,访问(或表单)为我完成。所以,这将是所有三个提到的dml语句:更新,插入和删除。 – 2010-01-25 06:29:14
在这种情况下,它不会在使用'dbEngine.BeginTrans'启动的事务下运行。如果您在此之前调用了'BeginTrans',则使用'dbEngine.Execute'等执行的语句将在事务下运行。 – shahkalpesh 2010-01-25 07:04:58