无法通过ADODB.Recordset作为参数的函数调用
问题描述:
以下是我记录的声明无法通过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
答
Dim expectedRs, actualRs As ADODB.Recordset
实际上意味着:
Dim expectedRs As Variant, actualRs As ADODB.Recordset
而且你的函数期望expectedRs
是Object
和actualRs
是Object
为好。因此,做以下修改:
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)
感谢@ emihir0,我的问题已经解决了,你的努力非常感谢。 –