Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何从ADO查询中检查记录集的所有字段?_Vba_Ado - Fatal编程技术网

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

Vba 如何从ADO查询中检查记录集的所有字段?,vba,ado,Vba,Ado,我想看看是否有一个命令可以同时显示整个记录(行)。到现在为止,我只找到了显示单个列的方法。我使用ADO连接到ms access的mdb。谢谢顺便问一下,我不知道如何用MS Access的VB表单打印消息……VB是否提供了一个控制台来显示这一点?调试。打印不给我任何东西,我只成功与MsgBox With cmdCommand .ActiveConnection = conConnection .CommandText = "SELECT * from tableA"

我想看看是否有一个命令可以同时显示整个记录(行)。到现在为止,我只找到了显示单个列的方法。我使用ADO连接到ms access的mdb。谢谢顺便问一下,我不知道如何用MS Access的VB表单打印消息……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

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

在C#中,我会这样写:

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

现在,您只需找到VB语法…

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

其次,没有一个命令可以显示整个记录,您必须按照Xavinou在其(她?)答案中的方式来组装它。下面是VB语法,忽略记录集创建和EOF检查(注意,我已经声明了变量——您正在使用Option Explicit,是吗?):


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

您可以使用以下命令,而不是逐段构建自己的字符串:


此方法的一个不幸的副作用是,它似乎将记录从记录集中删除。

+1 NB如果您想快速检查整个记录集的内容,则可以使用Excel范围对象的
CopyFromRecordset
方法将整个记录集转储到Excel工作表中-请参阅,您也可以使用查看|即时窗口。。。或者用按钮自定义工具栏。奇怪,但对我来说,我不能将
作为字段
作为字符串
。必须将其关闭,否则会出现错误:
预期语句结束
。不然就行了。荣誉
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 
Debug.Print records.GetString(adClipString, 1)