在即时窗口中查看记录集的数据

时间:2011-12-14 10:47:52

标签: ms-access vba access-vba

我的记录集rst包含2列/字段IDValue。记录集有多行。在调试时,我能够使用以下语句在即时窗口中查看记录集第一行中的记录。

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

但是我无法查看第2行或第100行的数据?

3 个答案:

答案 0 :(得分:7)

关于通过DAO记录集和@nyarlathotep的评论:

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)

答案 1 :(得分:1)

您必须遍历行以获取其数据。你可以,例如执行以下简单循环:

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

答案 2 :(得分:0)

利用@Fionnualla和@codeling的答案(并为记录集添加结束和清理),还添加了VBA: Debug.Print without newline?的帮助,使其看起来更像一个表(仍然需要努力使列成为col的最大尺寸的实际宽度。

此程序将打印出您放在其上的任何查询。

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