Access中的交易

dar*_*kjh 7 ms-access vba dao

我需要执行几个sql子句,插入,更新和删除等.如何在Access中使用事务将它们绑定在一起?

DAO是首选.

喜欢:

BeginTrans
Excute SQL_1
Excute SQL_2
.....
CommitTrans
Run Code Online (Sandbox Code Playgroud)

谢谢!

Ton*_*ill 24

这是一个更完整的骨架......

Dim ws As DAO.Workspace
Dim in_trans As Boolean

Sub Transaction()
On Error GoTo Trans_Error
    Set ws = DBEngine.Workspaces(0)
    in_trans=True
    ws.BeginTrans

    <do some SQL stuff; maybe use Err.Raise>

    ws.CommitTrans
    in_trans=False
Trans_Exit:
    Set ws = Nothing
    Exit Sub
Trans_Error:
    If in_trans = True Then
         ws.Rollback
    EndIf
    Resume Trans_Exit
End Sub
Run Code Online (Sandbox Code Playgroud)

  • 我将'Resume Trans_Exit`替换为`'执行其余的错误处理',因为记录错误,显示消息,重新抛出错误或返回一些错误代码通常比"静默"回滚更合适.另外,由于在子内部只需要`ws`和`in_trans`,我也将它们的声明放在Sub中. (8认同)

Hei*_*nzi 4

如果使用DAO,则可以使用全局对象的BeginTrans和方法:CommitTransDBEngine

Dim db As Database
Set db = CurrentDb

DBEngine.BeginTrans
db.Execute SQL_1
db.Execute SQL_2
...
DBEngine.CommitTrans
Run Code Online (Sandbox Code Playgroud)