2012-03-14 255 views
2

我想遍歷每個記錄集上的字段並將其值添加到我的Excel 2007工作表中。VBA:Recordset.Fields「對象不支持此屬性」

我有下面的代碼,但我正在逐漸「對象不支持此屬性」,只要達到「對於每個X在...」 我缺少的東西?我是否需要在VBA中添加其他參考以使用.Fields?我目前使用Microsoft ActiveX數據對象6.0庫在我的參考。 SQL查詢Oracle數據庫,但我不認爲這個錯誤很重要。

Set recSet = newConn.getOpenIncidents("exampleworkgroup") 
Set Path = ThisWorkbook.Worksheets("Incidents") 
iRow = 2 

With Path 
    iCol = 1 
    For Each x In recSet.Fields 
     .Cells(iRow, iCol).Value = x.Value 'Customer Name 
     iCol = iCol + 1 
    Next 
End With 

這是該函數的代碼在我班上

Public Function getOpenIncidents(ByVal wrkgp As String) 
    Set rs = New ADODB.Recordset 
    Dim SQL As String 

    SQL = "SELECT intbl.cust_ky, intbl.incid_id, intbl.OPEN_TS, intbl.CLOSE_TS, wrkgptbl.wrkgp_id, intbl.incid_ttl_dn " _ 
     & "FROM (MAIN.testtable intbl INNER JOIN MAIN.wrkgrp wrkgptbl ON intbl.curr_wrkgp_ky=wrkgptbl.wrkgp_ky) " _ 
     & "WHERE wrkgptbl.wrkgp_id='" & wrkgp & "'" 

    rs.Open SQL, con, adOpenKeyset 
    rs.MoveFirst 
    getOpenIncidents = rs 

End Function 
+0

如果您在For Each之前嘗試「recSet.Fields.Count」,會發生什麼? – 2012-03-14 03:47:10

+0

是'recSet'實際上是一個記錄集?你的'GetOpenIncidents()'函數返回一個Variant,並且在函數中也沒有'Set'。 – markblandford 2012-03-14 09:53:22

+0

@creamyegg我沒有將recSet聲明爲記錄集。但是從函數中獲取變體後它不應該是一個嗎?我在recSet上添加了手錶,並且我能夠看到其中的6個項目。我如何迭代這6個項目? – Kyle 2012-03-14 12:39:02

回答

3

我想我已經發現了它! recSet實際上是字段類型。因此.Fields屬性不存在,因爲.Fields是Recordset對象的屬性。

的修復程序應該是:

For Each x In recSet 

或改變getOpenIncidents()方法以返回一個記錄(包括改變返回管線Set getOpenIncidents = rs)。

+0

謝謝!偉大的幫助! – Kyle 2012-03-14 18:35:49

相關問題