我有一个使用主表(tab1)的Access表单,并使用另一个表(tab2)作为外键。这两个表都是Oracle表。
tab2表有3个列。表单使用tab2的2列(id和name)作为gui中的组合列表。
我想在vba宏中列出所有tab2值(从tab2中选择*)。是否有一些神奇的语法可以做到这一点?类似的东西:
With [tab2].Recordset
While Not .EOF
For j = 0 To .Fields.Count - 1
debug.print .item(j).name & " : " & .item(j)
Next
.MoveNext
debug.print
Wend
End With
如果没有,最简单的方法是什么? tab2由表单使用(通过外键),tab2在左侧访问面板中配置为表(“tables”部分),所以我想应该有一种简单的方法可以从vba访问tab2的内容。
编辑:终于找到了办法:
Dim query As String
query = "select * from tab2"
Dim db As ADODB.Connection
Set db = CurrentProject.Connection ' <<< the key point
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open query, db
With rs
While Not .EOF
For j = 0 To .Fields.Count - 1
debug.print .Fields(j).name & " : " & .Fields(j)
Next
.MoveNext
debug.print
Wend
End With
rs.Close
Set rs = Nothing
有点长,没有魔法。但它确实有效。
答案 0 :(得分:1)
您可以使用j
来引用记录集.Fields
集合的成员字段。每个字段都包含.Name
和.Value
属性。
所以也许您只需要将Debug.Print
行更改为此...
Debug.Print .Fields(j).Name & " : " & .Fields(j).Value