Access 2002

Группа операций, управляемая ядром


Транзакция — это группа операций, управляемая ядром базы данных. Транзакцию можно начать с помощью метода BeginTrans объекта Workspace. Тогда ни одно из изменений, вносимых в наборы записей, которые открыты в данной рабочей области, не будет сохранено до тех пор, пока вы не вызовете метод CommitTrans. Если же вызвать метод Rollback того же объекта Workspace, все изменения, внесенные в ходе текущей транзакции, будут отменены.

Используя методы управления транзакциями, мы разработали форму frmSub- formTransactions, показанную на  7.22. Эта форма демонстрирует возможность отката текущей транзакции — соответствующую команду в ней выполняет кнопка Cancel Changes. Подчиненная форма нашего примера называется frmSub- formTransactionsSub.

Если вам нужна возможность отката объединенных транзакций главной и подчиненной форм, эти формы нельзя связывать с помощью свойств LinkChildFields и LinkMasterFields. Управление транзакциями требует программной установки свойства подчиненной формы Recordset. Если вы будете полагаться на свойства LinkChildFields и LinkMasterFields, в подчиненной форме окажутся все строки набора записей, а не только те, которые связаны с записью главной формы.

Первым шагом в разработке нашего примера является создание главной и подчиненной форм. О том, как их связать, рассказывалось в разделе «Как связать формы самостоятельно». Мы подготовили запрос qrySubformTransactions, который заполняет подчиненную форму данными, соответствующими выбранной строке главной формы. Кроме того, мы написали процедуру обработки события подчиненной формы BeforeUpdate. Если поле Customer ID подчиненной формы пустое, эта процедура присваивает ему значение одноименного поля главной формы.

Выполнив таким образом все действия, описанные в разделе «Как связать формы самостоятельно», мы получили форму, показанную на  7.22. Данные главной и подчиненной форм в ней синхронизированы, поэтому можно перейти к организации транзакций.

Комментарии закрыты