データセット データの変更(FireDAC)

提供: RAD Studio
移動先: 案内検索

データの編集(FireDAC) への移動

FireDAC データセット(TFDQueryTFDTableTFDStoredProcTFDMemTable などを含む)は、TDataSet の標準メソッドを使った、レコードの挿入、編集、削除をサポートしています。デフォルトでは、編集と更新のポストが、FireDAC データセットで有効になっています。

編集の制御

UpdateOptions.ReadOnlyFalse の時に、データセットの編集が有効になります。次の操作が有効です:

FDQuery1.Append;
FDQuery1.FieldsByName('id').AsInteger := 100;
FDQuery1.FieldsByName('name').AsString := 'Audi A6';
FDQuery1.Post;
FDQuery1.Edit;
FDQuery1.FieldsByName('name').AsString := 'Audi A6 Avant';
FDQuery1.Post;
FDQuery1.Delete;

Post の呼び出し時に "フィールド値が必要です" というメッセージが出力されないようにするには、UpdateOptions.CheckRequiredFalse に設定します(デフォルトは True)。

更新のポスト

更新をデータベースにポストするために、FireDAC は、元の SQL クエリが以下のルールに従っている場合、自動的に更新 SQL コマンドを生成します。

  • コマンドは SELECT である
  • FROM 句の最初のテーブルには、主キー(PK)が保持されている
  • PK フィールドが、SELECT リスト内にある
  • SELECT 文に、DISTINCT、GROUP BY、UNION などの句が含まれていない。これは、「必須」というより、論理上必然のルールです。

また、一意に識別子フィールドなど、正しいメタデータも提供されている必要があります。 TFDQuery に対して更新の自動ポストを有効にする最も簡単な方法は、UpdateOptions.RequestLiveTrue に設定することです(デフォルトは、True)。クエリが更新可能かどうかを自動的にチェックできる可能性はないので、プログラマ自身でそれを判断する必要があります。

クエリが上記のルールに従っていない場合、または、ポストをアプリケーションでオーバーライドする必要がある場合は、TFDUpdateSQL コンポーネントまたは OnUpdateRecord イベント ハンドラを使用できます。

更新は、Post メソッドまたは Delete メソッドの呼び出しで直ちにデータベースにポストすることもできますし、キャッシュして後でポストすることもできます。遅延更新のポストは、オフライン接続と共に使用することができます。

データセットを空にする

レコードの削除を記録して DB に削除をポストすることなく、効果的な方法でデータセットを空にすることができます。ほとんどの場合、これはインメモリ データセットに役に立ちます。データセットを空にするには、以下のいずれかのメソッドを使用します:

  • EmptyDataSet - すべてのデータセット レコードを削除します。
  • EmptyView - フィルタや範囲などの適用後、アクセス可能なレコードのみ削除します。

関連項目

サンプル