Выполнение транзакций

Транзакцией называется операция обмена данными между клиентом и сервером. Методы объекта Workspace, использующиеся для выполнения транзакций, представлены в табл. 16.7.

Метод Описание 
BeginTransОбозначает начало транзакции. Транзакции могут быть вложенными
CommitTrans Обозначает конец транзакции. В этот момент все изменения сохраняются в источнике без возможности их отмены 
RollBack Завершение транзакции и отмена результата ее выполнения. Записи в источнике возвращаются в прежнее состояние, отмеченное командой BeginTrans 

Таблица 16.7. Методы объекта Workspace для выполнения транзакций

Все базы данных, открытые в рабочей области, имеют общую область действия транзакций. Это значит, что действие методов BeginTrans, CommitTrans и RollBack объекта Workspace распространяется на все базы данных в семействе Databases объекта Workspace.

Рассмотрим пример программы на VBA с использованием механизма выполнения транзакций (программа 16.11). В приложении "Игра в доминирование" механизм транзакций не используется.

Программа 16.11. Применение механизма транзакций

 Sub ResetCount () Dim ws As Workspace Dim db As Database Dim rs As Recordset Dim flnTrans As Boolean On Error GoTo errHandler ;.. flnTrans = False ' Транзакция еще не началась Set ws = DBEngine.Workspaces(0) Set db = CurrentDb Set rs = db.OpenRecordset("Игроки", dbOpenTable) ws.BeginTrans ' Начало транзакции flnTrans = True ' Транзакция началась rs.MoveFirst Do Until rs.EOF rs.Edit rs!Счет = 0 rs.Update rs.MoveNext Loop If MsgBox("Сохранить сделанные изменения?", _ vbQuestion + vbYesNo, "Вопрос") = vbYes Then ws.CommitTrans ' Сохранить изменения Else ws.Rollback ' Отменить изменения End If exitHandle: rs.Close Set db = Nothing Set ws = Nothing Exit Sub errHandler: MsgBox "Ошибка!" ' Если ошибка возникла в процессе выполнения транзакции, ' отменяем сделанные изменения If flnTrans Then ws.Rollback End If Resume exitHandle End Sub