如何从ADO查询中检查记录集的所有字段?

时间:2011-03-23 07:40:00

标签: vba ado

我想看看是否有命令一次显示整个记录(行)。到现在为止,我只找到显示单个列的方法。我正在使用与ms访问的mdb的ADO连接。谢谢。顺便说一句,我不知道如何在MS Access的VB窗体中打印消息....... vb是否提供了一个控制台来显示? Debug.Print不给我任何东西,我只用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 个答案:

答案 0 :(得分:11)

首先,Debug.Print打印到VB [A]编辑器中的立即窗口。如果没有显示,请按Ctrl-G。

其次,没有一个命令可以显示整个记录,你必须按照Xavinou在他(她的?)答案中的方式组装它。这是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 

我认为管道(“|”)是一个比空格更好的分隔符,因为它不太可能出现在你的数据中。

答案 1 :(得分:2)

对于输出控制台,我不知道(因为我不知道VB),但是为了一次显示整个记录,你可以在foreach上使用rstRecordSet.Fields循环。 / p>

在C#中,我会这样写:

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

现在,你只需找到VB语法......

答案 2 :(得分:0)

您可以使用GetString method of the Recordset object来代替逐个构建自己的字符串:

Debug.Print records.GetString(adClipString, 1)

这种方法的不幸的副作用是它似乎从记录集中删除了记录。