问题实在太难,只能请教高手了.高分相谢.
在水晶报表中,我想在代码中改变数据的来源. 大家都知道,当前端有数据输入,就不会有问题.
现在的问题是,有很多子报表我们会设置成从主报表中取得关键字段,然后从数据库中查询出数据.
现在问题来了,当数据库(服务器)改变时,子报表所查询出来的数据还是原来设计时连接的数据库中的数据.
dim rptMain as new reportMain
Dim cnn As New ADODB.Connection()
Dim rsMain As New ADODB.Recordset()
Dim SqlString As String="...."
cnn.open(connection)
rsmain.open sqlstring.....
objRpt.SetDataSource(rsMain)
Dim RptTable As CrystalDecisions.CrystalReports.Engine.Table
Dim RptLogon As New CrystalDecisions.Shared.TableLogOnInfo()
'主报表通过一个关键字段和子报表 Subrpt 关联,子报表设计时从OldServer/OldDatabase中取相关数据.
For Each RptTable In objRpt.OpenSubreport("Subrpt").Database.Tables
RptLogon = RptTable.LogOnInfo
With RptLogon.ConnectionInfo
.ServerName = "newServer"
.DatabaseName = NewDatabase"
.UserID = "sa"
.Password = ""
End With
RptTable.ApplyLogOnInfo(RptLogon)
Next RptTable
objRpt.Refresh()
objRpt.ExportToDisk(CrystalDecisions.[Shared].ExportFormatType.PortableDocFormat,tname)
rsMain.Close()
cnn.Close()
rsMain = Nothing
cnn = Nothing
这是我使用的方法,但是没有用,不能改变子报表的数据来源.
不知道各位高手有没有好的方法介绍. 要分不是问题.多谢.