更新を適用する

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

レコードの更新 への移動


クライアント データセットのデータのローカル コピーに対する変更は、クライアント アプリケーションが ApplyUpdates メソッドを呼び出して初めて、データベース サーバー(または XML ドキュメント)に送信されます。 ApplyUpdates は、変更を変更ログに記録してから、(Delta と呼ばれる)データ パケットとしてプロバイダに送信します。 (ほとんどのクライアント データセットでは、プロバイダはクライアント データセット内に組み込まれていることに注意してください。)


ApplyUpdatesMaxErrors という 1 つのパラメータを取ります。このパラメータは、最大いくつのエラーが発生するとプロバイダが更新プロセスを中止するかを示します。 MaxErrors0 の場合、更新エラーが 1 つ発生した時点で更新プロセス全体が終了します。 変更はデータベースに書き込まれず、クライアント データセットの変更ログは元の状態のままになります。 MaxErrors-1 の場合、エラーはいくつでも許容され、変更ログには正常に適用できなかったレコードがすべて記録されます。 MaxErrors が正の値であり、MaxErrors で許容されたよりも多くのエラーが発生した場合には、更新はすべて中止されます。 発生したエラー数が MaxErrors で指定された数よりも少なければ、正常に適用されたレコードはすべて、クライアント データセットの変更ログから自動的に消去されます。


ApplyUpdates は、実際に発生したエラーの数(必ず MaxErrors + 1 以下)を返します。 この戻り値は、データベースに書き込めなかったレコードの数を示します。

クライアント データセットの ApplyUpdates メソッドでは、以下の処理を行います。

  • プロバイダの ApplyUpdates メソッドを間接的に呼び出します。 プロバイダの ApplyUpdates メソッドは、データベース、ソース データセット、または XML ドキュメントに更新内容を書き込み、発生したエラーの修正を試みます。 エラー状態が生じて適用できなかったレコードは、クライアント データセットに送り返されます。
  • その後、クライアント データセットの ApplyUpdates メソッドは、Reconcile メソッドを呼び出して、問題のあるそれらのレコードの調停を試みます。 Reconcile は、OnReconcileError イベント ハンドラを呼び出す、エラー処理ルーチンです。 開発者は、OnReconcileError イベント ハンドラにエラーを修正するコードを記述する必要があります。 OnReconcileError の詳細は、「更新エラーを調停する」を参照してください。
  • 最後に Reconcile は、正常に適用された変更を変更ログから削除し、新しく更新されたレコードに合わせて Data を更新します。 Reconcile が完了すると、ApplyUpdates は発生したエラーの数を報告します。

警告: ときには更新をどう適用すればよいかをプロバイダが判断できないことがあります(ストアド プロシージャや複数テーブルの結合の更新を適用する場合など)。 クライアント データセットおよびプロバイダ コンポーネントはイベントを発生させて、開発者にその状況の処理を任せます。 詳細は、「更新適用時に介入する」を参照してください。

ヒント: プロバイダがステートレスなアプリケーション サーバー上にある場合、更新を適用する前または後に通信を行って、永続状態の情報をやり取りすることができます。 TClientDataSet は、更新が送信される前に BeforeApplyUpdates イベントを受け取ります。それにより、永続状態の情報をサーバーに送信することができます。 更新を適用した後(ただし調停処理の前)には、TClientDataSetAfterApplyUpdates イベントを受け取ります。そこで、アプリケーション サーバーから返された永続状態の情報に対処することができます。

関連項目