Recordset2.NextRecordset メソッド (DAO)

適用先: Access 2013、Office 2013

構文

。NextRecordset

Recordset2 オブジェクトを表す変数。

戻り値

Boolean

注釈

ODBCDirect ワークスペースでは、次の例のように、OpenRecordset のソース引数に複数の選択クエリを含む Recordset、または選択クエリ QueryDef オブジェクトの SQL プロパティを開くことができます。

    SELECT LastName, FirstName FROM Authors 
    WHERE LastName = 'Smith'; 
    SELECT Title, ISBN FROM Titles 
    WHERE Pub_ID = 9999 

返される Recordset では、最初のクエリの結果が表示されます。 それ以降のクエリの結果であるレコードのセットを取得するには、 NextRecordset メソッドを使用します。

他にもレコードがある (つまり、 OpenRecordset 呼び出しまたは SQL プロパティに別の選択クエリが指定されていた) 場合は、次のクエリから返されるレコードが Recordset に読み込まれ、 NextRecordset はレコードがあることを示す True を返します。 これ以上レコードがない (つまり、最後の選択クエリの結果が既に Recordset に読み込まれていた) 場合は、 NextRecordsetFalse を返し、 Recordset は空になります。

Cancel メソッドを使用して、 Recordset の内容を消去することもできます。 ただし、 Cancel を使用すると、まだ読み込まれていないレコードも消去されます。

次の使用例は、 NextRecordset メソッドを使用して、複合 SELECT クエリからのデータを表示します。 このようなクエリを実行する場合、 DefaultCursorDriver プロパティを dbUseODBCCursor に設定する必要があります。 NextRecordset メソッドは、一部またはすべての SELECT ステートメントが 0 件のレコードを返す場合でも True を返し、 False を返すのは、個別の SQL 句をすべて確認した後のみです。

    Sub NextRecordsetX() 
     
     Dim wrkODBC As Workspace 
     Dim conPubs As Connection 
     Dim rstTemp As Recordset2 
     Dim intCount As Integer 
     Dim booNext As Boolean 
     
     ' Create ODBCDirect Workspace object and open Connection 
     ' object. The DefaultCursorDriver setting is required 
     ' when using compound SQL statements. 
     Set wrkODBC = CreateWorkspace("", _ 
     "admin", "", dbUseODBC) 
     wrkODBC.DefaultCursorDriver = dbUseODBCCursor 
     
     ' Note: The DSN referenced below must be set to 
     ' use Microsoft Windows NT Authentication Mode to 
     ' authorize user access to the Microsoft SQL Server. 
     Set conPubs = wrkODBC.OpenConnection("Publishers", , , _ 
     "ODBC;DATABASE=pubs;DSN=Publishers") 
     
     ' Construct compound SELECT statement. 
     Set rstTemp = conPubs.OpenRecordset("SELECT * " & _ 
     "FROM authors; " & _ 
     "SELECT * FROM stores; " & _ 
     "SELECT * FROM jobs") 
     
     ' Try printing results from each of the three SELECT 
     ' statements. 
     booNext = True 
     intCount = 1 
     With rstTemp 
     Do While booNext 
     Debug.Print "Contents of recordset #" & intCount 
     Do While Not .EOF 
     Debug.Print , .Fields(0), .Fields(1) 
     .MoveNext 
     Loop 
     booNext = .NextRecordset 
     Debug.Print " rstTemp.NextRecordset = " & _ 
     booNext 
     intCount = intCount + 1 
     Loop 
     End With 
     
     rstTemp.Close 
     conPubs.Close 
     wrkODBC.Close 
     
    End Sub 

複合 SQL ステートメントを含む既成のステートメントを作成して、同じ作業を実行することもできます。 この場合は、 QueryDef オブジェクトの CacheSize プロパティを 1 に設定し、 Recordset オブジェクトを読み取り専用の前方スクロール タイプとする必要があります。

Sub NextRecordsetX2() 
 
 Dim wrkODBC As Workspace 
 Dim conPubs As Connection 
 Dim qdfTemp As QueryDef 
 Dim rstTemp As Recordset2 
 Dim intCount As Integer 
 Dim booNext As Boolean 
 
 ' Create ODBCDirect Workspace object and open Connection 
 ' object. The DefaultCursorDriver setting is required 
 ' when using compound SQL statements. 
 Set wrkODBC = CreateWorkspace("", _ 
 "admin", "", dbUseODBC) 
 wrkODBC.DefaultCursorDriver = dbUseODBCCursor 
 
 ' Note: The DSN referenced below must be set to 
 ' use Microsoft Windows NT Authentication Mode to 
 ' authorize user access to the Microsoft SQL Server. 
 Set conPubs = wrkODBC.OpenConnection("Publishers", , , _ 
 "ODBC;DATABASE=pubs;DSN=Publishers") 
 
 ' Create a temporary stored procedure with a compound 
 ' SELECT statement. 
 Set qdfTemp = conPubs.CreateQueryDef("", _ 
 "SELECT * FROM authors; " & _ 
 "SELECT * FROM stores; " & _ 
 "SELECT * FROM jobs") 
 ' Set CacheSize and open Recordset object with arguments 
 ' that will allow access to multiple recordsets. 
 qdfTemp.CacheSize = 1 
 Set rstTemp = qdfTemp.OpenRecordset(dbOpenForwardOnly, _ 
 dbReadOnly) 
 
 ' Try printing results from each of the three SELECT 
 ' statements. 
 booNext = True 
 intCount = 1 
 With rstTemp 
 Do While booNext 
 Debug.Print "Contents of recordset #" & intCount 
 Do While Not .EOF 
 Debug.Print , .Fields(0), .Fields(1) 
 .MoveNext 
 Loop 
 booNext = .NextRecordset 
 Debug.Print " rstTemp.NextRecordset = " & _ 
 booNext 
 intCount = intCount + 1 
 Loop 
 End With 
 
 rstTemp.Close 
 qdfTemp.Close 
 conPubs.Close 
 wrkODBC.Close 
 
End Sub