我卡在訪問表單上實現事務/回滾功能。如何在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