Несоответствие типов при передаче параметра в sub, набор записей становится полями - PullRequest
0 голосов
/ 14 января 2020

Я пытаюсь сделать что-то для каждой группы данных, как это.

Sub filt()
    Dim nets As ADODB.Recordset
    Dim records As ADODB.Recordset
    Dim sqlStr As String
    sqlStr = "SELECT distinct [Sheet1$].netId FROM [Sheet1$]"
    Set nets = queryExecutor(sqlStr)

    Do
        If Not IsNull(nets(0)) Then
            sqlStr = "SELECT * FROM [Sheet1$] WHERE [Sheet1$].netId = '" & nets(0) & "'"
            Set records = queryExecutor(sqlStr)

            ' The type of records is Recordset
            Debug.Print "The type of records is " & TypeName(records)
            reducer(records)
        End If

        nets.MoveNext
    Loop Until nets.EOF
End Sub

Function queryExecutor(sql As String) As Object
    ...
End Function

Субредуктор выглядит так, когда я вызываю саб, он дает мне ошибка времени выполнения 13, несоответствие типов ошибка

Sub reducer(records As ADODB.Recordset)
    ...
End Sub

Затем я попробовал что-то вроде этого

Sub reducer(records As Object)
    ' The type of records is Fields
    Debug.Print "The type of records is " & TypeName(records)
End Sub

Кажется, тип записей стал полями и я понятия не имею, почему. Я использую Excel 2013 (32-разрядную версию) в 64-разрядной системе Windows 10.

Любая помощь приветствуется!

...