我在访问2007文件中有以下vba代码:
Private Sub Form_Load()
Dim a As String
Dim b As DAO.Recordset
a = " select col1 from table1 where id = 1 "
Set b = CurrentDb.OpenRecordset(a)
MsgBox (b)
b.Close
End Sub
但我在MsgBox (b)
行上收到以下错误。知道为什么会这样吗?查询返回一个值,我想在消息框中显示该值。
答案 0 :(得分:3)
如果您希望MsgBox
显示记录集第一列中包含的值,您可以这样做......
MsgBox b(0)
但是,您实际上不需要打开记录集来检索该单个值。您可以使用DLookup
表达式。
MsgBox DLookup("col1", "table1", "id = 1")
答案 1 :(得分:2)
Matteo提到你需要传递一个String或者可以转换为String的东西到MsgBox。在这种情况下,您可以在选择查询中指定字段。
Private Sub Form_Load()
Dim a As String
Dim b As DAO.Recordset
a = " select col1 from table1 where id = 1 "
Set b = CurrentDb.OpenRecordset(a)
MsgBox b.Fields("col1") ' Msgbox b("col1") should also work
b.Close
End Sub