我正在尝试遍历每个记录集上的字段,并将其值添加到我的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
答案 0 :(得分:3)
我想我已经发现了它! recSet
实际上是Fields类型。因此,没有.Fields
属性,因为.Fields
是Recordset对象的属性。
修复应该是:
For Each x In recSet
或者更改getOpenIncidents()
方法以返回RecordSet(包括将返回行更改为Set getOpenIncidents = rs
)。