Выполнение
транзакций
Транзакцией
называется операция обмена данными между клиентом и сервером. Методы объекта
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 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