просмотреть данные набора записей в ближайшем окне - PullRequest
2 голосов
/ 14 декабря 2011

У меня есть набор записей rst с 2 столбцами / полями ID и Value.Набор записей имеет несколько строк.Во время отладки я могу просматривать записи в первой строке набора записей в ближайшем окне, используя следующие операторы:

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

Но я не могу просматривать данные во 2-й или 100-й строке?

Ответы [ 3 ]

7 голосов
/ 14 декабря 2011

Относительно перемещения через набор записей 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 голос
/ 14 декабря 2011

Вам нужно будет перебирать строки, чтобы получить их данные.Например, вы можете сделать следующий простой цикл:

Do While Not rst.EOF
    'Do something with the data
    rst.MoveNext
Loop
0 голосов
/ 16 ноября 2017

Использование ответов от @Fionnualla и @codeling (и добавление закрытия и очистки для набора записей), а также добавление справки из VBA: Debug.Print без перевода строки? , чтобы это выглядело как таблица (все ещенужно сделать так, чтобы столбцы были фактической ширины максимального размера столбца).

Эта процедура выведет на экран любой запрос, который вы перетащите на него.

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
...