将SQL查询的结果保存到VBA中的变量中?
问题描述:
我想将查询的结果分配给变量。我有一个查询(让我们称之为“查询1”),将检查各种标准。我尝试如下。将SQL查询的结果保存到VBA中的变量中?
Dim rst As DAO.Recordset
Dim strSQL As String
Dim Variable1 As String
strQry = "Query1"
Set rst = CurrentDb.OpenRecordset(strQry)
Variable1 = ?????
rst.Close
Set rst = Nothing
我需要帮助来完成上面的代码,使我的变量将获得由该查询返回的值。请注意,我的Query1将返回一个空值或单个记录。
答
如果您的查询仅返回单个列,并且只有零个或一个记录,则可以使用rst(0)
来获取第一个字段(Fields集合是从零开始的)。
If rst.EOF Then
' covers "no records returned"
Variable1 = ""
Else
' Nz() covers "NULL returned"
Variable1 = Nz(rst(0), "")
End If
但是,从查询中使用字段名是更好的可读性。
Variable1 = Nz(rst!myField, "")
您可能还想查看DLookup()
函数,该函数旨在返回单个值。
答
我不明白你为什么需要一个记录集。您可以使用DLookup
来获取由Query1
返回的值。
Dim Variable1 As Variant
Variable1 = DLookup("[column name here]", "Query1")
我用Variant
为Variable1
,以便它可以接受空。如果您希望将其保留为String
,您可以使用Nz()
,因为Andre演示了将Null转换为字符串。
query1中的列名称是什么?您也看起来与'strSQL'和'strQry'不匹配 – LiamH