NextRecordset メソッド (ADO)

一連のコマンドを進めて、現在の レコードセット オブジェクトをクリアし、次の レコードセット を返します。

構文

  
Set recordset2 = recordset1.NextRecordset(RecordsAffected )  

戻り値

レコードセット オブジェクトを返します。 構文モデルでは、 recordset1Recordset2 を同じ レコードセット オブジェクトにすることも、個別のオブジェクトを使用することもできます。 個別の レコードセット オブジェクトを使用する場合は、 NextRecordset が呼び出された後に元の レコードセット(recordset1) の ActiveConnection プロパティをリセットすると、エラーが発生します。

パラメーター

RecordsAffected
省略可能。 プロバイダーが、現在の操作によって影響を受けたレコードの数を返す Long 型 の変数。

注意

このパラメーターは、操作によって影響を受けたレコードの数のみを返します。レコード セット の生成に使用される select ステートメントからは、レコードの数は返されません。

解説

NextRecordset メソッドを使用して、複合コマンドステートメントまたは複数の結果を返すストアドプロシージャで、次のコマンドの結果を返します。 複合コマンドステートメントに基づいて レコードセット オブジェクトを開く場合 (例: "SELECT * FROM table1;"SELECT * FROM table2 ")コマンドExecuteメソッド、または レコードセットOpenメソッドを使用して、ADO は最初のコマンドのみを実行し、結果を レコードセット に返します。 ステートメント内の後続のコマンドの結果にアクセスするには、 NextRecordset メソッドを呼び出します。

追加の結果が存在し、複合ステートメントを含む レコードセット がプロセスの境界を越えて切断またはマーシャリングされていない限り、 NextRecordset メソッドは レコードセット オブジェクトを返し続けます。 行を返すコマンドが正常に実行されても、レコードが返されない場合、返された レコードセット オブジェクトは開かれますが、空になります。 このケースをテストするには、 BOF プロパティと EOF プロパティが両方とも True であることを確認します。 行を返さないコマンドが正常に実行されると、返された レコードセット オブジェクトは閉じられます。このオブジェクトは、レコードセットStateプロパティをテストすることで確認できます。 これ以上結果がない場合、 レコードセットNothing に設定されます。

NextRecordset メソッドは、接続されていない レコードセット オブジェクトでは使用できません。この場合、 ActiveConnectionNothing (Microsoft Visual Basic) または NULL (他の言語) に設定されています。

即時更新モードで編集が進行中の場合、 NextRecordset メソッドを呼び出すとエラーが発生します。 Update または CancelUpdate メソッドを最初に呼び出します。

Parametersコレクションに入力するか、元の Open または Execute 呼び出しを使用して配列を渡すことによって、複合ステートメント内の複数のコマンドのパラメーターを渡すには、コマンドシリーズの各コマンドと同じ順序で、コレクションまたは配列内のパラメーターを指定する必要があります。 出力パラメーターの値を読み取る前に、すべての結果の読み取りを完了する必要があります。

OLE DB プロバイダーは、複合ステートメント内の各コマンドが実行されるタイミングを決定します。 たとえば、 SQL Server の Microsoft OLE DB Providerは、複合ステートメントの受信時にバッチ内のすべてのコマンドを実行します。 NextRecordset を呼び出すと、結果として得られる レコードセット が返されます。

ただし、他のプロバイダーは、NextRecordset が呼び出された後にのみ、ステートメント内で次のコマンドを実行できます。 これらのプロバイダーでは、コマンドステートメント全体をステップ実行する前に レコードセット オブジェクトを明示的に閉じても、残りのコマンドは実行されません。

適用対象

Recordset オブジェクト (ADO)

参照

NextRecordset メソッドの例 (VB)
NextRecordset メソッドの例 (VC++)