データの登録
データの変更 への移動
レコードの編集が済んだら、Post メソッドを呼び出して変更を書き出さなければなりません。Post メソッドは、データセットの状態や、更新をキャッシュしているかどうかに応じて、異なる動作をします。
- 更新をキャッシュしておらず、データセットの状態が dsEdit か dsInsert であれば、Post は現在のレコードをデータベースに書き込み、データセットの状態を dsBrowse に戻します。
- 更新をキャッシュしていて、データセットの状態が dsEdit または dsInsert であれば、Post は現在のレコードを内部キャッシュに書き込み、データセットの状態を dsBrowse に戻します。編集内容は、ApplyUpdates を呼び出すまでデータベースに書き込まれません。
- データセットの状態が dsSetKey であれば、Post はデータセットの状態を dsBrowse に戻します。
データセットの元の状態に関係なく、Post は、現在の変更を書き込む前と後に、BeforePost イベントと AfterPost イベントを発生させます。これらのイベントを使用して、ユーザー インターフェイスを更新したり、Abort 手続きを呼び出してデータセットが更新を登録できないようにすることができます。Post の呼び出しが失敗すると、データセットは OnPostError イベントを受け取るので、そこでユーザーに問題を知らせたり、修正を試みることができます。
登録は、明示的に実行することも、別の手続きの一部として暗黙的に実行することもできます。アプリケーションが現在のレコードから他に移動すると、Post が暗黙的に呼び出されます。First、Next、Prior、Last の各メソッドを呼び出すと、テーブルが dsEdit モードまたは dsInsert モードであれば、Post が実行されます。Append メソッドおよび Insert メソッドでも、保留中のデータがあれば暗黙的に登録されます。
警告: Close メソッドでは、Post が暗黙的に呼び出されることはありません。保留中の編集を明示的に登録するには、Data.DB.TDataSet.BeforeClose イベントを使用してください。