新規レコードの追加

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

データの変更 への移動


データセットは、アプリケーションが新しいレコードを追加する前に、dsInsert モードになっていなければなりません。コードでは、Insert または Append メソッドを使用して、データセットを dsInsert モードにすることができます(データセットの読み取り専用 CanModify プロパティが True の場合)。

データセットが dsInsert モードへ移ると、まず BeforeInsert イベントを受信します。挿入モードへの遷移が正常に終わると、データセットはまず OnNewRecord イベントを、次に AfterInsert イベントを受け取ります。これらのイベントは、たとえば、初期値を新たに挿入されたレコードに提供するために、使用できます:

 procedure TForm1.OrdersTableNewRecord(DataSet: TDataSet);
 begin
   DataSet.FieldByName('OrderDate').AsDateTime := Date;
 end;
 void __fastcall TForm1::OrdersTableNewRecord(TDataSet *DataSet)
 {
   DataSet->FieldByName("OrderDate")->AsDateTime = Date();
 }

アプリケーションのフォーム上では、データ対応グリッドおよびナビゲータのコントロールが、データセットを dsInsert 状態に設定できますが、それは次の場合です:

  • コントロールの ReadOnly プロパティが False(デフォルト)、かつ
  • データセットの CanModifyTrue

メモ: データセットが dsInsert 状態であっても、アプリケーションのユーザーが適切な SQL アクセス権限を持っていない場合、SQL ベースのデータベースに対するレコードの追加は成功しません。

データセットが dsInsert モードになったら、ユーザーまたはアプリケーションは、その新しいレコードに関連づけられたフィールドに、値を入力することができます。グリッドおよびナビゲータのコントロールを除き、ユーザーには、InsertAppend に違いは見られません。Insert への呼び出し時、グリッドにおいて、現在のレコードの上に空の行が現れます。Append への呼び出し時、グリッドはデータセットの最後のレコードにスクロールされ、空の行がグリッドの一番下にに現れ、Next および Last ボタンが、データセットに関連づけられているナビゲータ コンポーネント上では、淡色表示になります。

挿入が有効になるデータ対応コントロールは、ユーザーが現在のレコードを変更するようななんらかのアクション(グリッド内で別のレコードに移動するなど)を実行すると、Post を自動的に呼び出します。そうでなければ、コードで Post を呼び出さなければなりません。

Post はデータベースに新しいレコードを書き込むか、更新をキャッシュしている場合には、Post はメモリ内のキャッシュにレコードを書き込みます。キャッシュされた挿入を書き込み、データベースへ追加するには、データセットの ApplyUpdates メソッドを呼び出します。

レコードを挿入する

Insert は、新しい空のレコードを、現在のレコードの前に開き、その空のレコードを現在のレコードにして、レコードのフィールド値が、ユーザーまたはアプリケーション コードによってそこに入力されるようにします。

アプリケーションが Post(または、キャッシュされた更新を使用している場合には ApplyUpdates)を呼び出すと、新たに挿入されたレコードが次の 3 つのいずれかの方法で、データベースに書き込まれます。

  • インデックス付きのテーブル Paradox と dBASE の場合、レコードは、そのインデックスに基づいた位置でデータセットに挿入されます。
  • インデックスなしのテーブル Paradox と dBASE の場合、レコードは現在の位置でデータセットに挿入されます。
  • SQL データベースの場合、挿入の物理的な位置は、実装固有です。テーブルがインデックス付きだったら、新しいレコードの情報でインデックスは更新されます。

レコードを追加する

Append は、新しい空のレコードを、データセットの最後に開き、その空のレコードを現在のレコードにして、レコードのフィールド値が、ユーザーまたはアプリケーション コードによってそこに入力されるようにします。

アプリケーションが Post(または、キャッシュされた更新を使用している場合には ApplyUpdates)を呼び出すと、新たに追加されたレコードが次の 3 つのいずれかの方法で、データベースに書き込まれます。

  • インデックス付きのテーブル Paradox と dBASE の場合、レコードは、そのインデックスに基づいた位置でデータセットに挿入されます。
  • インデックスなしのテーブル Paradox と dBASE の場合、レコードはデータセットの最後に追加されます。
  • SQL データベースの場合、追加の物理的な位置は、実装固有です。 テーブルがインデックス付きだったら、新しいレコードの情報でインデックスは更新されます。

関連項目

コード サンプル