За базовый возьмем пример использования TADOConnection.
Добавим к форме две кнопки (StCmButton и RollbackButton) типа TButton, обработчики событий OnClick этих кнопок, процедуру fix_controls без параметров к форме, обработчик события OnActivate формы
type TForm1 = class(TForm) … private procedure fix_controls; … procedure TForm1.fix_controls; begin if Connection.InTransaction then begin StCmButton.Caption := 'Commit'; RollbackButton.Enabled := True; end else begin StCmButton.Caption := 'Begin'; RollbackButton.Enabled := False; end; MasterSQL.Requery; DetailSQL.Requery; end; procedure TForm1.StCmButtonClick(Sender: TObject); begin if not Connection.InTransaction then Connection.BeginTrans else Connection.CommitTrans; fix_controls; end; procedure TForm1.RollbackButtonClick(Sender: TObject); begin Connection.RollbackTrans; fix_controls; end; procedure TForm1.FormActivate(Sender: TObject); begin fix_controls; end; |
Программу можно запускать. Этот пример находится в директории Trans.
Обратите внимание на то, что когда транзакция не запущена, все равно можно изменять данные и они записываются немедленно.