我有一个奇怪的问题,我试图将三个记录集传递给一个方法,让它们在同一个数据库连接下填充数据。通过在运行下面的代码时查看自定义日志记录信息,我可以看到在将传递给方法的记录集分配给方法中的局部变量时出现类型不匹配错误。
因此,当调用 mthod 时会记录以下内容:
2010 年 7 月 15 日上午 10:59:47 - 开始 GetALLRecordSets 2010 年 7 月 15 日上午 10:59:47 - 开始 GetALLRecordSets RS 初始化
奇怪的是,同样的代码在我们的测试服务器上工作,其中 asp 代码是相同的,组件 dll 是相同的。
关于可能导致此问题的任何想法?
经典的 ASP 代码:
set rs1= createobject("ADODB.Recordset")
set rs2 =createobject("ADODB.Recordset")
set rs3 = createobject("ADODB.Recordset")
set myObj = Server.CreateObject("Component.className")
call myObj.GetAllRecordSets(rs1, rs2, rs3)
VB6 组件代码:
Public Sub GetALLRecordSets(ByRef rs1 As Variant, _
ByRef rs2 As Variant, _
ByRef rs3 As Variant)
On Error GoTo ErrorSpot
WriteToLog "Begin GetALLRecordSets", "", 0, ""
Dim lngErrNum As Long
Dim strErrDesc As String
Dim filterStr As String
Dim objConn As ADODB.Connection
Dim myrs1 As ADODB.Recordset
Dim myrs2 As ADODB.Recordset
Dim myrs3 As ADODB.Recordset
WriteToLog "Begin GetALLRecordSets RS initialization", "", 0, ""
Set myrs1 = rs1
Set myrs2 = rs2
Set myrs3 = rs3
WriteToLog "End GetALLRecordSets RS initialization", "", 0, ""
Set rs1 = myrs1.Clone
Set rs2 = myrs2.Clone
Set rs3 = myrs3.Clone
ExitSpot:
'Cleanup
Exit Sub
ErrorSpot:
'Save the error information
lngErrNum = Err.Number
strErrDesc = Err.Description
'Log the error
WriteToLog "GetALLRecordSets", strErrDesc, lngErrNum, strErrDesc
End Sub