2016-08-01 14 views
0

Folgende ist meine Erklärung von Cord-Passkann nicht ADODB.Recordset als Parameter an eine Funktion aufrufen

Dim expectedRs, actualRs As ADODB.Recordset 

    Set expectedRs = accessDatabse.getResultSetForSqlQuery(tempArr(1)) 
    Set actualRs = accessDatabse.getResultSetForSqlQuery(tempArr(2)) 

folgende funktioniert gut,

excelFunc.writeQueryResultsToExcel(tempArr(0), accessDatabse.getResultSetForSqlQuery(tempArr(1)), accessDatabse.getResultSetForSqlQuery(tempArr(2))) 

Aber ich kann nicht die Variablen in den Pass Methodenaufruf

excelFunc.writeQueryResultsToExcel CStr(tempArr(0)), expectedRs,actualRs 

ich erhalte eine Kompilierung-Fehler "ByRef Argument Type Mismatch"

Folgende ist meine Funktion

Public Function writeQueryResultsToExcel(workbookName As String, expectedRs As Object, actualRs As Object) 

     Dim wkb As Workbook 
     Dim strPath As String 

     strPath = globalObj.getDefaultRunInstancePath() 

     Set wkb = Workbooks.Open(strPath + workbookName + ".xlsx") 

     'rs.Open strSQL 
     'Sheet4.Range("A1").CopyFromRecordset rs 
    '***********************************UntestedCode****************************** 
     wkb.Sheets("Expected").Range("A1").CopyFromRecordset expectedRs 
     wkb.Sheets("Actual").Range("A1").CopyFromRecordset actualRs 
     wkb.Save 
     wkb.Close 
    '***********************************UntestedCode****************************** 

    End Function 

Antwort

0
Dim expectedRs, actualRs As ADODB.Recordset 
Genannt werden

Eigentlich bedeutet:

Dim expectedRs As Variant, actualRs As ADODB.Recordset 

Und Ihre Funktion erwartet expectedRsObject und actualRs sein Object auch zu sein. Daher tun die folgenden Änderungen:

Dim expectedRs, actualRs As ADODB.Recordset 

Änderung:

Dim expectedRs As ADODB.Recordset, actualRs As ADODB.Recordset 

und

Public Function writeQueryResultsToExcel(workbookName As String, expectedRs As Object, actualRs As Object) 

Änderung:

Public Function writeQueryResultsToExcel(workbookName As String, expectedRs As ADODB.Recordset, actualRs As ADODB.Recordset) 
+0

Thanks @ emihir0, mein Problem behoben wurde, Ihre Bemühungen werden sehr geschätzt. –