Выполнение транзакций
Транзакцией называется операция обмена данными между клиентом и сервером. Методы объекта Workspace, использующиеся для выполнения транзакций, представлены в табл. 16.7.
Таблица 16.7. Методы объекта Workspace для выполнения транзакций.
| Метод | Описание |
|---|---|
| BeginTrans | Обозначает начало транзакции. Транзакции могут быть вложенными |
| CommitTrans | Обозначает конец транзакции. В этот момент все изменения сохраняются в источнике без возможности их отмены |
| RollBack | Завершение транзакции и отмена результата ее выполнения. Записи в источнике возвращаются в прежнее состояние, отмеченное командой BeginTrans |
Все базы данных, открытые в рабочей области, имеют общую область действия транзакций. Это значит, что действие методов 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 BooleanOn 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 IfMsgBox("Сохранить сделанные изменения?", vbQuestion + vbYesNo, "Вопрос") = vbYes Thenws.CommitTrans 'Сохранить изменения Elsews.Rollback 'Отменить изменения End IfexitHandle: rs.Close Set db = NothingSet ws = NothingExit Sub errHandler: MsgBox "Ошибка!"'Если ошибка возникла в процессе выполнения транзакции, 'отменяем сделанные изменения If flnTrans Thenws.Rollback End IfResume exitHandle End Sub