2011-12-14 3 views
2

私はレコードセットrstと2列/フィールドIDValueを持っています。レコードセットには複数の行があります。デバッグ中に、次のステートメントを使用して、イミディエイトウィンドウのレコードセットの最初の行のレコードを表示できます。即時ウィンドウ内のレコードセットのデータを表示

?rst.fields(0) 
?rst.fields(1) 

しかし、2行目または100行目のデータは表示できません。

+1

DoCmd.OpenQuery "someQueryDef"は、クエリ結果のセットをブラウズするときに、イミディエイトウィンドウから非常に便利であることがわかりました。 – chip

答えて

6

:以下の単純なループを行う

Dim rs As DAO.Recordset 
Set rs = CurrentDb.OpenRecordset("SELECT * FROM tbljournaltitles") 

Debug.Print rs(0).Name 
Debug.Print rs(0) 
Debug.Print rs("MyText") 

rs.Move 10 
Debug.Print rs(0) 

rs.Move -4 
Debug.Print rs(0) 

''Find does not work with all recordset types 
rs.FindFirst "MyText Like 'Text*'" 
Debug.Print rs(0) 
+0

ありがとう、これは非常に役に立ちます。 – Heman

1

データを取得するには、行を反復処理する必要があります。たとえば、 DAOレコードセットと@nyarlathotepによってコメントを通じて移動について

Do While Not rst.EOF 
    'Do something with the data 
    rst.MoveNext 
Loop 
+0

ありがとうございます。その行に移動する以外の特定の行と列のデータを表示するコマンドがあります。 100行目のデータを表示するには、movenextを100回使用する必要があります。 – Heman

+0

レコードセットを使用しているときに、すべてのデータが必ずしも同時にメモリに格納されているわけではないので、反復する以外の方法はないと思います。しかし、あなたは自分のデータ構造の何らかの種類の行を格納し、後でそのデータ構造を確認することができます – codeling

+1

@ user1075037実際には反復せずにレコードセットを移動することは可能です。私はこの回答の補足を投稿しました。 – Fionnuala

0

@Fionnuallaと@codeling(から回答を活用し、追加するレコードセットの&クリーンアップを閉じます)、VBA: Debug.Print without newline?からのヘルプを追加して、このように見えるようにします(まだ列の最大サイズの実際の幅にする必要があります)。

この手順では、ドロップしたクエリがすべて表示されます。

Public Sub debugPrintQuery(ByVal myQuery As String) 
Dim rs As DAO.Recordset 
Set rs = CurrentDb.OpenRecordset(myQuery) 

' print column names 
Dim i As Integer 
For i = 0 To rs.Fields.Count - 2 
    Debug.Print rs(i).Name & vbTab; 'print col names separated with a tab one from each other 
Next i 
Debug.Print rs(rs.Fields.Count - 1).Name 'last one without ; so it adds the newline 

Do While Not rs.EOF 
    For i = 0 To rs.Fields.Count - 2 
     Debug.Print rs(i) & vbTab; 'print values separated with a tab one from each other 
    Next i 
    Debug.Print rs(rs.Fields.Count - 1) 'last one without ; so it adds the newline 
    rs.MoveNext 
Loop 

rs.Close 'Close the recordset 
Set rs = Nothing 'Clean up 

End Sub 
関連する問題