Recordset オブジェクトのカレント レコードの位置を移動します。
recordset.Move NumRecords, Start
Move メソッドの構文には、次の指定項目があります。
指定項目 |
説明 |
recordset |
カレント レコードの位置を移動する Recordset オブジェクトを表すオブジェクト変数です。 |
NumRecords |
カレント レコードの位置を移動するレコード数を指定する符号付き長整数型 (Long) の式です。 |
Start |
(省略可能) 評価結果がブックマークとなる文字列型 (String) またはバリアント型 (Variant) です。 |
Move メソッドは、すべての Recordset オブジェクトでサポートされています。
引数 NumRecords が 0 より大きい場合、カレント レコードの位置は順方向に (レコードセットの終端に向かって) 移動します。NumRecords が 0 より小さい場合、カレント レコードの位置は逆方向に (レコードセットの先頭に向かって) 移動します。
Move メソッド呼び出しでカレント レコードの位置を先頭のレコードよりも前に移動しようとした場合、ADO はカレント レコードをレコードセットの先頭のレコードよりも前の位置に設定します (BOF が True になります)。BOF プロパティが既に True であるときに逆方向に移動しようとすると、エラーになります。
Move メソッド呼び出しでカレント レコードの位置を終端のレコードよりも後ろに移動しようとした場合、ADO はカレント レコードをレコードセットの終端のレコードよりも後ろの位置に設定します (EOF が True になります)。BOF プロパティが既に True であるときに順方向に移動しようとすると、エラーになります。
空の Recordset オブジェクトから Move メソッドを呼び出そうとした場合はエラーになります。
引数 Start を渡すと、Recordset オブジェクトはブックマークをサポートしていると仮定され、このブックマークを持つレコードから移動が行われます。引数を指定しない場合は、カレント レコードから移動が行われます。
CacheSize プロパティを使ってプロバイダからレコードをローカルにキャッシュしている場合、現在のキャッシュ レコード集合の範囲外の位置にカレント レコードを移動するような NumRecords を渡すと、ADO は移動先レコードから始まる新しいレコード集合を強制的に取得します。新しく取得される集合のサイズは CacheSize プロパティによって決まり、移動先のレコードは取得される先頭のレコードとなります。また、ローカル キャッシュを使用していて引数 Start を渡した場合にも、ADO は新しいレコードの集合を取得します。
Recordset オブジェクトが前方スクロールの場合でも、移動先が現在のキャッシュ レコード集合の範囲内であれば、0 より小さい NumRecords の値を渡すことができます。一方、Move メソッドを呼び出してカレント レコードの位置を 1 番目のキャッシュ レコードよりも前のレコードに移動しようとすると、エラーになります。したがって、順逆両方向のスクロールをサポートするレコード キャッシュを使えば、プロバイダが前方スクロールだけしかサポートしていない場合にも対処できます。ただし、キャッシュされたレコードはメモリにロードされるため、必要以上にレコードをキャッシュしないようにしてください。また、この方法を使って前方スクロールの Recordset オブジェクトを逆方向にも移動できるようにした場合でも、前方スクロールの Recordset オブジェクトで MovePrevious メソッドを呼び出すと、エラーになります。