Транзакция в доступе - PullRequest
7 голосов
/ 10 мая 2011

Мне нужно выполнить несколько SQL-предложений, вставки, обновления и удаления, например.Как использовать транзакцию в Access для их связывания?

DAO предпочтительнее.

вроде:

BeginTrans
Excute SQL_1
Excute SQL_2
.....
CommitTrans

Спасибо!

Ответы [ 2 ]

24 голосов
/ 10 мая 2011

Вот более полный скелет ...

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
4 голосов
/ 10 мая 2011

Если вы используете DAO, вы можете использовать методы BeginTrans и CommitTrans глобального DBEngine объекта:

Dim db As Database
Set db = CurrentDb

DBEngine.BeginTrans
db.Execute SQL_1
db.Execute SQL_2
...
DBEngine.CommitTrans
...