開いている Recordset オブジェクトのカレント レコードを削除します。または、コレクションからオブジェクトを削除します。
Recordset オブジェクトの場合:
recordset.Delete AffectRecords
Recordset オブジェクトの Delete メソッドの構文には、次の指定項目があります。
指定項目 |
説明 |
recordset |
開いている Recordset オブジェクトを表すオブジェクト変数です。 |
AffectRecords |
(省略可能) Delete メソッドにより削除されるレコード数を決める AffectEnum 値です。次の定数のうちの 1 つを指定できます。 |
adAffectCurrent、1 (デフォルト) セ カレント レコードだけを削除します。 adAffectGroup、2 セ 現在の Filter プロパティの設定を満たすレコードを削除します。このオプションを使用するには、有効な定義済み定数のうちの 1 つを Filter プロパティに設定する必要があります。 |
コレクションの場合:
collection Delete Index
プレースホルダ collection は、削除するオブジェクトのあるコレクションを表します。引数 Index は、削除するオブジェクトの名前を表す文字列型 (String) です。
Delete メソッドは、Recordset オブジェクト内のカレント レコードやレコードの集合を削除したり、あるいはコレクション内のオブジェクトの 1 つを削除したりするために使います。
Delete メソッドを実行すると、Recordset オブジェクト内のカレント レコードまたはレコードの集合に、削除されたことを示すマークが付けられます。Recordset オブジェクトでレコードの削除が禁止されている場合は、エラーになります。即時更新モードの場合は、データベース内で直ちに削除処理が行われます。即時更新モードでない場合には、キャッシュから削除されたことを示すマークがレコードに付けられ、実際の削除処理は UpdateBatch メソッドを呼び出したときに行われます。削除されたレコードを調べるには Filter プロパティを使います。
削除したレコードのフィールド値を取得しようとするとエラーになります。カレント レコードは、削除した後に別のレコードに移動しないかぎり、カレント レコードのままになっています。削除したレコードから別のレコードに移動してしまうと、再びそのレコードにアクセスすることはできなくなります。
トランザクション内で削除処理がネストしている場合、RollbackTrans メソッドを使うと、削除されたレコードを復元することができます。バッチ更新モードの場合は、CancelBatch メソッドを使って、1 つまたは複数の未処理の削除をキャンセルすることができます。
元になっているデータと競合するためにレコードの削除ができない場合 (たとえば別のユーザーが既にレコードを削除している場合など)、プロバイダは Errors コレクションに警告を返しますが、プログラムの実行を中断することはありません。ランタイム エラーは、要求されたレコードすべてが競合を起こした場合にだけ起こります。競合を起こしたレコードを探すには、Filter プロパティ (adFilterAffectedRecords) および Status プロパティを使います。
コレクションで Delete メソッドを使うと、コレクション内のオブジェクトの 1 つを削除できます。このメソッドは、Command オブジェクトの Parameters コレクションでのみ有効です。Delete メソッドを呼び出すときは、Parameter オブジェクトの Name プロパティを指定する必要があります。オブジェクト変数は有効な引数として指定できません。