2016-08-01 70 views
0

以下是我记录的声明无法通过ADODB.Recordset作为参数的函数调用

Dim expectedRs, actualRs As ADODB.Recordset 

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

下正常工作,

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

但是,我不能传递的变量方法调用

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

我得到一个编译时错误“ByRef参数类型不匹配”

以下是我的函数被调用

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 

回答

0
Dim expectedRs, actualRs As ADODB.Recordset 

实际上意味着:

Dim expectedRs As Variant, actualRs As ADODB.Recordset 

而且你的函数期望expectedRsObjectactualRsObject为好。因此,做以下修改:

Dim expectedRs, actualRs As ADODB.Recordset 

变化:

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

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

变化:

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

感谢@ emihir0,我的问题已经解决了,你的努力非常感谢。 –