Crystal Reports Reportviewer - Set Datasource Dynamisch Funktioniert Nicht :argh:

Ich bin mit CR XI, und den Zugriff .RPT-Dateien durch einen ReportViewer in meinem ASP.NET Seiten.

Ich habe bereits folgenden code, der angenommen wird, setzen Sie die Berichts-Datenquelle dynamisch.

            rptSP = New ReportDocument
            Dim rptPath As String = Request.QueryString("report")
            rptSP.Load(rptPath.ToString, 0)
            Dim SConn As New System.Data.SqlClient.SqlConnectionStringBuilder(ConfigurationManager.ConnectionStrings("MyConnectionString").ConnectionString)
            rptSP.DataSourceConnections(SConn.DataSource, SConn.InitialCatalog).SetConnection(SConn.DataSource, SConn.InitialCatalog, SConn.UserID, SConn.Password)
            Dim myConnectionInfo As ConnectionInfo = New ConnectionInfo
            myConnectionInfo.ServerName = SConn.DataSource
            myConnectionInfo.DatabaseName = SConn.InitialCatalog
            myConnectionInfo.UserID = SConn.UserID
            myConnectionInfo.Password = SConn.Password
            'Two new methods to loop through all objects and tables contained in the requested report and set
            'login credentials for each object and table.  
            SetDBLogonForReport(myConnectionInfo, rptSP)
            SetDBLogonForSubreports(myConnectionInfo, rptSP)


            Me.CrystalReportViewer1.ReportSource = rptSP

Aber wenn ich in jede .RPT-Datei, und öffnen Sie die Datenbank-Experte Abschnitt, es gibt offensichtlich noch servernames hardcoded drin, und der oben aufgeführte code scheint nicht in der Lage sein zu ändern die servernames, die sind hardcoded gibt.

Ich sage dies, weil ich Ausbildung und Produktion-Umgebungen. Wenn die .Die RPT-Datei ist fest mit meinem Produktionsserver, und ich öffne es auf mein training server mit dem code oben (und im web.config ist in der Trainings-server im connection string), bekomme ich die ol:

Objektverweis nicht auf eine Instanz eines Objekts.

Und dann wenn ich gehe in das .RPT-Datei, und ändern Sie über die datasource auf dem Trainings-server, und versuchen, es wieder öffnen, es funktioniert gut. Warum nicht den obigen code überschreiben .RPT-Dateien datasource?

Wie kann ich vermeiden, dass eröffnen jede .RPT und ändern Sie die datasource bei der Migration von reports von server zu server? Gibt es eine Einstellung in der .RPT-Datei fehlt mir, oder was?

InformationsquelleAutor Albert | 2010-03-25
Schreibe einen Kommentar