logo
ВОПРОСЫ

Пример работы с транзакциями

 

За базовый возьмем пример использования 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;

 

Обратите внимание на то, что когда транзакция не запущена, все равно можно изменять данные и они записываются немедленно.

Yandex.RTB R-A-252273-3
Yandex.RTB R-A-252273-4