シングルレコードにはヨハンの答えが良いです。 SQLデータベース(Oracle、MSSql、MySql、Firebirdなど)を使用して作業している場合、複数のレコードに使用できる追加のアプローチがあります。例
TForm1 = class(TForm)
ADOConnection: TADOConnection;
…
// start the transaction
ADOConnection.BeginTrans;
…
// create records and post them
…
// rollback removes the records posted
// since the transaction was started
ADOConnection.RollbackTrans;
… or …
// commit completes saving the records posted
// since the transaction was started
ADOConnection.CommitTrans;
あなたが明示的にトランザクションを開始していないかのようにADOを使用して、1が自動的に起動し、レコードがデータベースに掲載されているよう努めています。
Françoisの回答はトランザクションと似ていますが、ClientDatasetsでのみ動作します。
これは、どのTDataSetの子孫にも当てはまります。データがまだ投稿されていない限り、レコードを元の状態に戻すために.cancelを呼び出すことができます。 SavePointの場合は – ESG