logo
small logo
  • Produkte
  • Shop
  • Support
  • Articles
  • Customer panel Support
    • en
    • pt
    • es
    • de
    • pl
    • JP
    • ZH
  • Home
  • /
  • Articles
  • /
  • Wie man gespeicherte Prozeduren mit mehreren Datensätzen als Ergebnis verwendet
  • Wahl der Top-Werte in einer Matrix

    22. April 2021

    Der Artikel ist aktuell bis Version 2022.1. FastReport.NET verfügt über ein großartiges Tool für die Anzeige

    read more
  • Berichterstellung mit PostgreSQL in einer .NET 5-Anwendung unter Debian 10

    25. Mai 2022

    Viele Anwender benötigen eine Lösung, die Berichte unter Linux-Systemen generiert und auch die Arbeit mit

    read more
  • Die Events PreviewControl.OnPrint und PreviewControl.OnExport

    1. Oktober 2020

    FastReport 2019.4 bietet eine Möglichkeit, die Events PreviewControl.OnPrint und PreviewControl.OnExport zu steuern, die direkt aufgerufen

    read more
  • Verbindung zu Elasticsearch

    10. November 2021

    FastReport .NET-, Core-, Mono-, OpenSource-Produkte können jetzt eine Verbindung zu Elasticsearch herstellen. Elasticsearch ist ein

    read more
  • Die FastReport Familie der Reportgeneratoren - kurze Overview

    23. März 2020

    Reporting – ein wichtiges Bereich, ohne es Aktivitäten im Alltagsleben richtig schwer vorzustellen. Bürokratie ist

    read more

Wie man gespeicherte Prozeduren mit mehreren Datensätzen als Ergebnis verwendet

8. Mai 2020

Beim Erstellen von Berichten haben wir es oft mit Datenbanken zu tun, die alles andere als ideal sind. Die verschiedenen "Features" lassen uns manchmal nicht weiterkommen. Wie kann man zum Beispiel einen Bericht erstellen, der auf mehreren Datensätzen basiert, die in den MS SQL gespeicherten Prozeduren resultieren? Wenn Sie eine Datenquelle im Bericht erstellen, können wir eine gespeicherte Prozedur in der SQL-Abfrage verwenden, aber nur für eine bestimmte Tabelle. Das heißt, es wird nur ein erster Satz von Daten genommen, die von der gespeicherten Prozedur zurückgegeben werden. Um mehrere Tabellen der Ergebnisse einer gespeicherten Prozedur zu generieren, müssen wir eine Datenquellen-Software im Code einer benutzerdefinierten Anwendung erstellen.

Sie müssen eine Datenbankverbindung erstellen, die die gespeicherte Prozedur ausführen und ihre Ergebnisse in das Dataset eintragen kann. Dann übertragen wir das Dataset in den Bericht und tragen die Datenquelle in den Bericht ein. Auf diese Weise erhalten wir im Designer die vorbereitete Datenquelle, wenn wir den Bericht erstellen. Wir können noch weiter gehen und uns programmatisch mit der Datenquelle des Berichts verbinden, so dass sie bereits im Datenbaum ist. Aber zunächst betrachten wir die erste Option mit dem einfachen Hinzufügen einer Datenquelle zum Bericht.

Nehmen wir an, Sie haben einige WinForms-Anwendungen, in denen Sie Berichte generieren. Fügen Sie eine Schaltfläche hinzu, um den Berichtseditor aufzurufen:

1
2
3
4
5
6
7
8
private void button1_Click(object sender, EventArgs e)
 {
 Report FReport = new Report();
 SqlConnection conn = new SqlConnection("Data Source=localhost;AttachDbFilename=;Initial Catalog=salesdb;Integrated Security=True;Persist Security Info=False;User ID=;Password=");
 DataSet data = GetDataSet(conn, "Test");
 FReport.RegisterData(data, "NorthWind");
 FReport.Design();
 }

Hier haben wir ein Report-Objekt erstellt, die MS SQL-Datenbank-Verbindungszeile bekannt gegeben, eine Report-Datenquelle erstellt und diese im Report registriert. Rufen Sie die Datenquelle "GetDataSet" wie folgt auf: 

1
2
3
4
5
6
7
8
9
10
11
public DataSet GetDataSet(SqlConnection connection, string storedProcName, params SqlParameter[] params)
 {
 var command = new SqlCommand(storedProcName, connection) { CommandType = CommandType.StoredProcedure };
 command.Parameters.AddRange(params);
 
 var result = new DataSet();
 var dataAdapter = new SqlDataAdapter(command);
 dataAdapter.Fill(result);
 
 return result;
 }

Diese Methode akzeptiert eine Verbindungszeichenfolge, den Namen der gespeicherten Prozedur und die möglichen Parameter für die gespeicherte Prozedur. In unserem Fall haben wir nichts übergeben. Nachdem Sie eine Verbindung zur Datenbank hergestellt haben, wird die gespeicherte Prozedur ausgeführt. Die Ergebnisse ihrer Arbeit werden im dataAdapter abgelegt.

An dieser Stelle hätten wir den Artikel beenden können. Der obige Code reicht aus, um eine Datenquelle in einem Bericht zu erstellen und zu registrieren, die Ihnen im Designer zur Verfügung steht, wenn Sie am Anfang des Berichtsobjekts erstellt bearbeiten.

Wenn der Berichtsdesigner geöffnet ist, sehen Sie eine leere Berichtsvorlage. Die Datenquellen müssen Sie in den Einstellungen wählen:

 

Wir können jedoch den Code verbessern und weitere Designaktionen bei der Auswahl der Datenquellen vermeiden. Das heißt, der Bericht wird eine zusätzliche Datenquelle erstellen. Für diesen Zweck werden wir den Drucktasten- Handler vervollständigen: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private void button1_Click(object sender, EventArgs e)
 {
 Report FReport = new Report();
 Config.DesignerSettings.DesignerLoaded += DesignerSettings_DesignerLoaded;
 SqlConnection conn = new SqlConnection("Data Source=localhost;AttachDbFilename=;Initial Catalog=salesdb;Integrated Security=True;Persist Security Info=False;User ID=;Password=");
 DataSet data = GetDataSet(conn, "Test");
 
 FReport.RegisterData(data, "NorthWind");
 // activate all data sources by default
 foreach (DataSourceBase source in FReport.Dictionary.DataSources)
 {
 source.Enabled = true;
 }
 FReport.Design();
 }

Wie Sie bemerkt haben, haben wir den Handler an das Download-Ereignis des Designers gebunden. Als nächstes binden wir alle Datenquellen des Berichts in die Schleife ein. Wir implementieren den Handler für das Download-Ereignis des Designers: 

1
2
3
4
 private void DesignerSettings_DesignerLoaded(object sender, EventArgs e)
 {
 (sender as Designer).cmdNew.CustomAction += new EventHandler(cmdNew_CustomAction);
 }

Wir leiten den Zeiger auf ein Ereignis des Berichtsdesigners weiter. Den Ereignishandler: 

1
2
3
4
5
6
7
8
9
10
 void cmdNew_CustomAction(object sender, EventArgs e)
 {
 Designer designer = sender as Designer;
 
 //StandardReportWizard wizard = new StandardReportWizard(); // you can use any wizard form package
 BlankReportWizard wizard = new BlankReportWizard();
 wizard.Run(designer);
 
 designer.SetModified(this, "EditData");
 }

Wir erstellen einen Assistenten zum Erstellen eines leeren Berichts.

Als Ergebnis erhalten wir beim Bearbeiten eines leeren Berichts die hinzugefügten Daten:

 

about product download buy
avatar
Dmitriy Fedyashov
Technical Writer
Fast Reports Team: Dmitriy Fedyashov - Technical Writer at Fast Reports
.NET FastReport SQL Stored procedures

Add comment
logo
  • 800-985-8986 (English, US)
  • +4930568373928 (German)
  • +55 19 98147-8148 (Portuguese)
  • info@fast-report.com
  • 901 N Pitt Str #325 Alexandria VA 22314
  • Shop
  • Download
  • Dokumentation
  • Referenzen
  • Informationen zur Deinstallation unserer Produkte
  • Ticket system
  • FAQ
  • Tutorial Video
  • Forum
  • Articles
  • Unsere Nachrichten
  • Presse über uns
  • Partner
  • Außergewöhnliche Lizenzierung
  • Kontakte

© 1998-2022 by Fast Reports Inc.

  • Datenschutz