Как проверить все поля набора записей из запроса ADO?

Я хотел бы видеть, есть ли команда, чтобы показать всю запись (строку) сразу. К настоящему времени я только нахожу способ показать отдельные столбцы. Я использую ADO соединение с mdb доступа MS. Благодарю. Кстати, я не знаю, как я могу напечатать сообщение в форме VB MS Access....... VB предоставляет консоль, чтобы показать это? Отладка. Печать не дает мне ничего, я только успех с MsgBox...

   With cmdCommand
    .ActiveConnection = conConnection
    .CommandText = "SELECT * from tableA"
    .CommandType = adCmdText
   End With

   With rstRecordSet
    .CursorType = adOpenStatic
    .CursorLocation = adUseClient
    .LockType = adLockReadOnly
    .Open cmdCommand
   End With

   If rstRecordSet.EOF = False Then
        rstRecordSet.MoveFirst
        Do

            MsgBox rstRecordSet.Fields(0) & " " & rstRecordSet.Fields(1)

            rstRecordSet.MoveNext
        Loop Until rstRecordSet.EOF = True
   End If

3 ответа

Решение

Прежде всего, Debug.Print печатает в Immediate Window в редакторе VB[A]. Если он не отображается, нажмите Ctrl-G.

Во-вторых, нет единой команды, чтобы показать всю запись, вам придется собрать ее так, как это делает Ксавину в своем ответе. Вот синтаксис VB, игнорирующий создание набора записей и проверку EOF (обратите внимание, что я объявил переменные - вы используете Option Explicit, да?):

Dim fld As Field
Dim msg As String

    For Each fld In rstRecordSet.Fields
        msg = msg & fld.Value & "|"
    Next

Debug.Print msg    'or MsgBox msg 

Я думаю, что канал ("|") делает лучший разделитель, чем пробел, так как он менее вероятен в ваших данных.

Для выходной консоли я не знаю (так как я не знаю VB), но для показа всей записи сразу можно использовать foreach цикл на rstRecordSet.Fields,

В C# я бы написал так:

string msg = "";
foreach (Field f in rstRecordSet.Fields)
{
    msg += f.Value + " ";
}
MessageBox.Show(msg);

Теперь вам просто нужно найти синтаксис VB...

Вместо того, чтобы строить свою собственную строку, по частям, вы можете использовать метод GetString объекта Recordset:

Debug.Print records.GetString(adClipString, 1)

К сожалению, побочным эффектом этого метода является удаление записи из набора записей.

Другие вопросы по тегам