VBA: Recordset.Fields "Объект не поддерживает это свойство" - PullRequest
2 голосов
/ 14 марта 2012

Я пытаюсь перебрать поля в каждом наборе записей и добавить их значения в мою таблицу Excel 2007.

У меня есть следующий код, но я получаю «Объект не поддерживает это свойство» всякий раз, когда оно достигает « Для каждого 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 Ответ

3 голосов
/ 14 марта 2012

Я думаю, что заметил это!recSet на самом деле имеет тип поля.как таковое свойство .Fields отсутствует, так как .Fields является свойством объекта набора записей.

Исправление должно быть:

For Each x In recSet

Или измените метод getOpenIncidents() навернуть RecordSet (включая изменение строки возврата на Set getOpenIncidents = rs).

...