レコードの削除
データの変更 への移動
Delete メソッドを使用して、アクティブなデータセットの中の現在のレコードを削除することができます。Delete メソッドが呼び出されると、以下の処理が行われます。
- データセットは BeforeDelete イベントを受け取ります。
- データセットは現在のレコードの削除を試みます。
- データセットは dsBrowse 状態に戻ります。
- データセットは AfterDelete イベントを受け取ります。
削除を中止すると BeforeDelete イベント ハンドラで判断した場合は、グローバルの Abort 手続きを呼び出すことができます。
procedure TForm1.TableBeforeDelete (Dataset: TDataset) begin if MessageDlg('Delete This Record?', mtConfirmation, mbYesNoCancel, 0) <> mrYes then Abort; end;
void __fastcall TForm1::TableBeforeDelete (TDataSet *Dataset) { if (MessageBox(0, "Delete This Record?", "CONFIRM", MB_YESNO) != IDYES) Abort(); }
Delete が失敗すると、OnDeleteError イベントが発生します。OnDeleteError イベント ハンドラで問題を修正できなければ、データセットは dsEdit 状態のままになります。Delete が成功すると、データセットは dsBrowse 状態に戻り、削除されたレコードの後のレコードが現在のレコードになります。
更新をキャッシュしている場合、削除対象のレコードは、ApplyUpdates を呼び出すまで、背後にあるデータベース テーブルから削除されません。
フォーム上にナビゲータ コンポーネントを置いている場合、ユーザーはナビゲータの削除ボタンをクリックして現在のレコードを削除することができます。コードで現在のレコードを削除するには、明示的に Delete を呼び出さなければなりません。