レコードの編集

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

データの変更 への移動


アプリケーションでレコードを変更するには、データセットが dsEdit モードになっていなければなりません。データセットの読み取り専用プロパティ CanModifyTrue であれば、コードで Edit メソッドを使用するとデータセットが dsEdit モードになります。

dsEdit モードへの移行時に、データセットはまず BeforeEdit イベントを受け取ります。編集モードへの移行が問題なく完了したら、データセットは AfterEdit イベントを受け取ります。通常、これらのイベントは、データセットの現在の状態を示すようユーザー インターフェイスを更新するために使われます。何らかの理由でデータセットを編集モードにできない場合には、OnEditError イベントが発生するので、そこでユーザーに問題を知らせるか、データセットを編集モードにできない状況の是正を試みることができます。

アプリケーションのフォームでは、以下の条件がすべて満たされると、一部のデータベース対応コントロールでデータセットを自動的に dsEdit 状態にすることができます。

  • コントロールの ReadOnly プロパティが False(デフォルト)である
  • コントロールのデータ ソースの AutoEdit プロパティが True である
  • データセットの CanModifyTrue である

メモ: データセットが dsEdit 状態であっても、アプリケーションのユーザーが適切な SQL アクセス権限を持っていなければ、SQL ベースのデータベースではレコードの編集が成功しない場合があります。

データセットが dsEdit モードになると、ユーザーは、フォーム上のデータベース対応コントロールに表示された現在のレコードのフィールド値を変更することができます。編集が有効になったデータベース対応コントロールは、現在のレコードを変更するアクションをユーザーが実行すると(グリッド内の別のレコードに移動するなど)、自動的に Post を呼び出します。

フォーム上にナビゲータ コンポーネントを置いている場合、ユーザーはナビゲータのキャンセル ボタンをクリックして、編集をキャンセルすることができます。編集をキャンセルすると、データセットは dsBrowse 状態に戻ります。

コードでは、該当するメソッドを呼び出して、編集を書き込むかキャンセルしなければなりません。Post を呼び出すと変更が書き込まれます。Cancel を呼び出すと変更がキャンセルされます。コードでは、多くの場合、Edit と Post が対になって使われます。以下に例を示します。

 with CustTable do
 begin
   Edit;
   FieldValues['CustNo'] := 1234;
   Post;
 end;
 Table1->Edit();
 Table1->FieldValues["CustNo"] = 1234;
 Table1->Post();

この例のコードの最初の行では、データセットを dsEdit モードにしています。コードの次の行では、現在のレコードの CustNo フィールドに数値 1234 を代入しています。そして最後の行では、編集したレコードを書き込んで(ポストして)います。更新をキャッシュしているのでなければ、ポストを行うと、変更内容がデータベースへ書き戻されます。更新をキャッシュしている場合には、変更内容は一時バッファに書き込まれ、データセットの ApplyUpdates メソッドが呼び出されるまでそこにとどまります。

関連項目

コード例