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?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Rufen Sie die Crystal-Methode
ApplyLogOnInfo
? Dies ist ein code-snippet, das ich verwenden, das funktioniert auch.Müssten Sie ändern
report
zurptSP
Dank
Ich weiß, es mag seltsam klingen, aber erlebt habe ich solche Probleme mit Parametern mit berichten. Ich musste den parameter-Objekt vor der Einstellung von Ihnen.
Könnte dies bedeuten, dass Sie vielleicht brauchen, um Ihren Bericht zu Ihrer Quelle, bevor Sie es konfigurieren. Haben Sie jemals versucht?
Ich habe das exakt gleiche Problem mit einem C# - code .
Ich habe auch einen DEV und PROD-Umgebung und die datasource ist fest auf DEV.
Der interessante Teil ist, habe ich 5 Berichte, dass die Arbeit mit dem genau gleichen code und 3 nicht.
Ich dachte, vielleicht "Datenbank überprüfen" und " Datenbank aktualisieren würde den trick tun, wie es zu halten ist DB synchron und so ist es nicht update datasource-aber ich habe das getan, und noch meine drei Berichte funktionieren nicht.
Nicht so sicher, ob es den code nun da meine 5 Berichte mit den genauen code arbeiten.