キャッシュ アップデートの使用 - 概要
クライアント データセットを使用した更新情報のキャッシュ への移動
キャッシュ アップデートを使用するには、アプリケーションで次の順に処理を行う必要があります。
編集対象のデータを指定します。方法は、使用しているクライアント データセットの種類によって異なります。
- TClientDataSet を使用している場合は、編集したいデータを表すプロバイダ コンポーネントを指定します。
- 特定のデータ アクセス メカニズムと関連付けられたクライアント データセットを使用している場合は、次のようにする必要があります。
- DBConnection プロパティを適切な接続コンポーネントに設定して、データベース サーバーを特定します。
- CommandText プロパティと CommandType プロパティを指定して、必要なデータを示します。CommandType は、CommandText が、実行する SQL 文、ストアド プロシージャ名、テーブル名のいずれであるかを示します。CommandText がクエリまたはストアド プロシージャの場合には、Params プロパティに入力パラメータを指定します。
- 必要であれば、データ パケットに影響するオプションを設定します。
データを表示して編集します。新規レコードの挿入や、既存レコードの削除も可能です。各レコードの元のコピーと、それに対する編集内容は、どちらもメモリ内に格納されます。この処理については、「データの編集」で説明しています。
必要であれば追加のレコードを取得します。デフォルトでは、クライアント データセットはすべてのレコードを取得してメモリ内に格納します。データセットのレコード数が多い場合や、サイズの大きい BLOB フィールドを持つレコードが含まれている場合には、これを変更して、クライアント データセットが表示できるだけのレコードを取得し、必要になってから再度取得するようにできます。レコード取得処理の制御方法の詳細は、「ソース データセットまたはドキュメントからのデータの要求」を参照してください。
必要であればレコードを最新状態に更新します。時間がたつうちに、他のユーザーがデータベース サーバー上のデータを変更する可能性があります。その結果、クライアント データセットのデータがサーバー上のデータとどんどん異なるものになっていき、更新を適用したときにエラーが発生する可能性が高くなります。この問題を緩和するために、まだ編集していないレコードを最新状態に更新することができます。詳細は、「レコードの最新状態への更新」を参照してください。
ローカルにキャッシュしたレコードをデータベースに適用します。あるいは、更新をキャンセルします。データベースに書き込むレコードごとに BeforeUpdateRecord イベントが発生します。データベースへの個々のレコードの書き込み時にエラーが発生すると、OnUpdateError イベントが発生するため、可能であればアプリケーションでエラーを修正して、更新を続けることができます。更新がすべて終了すると、適用が成功した更新はすべて、ローカルのキャッシュから削除されます。データベースへの更新の適用の詳細は、「レコードの更新」を参照してください。
更新を適用するかわりに、アプリケーション側で更新を取り消し、変更内容をデータベースに書き込まずに変更ログを空にすることができます。更新は、CancelUpdates メソッドを呼び出してキャンセルすることができます。そうすると、キャッシュ内のすべての削除済みレコードの削除が取り消され、変更済みレコードは元の値に戻され、新たに挿入されたレコードは単に消されます。