水晶报表中改变数据源问题,为什么用COMMAND对象调用存储过程查出来的记录集不能使用?
代码出下:
Private Sub Form_Load()
Screen.MousePointer = vbHourglass
Dim RS11 As New ADODB.Recordset
Dim RS12 As New ADODB.Recordset
Dim RS13 As New ADODB.Recordset
'---------------------------
'用自定义的COM组件中的函数返回查找出的记录集,实际是在函数中使用COMMAND对象调用存储过程,然后返回一个离线记录集。
Dim o As Object
Set o = CreateObject( "coGMDept.ioDepartments ")
Set RS11 = o.Departments()
' o.Departments是一个自定义COM组件里的函数,返回一个记录集
'----------------------------
'****************************************************************
'使用COMMAND对象调用存储过程,返回一个记录集。
Dim conn As New ADODB.Connection
Dim connstr As String
"Provider=SQLOLEDB.1;Initial Catalog=GEIMS;Data Source=c-11;Persist Security Info=False;Integrated Security=SSPI; "
conn.Open connstr
Dim Cmd As ADODB.Command
Set Cmd = New ADODB.Command
'Command 对象处理----------------------------------------
With Cmd
.CommandType = adCmdStoredProc
.CommandTimeout = 30
.CommandText = "SP_DEPARTMENTS_GET "
.Parameters.Append .CreateParameter( "@ID ", adBigInt, adParamInput, , Null)
.Parameters.Append .CreateParameter( "@RETURNS ", adBigInt, adParamOutput)
.ActiveConnection = conn
Set RS12 = .Execute
End With
'*****************************************************************
'#################################################################
'直接OPEN一个记录集。
RS13.Open "Select * from DEPARTMENTS ", conn, 3, 1
'#################################################################
'使用上述三种方法都能得到记录集,且内容一致
'下面改变水晶报表的数据源
'Report.Database.SetDataSource RS11
'Report.Database.SetDataSource RS12
Report.Database.SetDataSource RS13
'但只能使用第三种方法报表才可以正常显示,前面两种方式报表都是空的,但 debug.print 记录集RS11,RS12,RS13里面的记录,数据都完全是一样的 ,为什么?
Report.ReadRecords
CRViewer91.ReportSource = Report
CRViewer91.ViewReport
Screen.MousePointer = vbDefault
End Sub
郁闷了几天了,那位大侠有经验,请传授一下,感激不尽。
------解决方案--------------------up