VBA:Recordset.Fields“对象不支持此属性”

时间:2012-03-14 03:41:26

标签: vba excel-vba excel-2007 ado adodb

我正在尝试遍历每个记录集上的字段,并将其值添加到我的Excel 2007工作表中。

我有以下代码,但只要到达“ For Each x In .. ”,我就会得到“对象不支持此属性” 我错过了什么吗?我是否需要在VBA中添加其他引用才能使用.Fields?我目前在我的参考资料上使用 Microsoft ActiveX Data Objects 6.0 Library 。 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

1 个答案:

答案 0 :(得分:3)

我想我已经发现了它! recSet实际上是Fields类型。因此,没有.Fields属性,因为.Fields是Recordset对象的属性。

修复应该是:

For Each x In recSet

或者更改getOpenIncidents()方法以返回RecordSet(包括将返回行更改为Set getOpenIncidents = rs)。