MS ACCESS 2007 VBA:DAO记录集....如何查看返回集合中的所有“字段”

时间:2010-06-25 14:15:09

标签: ms-access vba ms-access-2007 dao

所以,如果我像这样做一个SQL语句:

sql = "SELECT * FROM tblMain"

     set rs = currentdb.openrecordset(sql)

我可以用什么方法查看我刚刚创建的这个集合中的每个“字段名称”。我收到一些非常奇怪的错误,说明在此集合中找不到该项目。

我知道该字段存在于表中,当我引用它时,我已经三处检查了拼写,并且SQL应该拉动所有内容,但我希望看到它。

是否有一个debug.print方法来查看所有这些字段

感谢 贾斯汀

3 个答案:

答案 0 :(得分:9)

这是其他答案的变体,但我认为使用For / Each循环比使用计数器更好:

  Dim rs As DAO.Recordset
  Dim fld As DAO.Field

  Set rs = CurrentDB.OpenRecordset("SELECT * FROM tblMain")
  For Each fld In rs.Fields
    Debug.Print fld.Name
  Next fld
  Set fld = Nothing
  rs.Close
  Set rs = Nothing

答案 1 :(得分:6)

您可以遍历记录集的字段集合。

代码是OTTOMH

Dim NumFields as Integer

For NumFields = 0 to rs.Fields.Count -1
    Debug.Print Rs.Fields(NumFields).Name
Next

或者,您可以在set rs = currentdb.openrecordset(sql)设置断点,然后在语句执行后,右键单击rs,选择添加监视并查看整个内容在手表窗口中。

答案 2 :(得分:1)

这是一个脚本,它将查找包含您在Access数据库(System和Attached Tables除外)中的每个表中指定的字符串的字段,并将其写入文本文件:

Option Compare Database
Option Explicit

Sub main()
Dim db As Database
Dim rs As Recordset
Dim bFinished As Boolean
Dim sFieldName As String
Dim iPosition, z, x As Integer
Dim bRetVal  As Boolean
Dim tdTemp As TableDef
Dim iDatabaseNumbers As Integer


Const FIELD_TO_FIND = "FieldName"


Set db = CurrentDb

Open Left(db.Name, Len(db.Name) - 4) & "_" & FIELD_TO_FIND & ".txt" For Output As #1

    For x = 0 To db.TableDefs.Count - 1

        Set tdTemp = db.TableDefs(x)
        bRetVal = IIf(tdTemp.Attributes And dbSystemObject, False, True)
        If bRetVal Then
            bRetVal = IIf(tdTemp.Attributes And dbAttachedTable, False, True)
        End If

        If bRetVal Then
            Set rs = db.OpenRecordset(db.TableDefs(x).Name)
                If rs.RecordCount > 0 Then
                    For z = 0 To rs.Fields.Count - 1

                        sFieldName = rs.Fields(z).Name
                        If InStr(1, sFieldName, FIELD_TO_FIND, vbTextCompare) > 0 Then
                            Print #1, db.TableDefs(x).Name
                            Exit For
                        End If
                    Next z
                End If
        End If
    Next x

Close #1

MsgBox "Done"

End Sub

您可以相应调整以使其满足您的需求。