2015-12-02 119 views
1

我想將查詢的結果分配給變量。我有一個查詢(讓我們稱之爲「查詢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

回答

2

如果您的查詢僅返回單個列,並且只有零個或一個記錄,則可以使用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()函數,該函數旨在返回單個值。

3

我不明白你爲什麼需要一個記錄集。您可以使用DLookup來獲取由Query1返回的值。

Dim Variable1 As Variant 
Variable1 = DLookup("[column name here]", "Query1") 

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

相關問題