Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Aktualisieren des Datenanbieters von Crystal Reports

Sofern nicht jemand eine schnellere / einfachere Lösung hat, ist hier der Ansatz, den ich verwende, um Crystal Reports mit MS Access in Visual Studio 2010 zum Laufen zu bringen. Es ist etwas komplizierter als die normale Methode zur Auswahl einer Datenquelle, bietet aber mehr Kontrolle, ist eine Datenbank agnostisch und funktioniert dort, wo die anderen Methoden manchmal versagen (insbesondere bei MS Access nach meiner Erfahrung).

Ich werde den Prozess von Anfang bis Ende beschreiben, wie die Berichte funktionieren (weil der gesamte Prozess für andere nützlich sein kann), aber ich werde die Teile hervorheben, die für Sie nützlich sein könnten.

1) Installieren Sie Crystal Reports von der SAP-Site. Stellen Sie sicher, dass Sie die exe-Datei herunterladen, NICHT die msi-Datei (funktioniert nicht):

http://scn.sap.com/docs/DOC-7824

2) Ändern Sie das Zielframework Ihrer App in .Net Framework 4 (NICHT Client). Das Crystal-Zeug ist nicht im Basisprofil enthalten.

3) Fügen Sie einen Verweis auf die Crystal-Bibliotheken (Crystal Reports für .NET) hinzu

4) Fügen Sie ein Formular hinzu und platzieren Sie auf diesem Formular ein Crystal Report Viewer-Steuerelement (aus dem Berichtsabschnitt der Toolbox):

5) Fügen Sie ein CrystalReportDocument hinzu und weisen Sie es dem CrystalReportViewer-Steuerelement zu:

Um den Bericht tatsächlich mit Daten zu füllen, gehen Sie wie folgt vor:

1) Geben Sie Ihr Berichtsschema aus, indem Sie Code ausführen, der Ihre Berichtsdatentabelle (von einem Gateway) übernimmt und das Schema exportiert. Zum Beispiel:

<TestMethod()>
Public Sub SchemaTest()
    Dim dataSet As DataSet = StaticDataGateway.AccountingIncomeTotals
    dataSet.WriteXmlSchema("I:\Myschema.xml")
End Sub

Wenn Sie Ihre Berichte bereits erstellt haben, benötigen Sie dies wahrscheinlich nicht. Gleiches gilt, wenn Sie die XML-Datei von Hand schreiben können (einfach, sobald Sie eine Vorlage haben, mit der Sie arbeiten können)

2) Sie laden dies dann in Ihren Bericht, um die Felder zu erhalten, die Sie dann bearbeiten können, um Ihren Bericht zu erstellen. Klicken Sie dazu im Berichtsfeld-Explorer mit der rechten Maustaste auf Datenbankfelder:

3) Von hier aus wählen Sie Database Expert und wählen ADO.net (xml). Die logische Wahl von Access/Excel DAO funktioniert in VS 2010 überhaupt nicht. Wählen Sie Ihre Schemadatei aus und laden Sie sie, und doppelklicken Sie dann auf Table1, um die Ansicht Selected Tables zu füllen:

4) Nachdem Sie nun ein Schema geladen haben, können Sie Felder in der Felder-Dropdown-Liste sehen, die Sie per Drag-and-Drop auf Ihren Bericht ziehen können:

5) Schließlich laden Sie einen Datensatz in Ihren Bericht, indem Sie den Code im on load-Ereignis Ihres Formulars ausführen, auf dem Sie das reportviewer-Steuerelement platziert haben:

i) Stellen Sie sicher, dass Sie einen Datensatz (keine Datentabelle) von Ihrem Gateway (oder wo auch immer) ausgeben:

Public Shared Function AccountingIncomeTotals() As DataSet
    Dim dataSet As New DataSet
    Dim dataTable As DataTable = Database.GetDataTable(GetCommand(DBC.Reporting.SPs.AccountingIncomeTotals))
    dataSet.Tables.Add(dataTable)
    Return dataSet
End Function

ii) Weisen Sie es dann der Datenquelle im Bericht zu:

Private Sub AccountingIncomeTotals_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    AccountingIncomeTotalsReport1.SetDataSource(StaticDataGateway.AccountingIncomeTotals)
End Sub

Der obige Abschnitt wird für Sie wahrscheinlich besonders interessant sein, da er es Ihnen ermöglicht, die Datenquelle direkt dem Bericht zuzuweisen, ohne das Crystal Select DataSources-UI-Panel verwenden zu müssen.

Es ist noch etwas erforderlich, Sie müssen "useLegacyV2RuntimeActivationPolicy" zur Datei "app.config" hinzufügen:

http:/ /www.codeproject.com/Questions/390643/Error-When-use-of-crystal-report-sap-crystal-13-an

Ich hoffe, das hilft, tut mir leid, dass es so kompliziert ist, wenn Sie Fragen haben, fragen Sie bitte