Ich hatte eine Aufgabe, einige Crystal Reports neu zu schreiben. Ich habe die Originalberichte circa 1999 gefunden, sie im VS 2008 geöffnet und die Änderungen vorgenommen und gespeichert.Crystal Report mit Objektdatensatz
Nun verweisen sie auf eine Datenbank, die nicht mehr existiert. Also löschte ich diese Datenquelle und fügte eine .NET OBJECT Datenquelle hinzu. Ich habe alles verändert, damit die Felder nun diese neue Datenquelle betrachten.
Meine Absicht war es, den Bericht zu erstellen und während der Laufzeit eine Datentabelle zu übergeben. Diese Tabelle wird erstellt, indem ein erstellter Sproc ausgeführt wird.
Wenn ich es ausführe, bekomme ich die erste Seite des Berichts. Aber wenn ich versuche, Seiten oder Druck zu ändern, erhalte ich eine Fehlermeldung:
Logon failed. Details: crdb_adoplus : Object reference not set to an instance of an object. Error in File C:...\MR01 {8E5164A9-4B01-4019-81E6-87AED65A02DF}.rpt: Unable to connect: incorrect log on parameters
Hier mein Code:
<CR:CrystalReportViewer ID="theCrystalReportViewer" visible="false" runat="server" EnableDatabaseLogonPrompt="false" />
Dim theDataTable As DataTable = tbl
theDataTable.TableName = "tableName"
Dim oReport As New ReportDocument
Dim sRptPath As String = "...Reports\MR01.rpt"
oReport.Load(sRptPath)
oReport.SetDataSource(theDataTable)
'oReport.SetDatabaseLogon("####", "####", "####", "#####")
Dim c As ConnectionInfo = New ConnectionInfo()
c.ServerName = "####"
c.DatabaseName = "####"
c.Password = "####"
c.UserID = "####"
c.Type = ConnectionInfoType.SQL
c.IntegratedSecurity = False
For i As Integer = 0 To theCrystalReportViewer.LogOnInfo.Count - 1
theCrystalReportViewer.LogOnInfo(i).ConnectionInfo = c
Next
'theCrystalReportViewer.EnableDatabaseLogonPrompt = False
'theCrystalReportViewer.DisplayGroupTree = False
theCrystalReportViewer.ReportSource = oReport
theCrystalReportViewer.DataBind()
litMsg.Visible = False
theCrystalReportViewer.Visible = True
Danke, aber das ist nicht ganz das, was ich gesucht habe. Dieser Artikel zeigt, wie Sie ein benutzerdefiniertes Dataset manuell füllen und es an den Bericht senden. Ich möchte ein benutzerdefiniertes Dataset erstellen, das von einem Sproc ausgefüllt wird, und dieses an den Bericht senden. – user1310989
Welchen Zweck hat es, die Sproc-Ergebnisse über ein Dataset zu übergeben, statt den Bericht direkt mit dem Sproc zu verbinden? –