次の方法で共有


NextRecordset メソッド (ADO)

適用先: Access 2013、Office 2013

現在の Recordset オブジェクトをクリアし、一連のコマンド操作を実行して次の Recordset を返します。

構文

recordset2 = recordset1 を設定します。NextRecordset(RecordsAffected )

戻り値

Recordset オブジェクトを返します。 構文モデルの recordset1recordset2 には、同じ Recordset オブジェクト、または別のオブジェクトを指定できます。 別の Recordset オブジェクトを使用する場合、NextRecordset の呼び出しの後に元の Recordset (recordset1) の ActiveConnection プロパティを再設定すると、エラーが発生します。

パラメーター

パラメーター 説明
RecordsAffected 省略可能です。 プロバイダーが現在の操作の影響を受けたレコードの数を返す Long 変数。

注:

このパラメーターは、操作の影響を受けたレコード数のみを返します。Recordset を作成するために使用された Select ステートメントからのレコード数を返すことはありません。

注釈

NextRecordset メソッドでは、複合コマンド ステートメントの次のコマンドの結果、または複数の結果を返すストアド プロシージャの結果を返します。 Command オブジェクトで Execute メソッドを使用するか、または Recordset オブジェクトで Open メソッドを使用して、"SELECT * FROM table1;SELECT * FROM table2" などの複合コマンドに基づく Recordset オブジェクトを開いた場合、最初のコマンドのみが recordset に返されます。 ステートメントの次のコマンドの結果にアクセスするには、 NextRecordset メソッドを呼び出します。

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

切断された Recordset オブジェクトでは、 ActiveConnectionNothing (Microsoft Visual Basic) または NULL (その他の言語) に設定されているため、 NextRecordset メソッドは使用できません。

即時更新モードで編集を行っているときに NextRecordset メソッドを呼び出すと、エラーが発生します。 Update メソッドまたは CancelUpdate メソッドを先に呼び出す必要があります。

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

複合ステートメント内の各コマンドをいつ実行するかは、OLE DB プロバイダーが決定します。 たとえば、Microsoft OLE DB Provider for SQL Server は、複合ステートメントを受け取ったときにすべてのコマンドをバッチで実行します。 結果の Recordsets は、 NextRecordset を呼び出したときに返されます。

ただし、それ以外のプロバイダーでは、ステートメント内の次のコマンドが NextRecordset の呼び出しの後にしか実行されないこともあります。 そのようなプロバイダーの場合、ステートメントのすべてのコマンドを実行する前に Recordset オブジェクトを明示的に閉じると、残りのコマンドは実行されません。