Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>You'll find hereafter the procedure I use (I simplified it on the fly, suppressing our own objects and global variables). This procedure allows to redirect a report from an original connection used at development time to the active SQL server. It is written in VB and uses 2 main objects:</p> <ol> <li>The original report object opened through an instance of crystal report</li> <li>An ADODB connection being the active connection (called P_currentConnection) to the current SQL server</li> </ol> <p>This function (could be also a sub) is called before viewing/printing the report object in the application. It can be used when distributing reports among replicated databases where users, depending on their location, connect to different servers/databases.</p> <pre><code>Public Function connectReportToDatabase( _ P_report As CRAXDRT.Report) Dim table As CRAXDRT.DatabaseTable, _ For Each table In P_report.Database.tables If table.DllName &lt;&gt; "crdb_ado.dll" Then table.DllName = "crdb_ado.dll" End If table.ConnectionProperties.DeleteAll table.ConnectionProperties.Add "Provider", P_currentConnection.Provider table.ConnectionProperties.Add "Data source", P_currentConnection.Properties("Data source").Value table.ConnectionProperties.Add "Database", P_currentConnection.DefaultDatabase table.ConnectionProperties.Add "Integrated security", P_currentConnection.Properties("Integrated security").Value table.ConnectionProperties.Add "Persist Security Info", P_currentConnection.Properties("Persist Security Info").Value table.ConnectionProperties.Add "Initial Catalog", P_currentConnection.Properties("Initial Catalog").Value table.SetTableLocation table.location, "", P_currentConnection.ConnectionString table.TestConnectivity Next table </code></pre> <p>It can be called with a procedure such as:</p> <pre><code>Dim crystal As CRAXDRT.Application, _ m_report as CRAXDRT.report Set crystal = New CRAXDRT.Application Set m_rapport = crystal.OpenReport(nameOfTheReport &amp; ".rpt") connectreportToDatabase(m_report) </code></pre> <p>In case your report includes subreports, You might also have to redirect them to the active connection. In this case, you'll have to browse all objects in your report, check the ones that are of the report type and redirect them to the new connection. I am sure you'll have fun adding the corresponding extra lines to this original procedure.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload