UpdateBatch メソッド

       

保留中のバッチ更新をすべてディスクに書き込みます。

構文

recordset.UpdateBatch AffectRecords

パラメータ

AffectRecords   省略可能です。UpdateBatch メソッドで操作するレコード数を示す AffectEnum 値を指定します。

解説

バッチ更新モードで Recordset オブジェクトを編集しているときに UpdateBatch を使用すると、Recordset オブジェクトに加えられたすべての変更が、基になるデータベースに転送されます。

Recordset オブジェクトがバッチ更新をサポートしている場合、UpdateBatch メソッドを呼び出すまで、1 つまたは複数のレコードに対する複数の変更をローカルにキャッシュできます。カレント レコードの編集中または新規レコードの追加中に UpdateBatch メソッドを呼び出すと、変更を一括してプロバイダに転送する前に、Update が自動的に呼び出され、カレント レコードに対する保留中の変更がすべて保存されます。バッチ更新は、キーセットまたは静的カーソルでのみ使用します。

注意   フィルタ操作で該当レコードが存在しない場合など、現在の Recordset で表示するレコードが存在しない場合に、このパラメータの値に adAffectGroup を指定すると、エラーが発生します。

基になるデータとの競合 (たとえば、ほかのユーザーによってレコードが削除されている場合など) が原因で、複数またはすべてのレコードに対する変更の送信に失敗した場合は、プロバイダから Errors コレクションに警告が返され、実行時エラーが発生します。競合しているレコードを特定するには、Filter プロパティ (adFilterAffectedRecords) と Status プロパティを使用します。

保留中のバッチ更新をキャンセルするには、CancelBatch メソッドを使用します。

ダイナミック プロパティUnique TableUpdate Resync が設定されており、Recordset が、複数のテーブルに対する JOIN 操作の実行結果である場合は、UpdateBatch メソッドの実行後に、Update Resync プロパティの設定値に基づいて Resync メソッドが暗黙的に実行されます。

データ ソースで行われる個々のバッチ更新の順序は、ローカルの Recordset で実行した順序と同じである必要はありません。更新順序はプロバイダによって決まります。挿入または更新時での外部キーによる制約など、相互に関連する更新をコーディングするときは、このことを考慮に入れてください。