未処理のバッチ更新をキャンセルします。
recordset.CancelBatch AffectRecords
CancelBatch メソッドの構文には、次の指定項目があります。
指定項目 |
説明 |
recordset |
開いている Recordset オブジェクトを表すオブジェクト変数です。 |
AffectRecords |
(省略可能) CancelBatch メソッドにより更新がキャンセルされるレコード数を決める AffectEnum 値です。次の定数のうちの 1 つを指定できます。 |
adAffectCurrent、1 セ カレント レコードの未処理の更新だけをキャンセルします。 adAffectGroup、2 セ 現在の Filter プロパティの設定を満たすレコードの未処理の更新だけをキャンセルします。このオプションを使用するには、有効な定義済み定数のうちの 1 つを Filter プロパティに設定する必要があります。 adAffectAll、3 (デフォルト) セ 現在の Filter プロパティの設定により隠されているものも含む、Recordset オブジェクト内のすべてのレコードの未処理の更新をキャンセルします。 |
CancelBatch メソッドは、バッチ更新モードにおいて、レコードセット内の未処理の更新をキャンセルするために使います。レコードセットが即時更新モードの場合に CancelBatch を呼び出すと、エラーになります。
カレント レコードの編集中、または新しいレコードの追加中に CancelBatch を呼び出した場合、ADO は先に CancelUpdate メソッドを呼び出してキャッシュされている変更をすべてキャンセルしてから、レコードセット内のすべての未処理の変更をキャンセルします。
CancelBatch メソッドを呼び出した後にカレント レコードの内容が未定義になることがあります。特に、新しいレコードの追加中にこの現象が起こることがあります。この理由から、CancelBatch メソッドを呼び出した後に、たとえば MoveFirst メソッドを呼び出すなどして、カレント レコードの位置をレコードセット内の既知の位置に設定したほうが賢明です。
元になっているデータと競合するために未処理の更新をキャンセルすることができない場合 (たとえば別のユーザーが既にレコードを削除している場合など)、プロバイダは Errors コレクションに警告を返しますが、プログラムの実行を中断することはありません。ランタイム エラーは、要求されたレコードすべてが競合を起こした場合にだけ起こります。競合を起こしたレコードを探すには、Filter プロパティ (adFilterAffectedRecords) および Status プロパティを使います。