2014-04-08 25 views
0

我有一個帶有列日期,類型,值的查詢輸出。我需要將所有不同的日期收集到一個變量中,以便稍後可以爲每個唯一的DATE創建一個CSV文件。 我試圖創建一個記錄集,因此分配DATE的值給變量:無法將查詢中的值分配給Access中的數組變量

Sub GetDates() 
    Dim rst As Recordset 
    Dim db As Database 
    Dim arrDates As Variant 

    Set db = CurrentDb 
    Set rst = db.OpenRecordset("SELECT Date FROM OUTPUT GROUP BY DATE; ") 
    arrDates = rst.GetRows() 

但是當我做:

For Each Item In arrDates 
    Debug.Print (Item) 
Next 

我只得到一個日期印刷(11/01/2012)。如果我在Access中運行查詢,我會看到所有15個月。

+1

爲什麼不使用記錄集,這可能是DAO(但你應該指定)例如'Do While Not rs.EOF ... Loop'? – Fionnuala

+1

'GetRows()'獲取一行,除非您告訴它獲取不同數量的行。詳細信息請參閱幫助主題。 – HansUp

+0

我也會在這裏使用'SELECT DISTINCT Date FROM OUTPUT',因爲您是按所有輸出列進行分組的,而且您沒有應用任何聚合函數。這樣做似乎更自然。 –

回答

0

我必須指定的行數: arrDates = rst.GetRows(rst.RecordCount)

更好的解決方案,所推薦的Remou:

Do Until rst.EOF 
    Debug.Print rst!Date 
    rst.MoveNext 
Loop 

編輯:我正在讀錯誤的MSDN幫助。

+1

您引用的文本來自ADO版本的GetRows方法的幫助主題。但是,您的代碼使用的是DAO記錄集,其「GetRows」方法與ADO版本的行爲不同。 – HansUp

相關問題