NextRecordset メソッド (ADO)
現在の Recordset オブジェクトをクリアし、一連のコマンドを実行して次の Recordset を返します。
構文
Set recordset2 = recordset1.NextRecordset(RecordsAffected )
戻り値
Recordset オブジェクトを返します。 構文モデルでは、recordset1 と recordset2 を同じ Recordset オブジェクトにすることも、個別のオブジェクトを使用することもできます。 個別の Recordset オブジェクトを使用する場合、NextRecordset が呼び出された後に元の Recordset (recordset1) で ActiveConnection プロパティをリセットすると、エラーが生成されます。
パラメーター
RecordsAffected
省略可能。 現在の操作で影響を受けたレコードの数をプロバイダーによって返される Long 変数。
注意
このパラメーターでは、操作の影響を受けたレコードの数のみが返されます。Recordset の生成に使用された select ステートメントからのレコードの数は返されません。
注釈
NextRecordset メソッドを使用すると、複合コマンド ステートメントの次のコマンドまたは複数の結果を返すストアド プロシージャが返されます。 Command の Execute メソッドまたは、Recordset の Open メソッドを使用して、複合コマンド ステートメント (たとえば、"SELECT * FROM table1;SELECT * FROM table2") に基づく Recordset オブジェクトを開くと 、ADO では最初のコマンドのみが実行され、結果は "レコードセット" に返されます。 ステートメント内の後続のコマンドの結果にアクセスするには、NextRecordset メソッドを呼び出します。
追加の結果があり、複合ステートメントを含む Recordset がプロセス境界間で切断またはマーシャリングされない限り、NextRecordset メソッドでは Recordset オブジェクトが返され続けます。 行を返すコマンドが正常に実行されてもレコードが返されない場合、返される Recordset オブジェクトは開きますが、空です。 BOF および EOF プロパティの両方が True であることを確認して、このケースをテストします。 行を返す以外のコマンドが正常に実行された場合、返された Recordset オブジェクトは閉じられ、Recordset の State プロパティをテストして確認できます。 他に結果がない場合、"レコードセット" は Nothing に設定されます。
NextRecordset メソッドは、ActiveConnection が Nothing (Microsoft Visual Basic の場合) または NULL (他の言語) に設定されている、切断された Recordset オブジェクトでは使用できません。
即時更新モードの間に編集が進行中の場合、NextRecordset メソッドを呼び出すとエラーが生成されます。最初に Update または CancelUpdate メソッドを呼び出してください。
Parameters コレクションを入力するか、元の Open または Execute 呼び出しで配列を渡すことで、複合ステートメント内の複数のコマンドのパラメーターを渡すには、パラメーターは、コレクションまたは配列内でコマンド シリーズのそれぞれのコマンドと同じ順序である必要があります。 出力パラメーター値を読み取る前に、すべての結果の読み取りを完了する必要があります。
OLE DB プロバイダーでは、複合ステートメント内の各コマンドが実行されるタイミングを決定します。 たとえば、Microsoft OLE DB Provider for SQL Server では、複合ステートメントを受け取ると、バッチ内のすべてのコマンドが実行されます。 結果の Recordset は、NextRecordset を呼び出すと単純に返されます。
ただし、他のプロバイダーでは、NextRecordset が呼び出された後にのみステートメントで次のコマンドが実行される場合もあります。 これらのプロバイダーの場合、コマンド ステートメント全体をステップ実行する前に Recordset オブジェクトを明示的に閉じると、ADO で残りのコマンドが実行されることはありません。