Guest User

Untitled

a guest
Jun 22nd, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.40 KB | None | 0 0
  1. Private Sub ProcessFile(ByVal FileName As String)
  2. Dim CR As Engine.ReportDocument = Nothing
  3. Try
  4. CR = New Engine.ReportDocument
  5. CR.Load(FileName, CrystalDecisions.Shared.OpenReportMethod.OpenReportByDefault)
  6.  
  7. 'Recurse thru Report
  8. RecurseAndRemap(CR)
  9. 'Save File
  10. CR.SaveAs("OutPutFilePath")
  11.  
  12. Catch ex As Exception
  13. MessageBox.Show(ex.Message)
  14. Finally
  15. If Not CR Is Nothing Then
  16. CR.Close()
  17. CR.Dispose()
  18. End If
  19. End Try
  20. End Sub
  21.  
  22. Private Sub RecurseAndRemap(ByVal CR As Engine.ReportDocument)
  23. For Each DSC As CrystalDecisions.Shared.IConnectionInfo In CR.DataSourceConnections
  24. DSC.SetLogon("YourUserName", "YourPassword")
  25. DSC.SetConnection("YouServerName", "YourDatabaseName", False)
  26. Next
  27.  
  28. CR.SetDatabaseLogon("YourUserName", "YourPassword")
  29.  
  30. For Each Table As Engine.Table In CR.Database.Tables
  31. Table.LogOnInfo.ConnectionInfo.UserID = "YourUserName"
  32. Table.LogOnInfo.ConnectionInfo.Password = "YourPassword"
  33. Next
  34.  
  35. If Not CR.IsSubreport Then
  36. For Each SR As Engine.ReportDocument In CR.Subreports
  37. RecurseAndRemap(SR)
  38. Next
  39. End If
  40. End Sub
  41.  
  42. For Each tmpTable In Report.Database.Tables
  43. Set CPProperties = tmpTable.ConnectionProperties
  44. CPProperties.DeleteAll
  45. CPProperties.Add "Provider", "SQLOLEDB"
  46. CPProperties.Add "Data Source", mServerName
  47. CPProperties.Add "Initial Catalog", mBaseName
  48. CPProperties.Add "User ID", mUserID
  49. CPProperties.Add "Password", mPassword
  50. CPProperties.Add "Server Name", mServerName
  51. CPProperties.Add "Server Type", "OLEDB"
  52. CPProperties.Add "DataBase", mBaseName
  53. tmpTable.SetTableLocation tmpTable.Location, "", ""
  54. Next tmpTable
  55. For Each tmpSection In Report.Sections
  56. For Each tmpObject In tmpSection.ReportObjects
  57. If TypeName(tmpObject) = "ISubreportObject" Then
  58. Set tmpReport = tmpObject.OpenSubreport()
  59. For Each tmpTable In tmpReport.Database.Tables
  60. Set CPProperties = tmpTable.ConnectionProperties
  61. CPProperties.DeleteAll
  62. CPProperties.Add "Provider", "SQLOLEDB"
  63. CPProperties.Add "Data Source", mServerName
  64. CPProperties.Add "Initial Catalog", mBaseName
  65. CPProperties.Add "User ID", mUserID
  66. CPProperties.Add "Password", mPassword
  67. CPProperties.Add "Server Name", mServerName
  68. CPProperties.Add "Server Type", "OLEDB"
  69. CPProperties.Add "DataBase", mBaseName
  70. tmpTable.SetTableLocation tmpTable.Location, "", ""
  71. Next tmpTable
  72. End If
  73. Next tmpObject
  74. Next tmpSection
  75.  
  76. private void Form1_Load(object sender, EventArgs e)
  77. {
  78. ReportDocument rd = new ReportDocument();
  79. rd.Load("Report.rpt");
  80.  
  81. Explore(rd);
  82.  
  83. foreach (ReportDocument sr in rd.Subreports)
  84. {
  85. Explore(sr);
  86. }
  87. }
  88.  
  89. private void Explore(ReportDocument r)
  90. {
  91. foreach (IConnectionInfo con in r.DataSourceConnections)
  92. {
  93. if (!r.IsSubreport)
  94. Console.WriteLine("Main Report");
  95. else
  96. Console.WriteLine(r.Name);
  97. Console.WriteLine(con.DatabaseName);
  98. Console.WriteLine("-");
  99. }
  100. }
Add Comment
Please, Sign In to add comment