18c0693f

Программа 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

CompEbook.ru Железо, дизайн, обучение и другие