Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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
- For Each tmpTable In Report.Database.Tables
- Set CPProperties = tmpTable.ConnectionProperties
- CPProperties.DeleteAll
- CPProperties.Add "Provider", "SQLOLEDB"
- CPProperties.Add "Data Source", mServerName
- CPProperties.Add "Initial Catalog", mBaseName
- CPProperties.Add "User ID", mUserID
- CPProperties.Add "Password", mPassword
- CPProperties.Add "Server Name", mServerName
- CPProperties.Add "Server Type", "OLEDB"
- CPProperties.Add "DataBase", mBaseName
- tmpTable.SetTableLocation tmpTable.Location, "", ""
- Next tmpTable
- For Each tmpSection In Report.Sections
- For Each tmpObject In tmpSection.ReportObjects
- If TypeName(tmpObject) = "ISubreportObject" Then
- Set tmpReport = tmpObject.OpenSubreport()
- For Each tmpTable In tmpReport.Database.Tables
- Set CPProperties = tmpTable.ConnectionProperties
- CPProperties.DeleteAll
- CPProperties.Add "Provider", "SQLOLEDB"
- CPProperties.Add "Data Source", mServerName
- CPProperties.Add "Initial Catalog", mBaseName
- CPProperties.Add "User ID", mUserID
- CPProperties.Add "Password", mPassword
- CPProperties.Add "Server Name", mServerName
- CPProperties.Add "Server Type", "OLEDB"
- CPProperties.Add "DataBase", mBaseName
- tmpTable.SetTableLocation tmpTable.Location, "", ""
- Next tmpTable
- End If
- Next tmpObject
- Next tmpSection
- private void Form1_Load(object sender, EventArgs e)
- {
- ReportDocument rd = new ReportDocument();
- rd.Load("Report.rpt");
- Explore(rd);
- foreach (ReportDocument sr in rd.Subreports)
- {
- Explore(sr);
- }
- }
- private void Explore(ReportDocument r)
- {
- foreach (IConnectionInfo con in r.DataSourceConnections)
- {
- if (!r.IsSubreport)
- Console.WriteLine("Main Report");
- else
- Console.WriteLine(r.Name);
- Console.WriteLine(con.DatabaseName);
- Console.WriteLine("-");
- }
- }
Add Comment
Please, Sign In to add comment