1

私はDelphi 2010をFIB ComponentslikeTpFIBDatasetとデータベースで使用TpFIBTransactionTpFIBDatasetています。Firebird

私はすでに TpFIBDataset の 'AutoCommit' プロパティを 'False' に設定しており、try..finallyブロック内で以下のステートメントを実行してロールバックすると、トランザクション データは引き続きポストされます。

コード:

FIBDataset.Post;

以下はサンプルコードです。

コード:

try
  FIBDatabase.StartTransaction;

       ....

          Block of Code;

       ...
    finally
      if saveALL then
        FIBDatabase.CommitRetaining
      else
        FIBDatabase.RollbackRetaining;
    end;
4

1 に答える 1

0

データセットのトランザクションも確認して変更する必要があります

FIBDataset.AutoCommit := false;

クエリも閉じる必要があります。この場合

FIBDataset.Close;
FIBDatabase.Rollback;

編集

また、(データベースではなく) すべてのデータセットに 1 つのトランザクション コンポーネントを割り当てることをお勧めします。また、トランザクション コンポーネントの start、commit、rollback メソッドを使用します。さらに、操作を行う前にトランザクション コンポーネントを割り当てる必要があります。

于 2015-06-17T02:02:27.273 に答える