将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将返回一个空值或单个记录。

+0

query1中的列名称是什么?您也看起来与'strSQL'和'strQry'不匹配 – LiamH

如果您的查询仅返回单个列,并且只有零个或一个记录,则可以使用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") 

我用VariantVariable1,以便它可以接受空。如果您希望将其保留为String,您可以使用Nz(),因为Andre演示了将Null转换为字符串。