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