【发布时间】:2012-03-14 03:41:25
【问题描述】:
我正在尝试遍历每个记录集上的字段并将它们的值添加到我的 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
【问题讨论】:
-
如果您在 For Each 之前尝试
recSet.Fields.Count会发生什么? -
recSet实际上是一个记录集吗?您的GetOpenIncidents()函数返回一个 Variant 并且函数中也没有Set。 -
@creamyegg 我没有将 recSet 声明为记录集。但是从函数中获取变体后不应该是一个吗?我在 recSet 上添加了 watch,我可以看到里面有 6 个项目。我如何迭代这 6 个项目?
-
@p.campbell 我试过了。得到相同的错误“对象不支持此属性或方法”:((
-
我也得到了 recSet.Close 的“对象不支持此属性或方法”。开始怀疑我是否使用了正确的参考资料,或者是否需要添加其他参考资料。
标签: vba excel excel-2007 ado adodb