我有一个包含50个奇数子报表的Crystal报表,每个子报表都有大量参数.将其从一个数据库切换到另一个数据库需要很长时间,因为Crystal Reports IDE坚持要为每个子报表输入所有参数.
我想知道是否可以在C#中编写一个快速工具来查看rpt文件中所有子报告的当前数据库配置,理想情况下切换到不同的数据库.
不幸的是(或幸运的是)我对Crystal对象模型没有多少经验 - 任何人都知道从哪里开始?
谢谢,乔恩.
这应该做的工作.显然需要替换必要的密码和用户名.
Private Sub ProcessFile(ByVal FileName As String)
Dim CR As Engine.ReportDocument = Nothing
Try
CR = New Engine.ReportDocument
CR.Load(FileName, CrystalDecisions.Shared.OpenReportMethod.OpenReportByDefault)
'Recurse thru Report
RecurseAndRemap(CR)
'Save File
CR.SaveAs("OutPutFilePath")
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
If Not CR Is Nothing Then
CR.Close()
CR.Dispose()
End If
End Try
End Sub
Private Sub RecurseAndRemap(ByVal CR As Engine.ReportDocument)
For Each DSC As CrystalDecisions.Shared.IConnectionInfo In CR.DataSourceConnections
DSC.SetLogon("YourUserName", "YourPassword")
DSC.SetConnection("YouServerName", "YourDatabaseName", False)
Next
CR.SetDatabaseLogon("YourUserName", "YourPassword")
For Each Table As Engine.Table In CR.Database.Tables
Table.LogOnInfo.ConnectionInfo.UserID = "YourUserName"
Table.LogOnInfo.ConnectionInfo.Password = "YourPassword"
Next
If Not CR.IsSubreport Then
For Each SR As Engine.ReportDocument In CR.Subreports
RecurseAndRemap(SR)
Next
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
希望有助于干杯本
| 归档时间: |
|
| 查看次数: |
7483 次 |
| 最近记录: |