所以,如果我像这样做一个SQL语句:
sql = "SELECT * FROM tblMain"
set rs = currentdb.openrecordset(sql)
我可以用什么方法查看我刚刚创建的这个集合中的每个“字段名称”。我收到一些非常奇怪的错误,说明在此集合中找不到该项目。
我知道该字段存在于表中,当我引用它时,我已经三处检查了拼写,并且SQL应该拉动所有内容,但我希望看到它。
是否有一个debug.print方法来查看所有这些字段
感谢 贾斯汀
答案 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
您可以相应调整以使其满足您的需求。