Freigeben über


Exemplarische Vorgehensweise: Erstellen eines ReportViewer-Berichts

In dieser Anleitung wird erläutert, wie ein einfacher Tabellenbericht in einem Microsoft Visual Studio 2008-Windows-Anwendungsprojekt auf Grundlage der AdventureWorks-Beispieldatenbank erstellt wird. Sie fügen Ihrem Projekt eine Berichtsvorlage hinzu, legen die Verbindungsinformationen für die AdventureWorks-Datenbank fest, definieren eine Abfrage, fügen einen Tabellendatenbereich hinzu und fügen einem Windows-Formular ein Windows Forms-Steuerelement von ReportViewer hinzu, damit der Bericht von Benutzern der Anwendung angezeigt werden kann.

Erforderliche Komponenten

Um diese Anleitung anzuwenden, müssen Sie über Zugriff auf die AdventureWorks-Beispieldatenbank für SQL Server 2005 verfügen. Wenn Sie eine ältere Version von AdventureWorks verwenden, schlägt die Abfrage fehl. Weitere Informationen zum Erhalten der SQL Server 2005-Version von AdventureWorks finden Sie unter Exemplarische Vorgehensweise: Installieren der AdventureWorks-Datenbank.

In dieser Anleitung wird davon ausgegangen, dass Sie mit Transaction-SQL-Abfragen und dem DataSet-Objekt sowie dem DataTable-Objekt von ADO.NET vertraut sind.

So erstellen Sie ein neues Windows-Anwendungsprojekt

  1. Öffnen Sie Visual Studio. Zeigen Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt.

  2. Wählen Sie im Bereich Projekttypen die Option Visual Basic aus.

  3. Wählen Sie im Bereich Vorlagen die Option Windows-Anwendung, um eine Anwendung auf Grundlage von Microsoft Windows zu erstellen.

  4. Geben Sie in das Feld Name den Wert SimpleReport ein.

  5. Geben Sie im Feld Speicherort das Verzeichnis ein, in dem das Projekt gespeichert werden soll, oder klicken Sie auf Durchsuchen, um zu dem Verzeichnis zu navigieren.

    Der Windows Forms-Designer wird mit Form1 des erstellten Projekts angezeigt.

  6. Klicken Sie auf das Formular. Wählen Sie im Menü Ansicht die Option Eigenschaftenfenster aus. Öffnen Sie die Eigenschaft Size, um Breite und Höhe anzuzeigen. Legen Sie die Breite auf 500 Pixel fest.

So definieren Sie eine Datenquellenverbindung und eine Datentabelle

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt mit dem Namen SimpleReport (nicht auf die Projektmappe), zeigen Sie auf Hinzufügen, und wählen Sie Neues Element aus. Wenn das Fenster Projektmappen-Explorer nicht angezeigt wird, klicken Sie im Menü Ansicht auf Projektmappen-Explorer.

  2. Klicken Sie im Dialogfeld Neues Element hinzufügen auf DataSet. Geben Sie einen Namen für das Dataset ein, und klicken Sie auf Hinzufügen. Der Standardname ist DataSet1.xsd.

    Hiermit wird dem Projekt eine neue XSD-Datei hinzugefügt und der DataSet-Designer geöffnet.

  3. Klicken Sie im Menü Ansicht auf Designer. Öffnen Sie die Toolbox, und ziehen Sie ein TableAdapter-Steuerelement auf die DataSet-Entwurfsoberfläche.

    Dadurch wird der TableAdapter-Konfigurations-Assistent geöffnet.

  4. Klicken Sie auf der Seite Wählen Sie Ihre Datenverbindung aus auf Neue Verbindung.

  5. Führen Sie auf der Seite Verbindung hinzufügen die folgenden Schritte aus:

    • Wählen Sie im Dialogfeld Datenquelle die Option Microsoft SQL Server.

    • Geben Sie in das Feld Servername den Server ein, auf dem sich die AdventureWorks-Datenbank befindet.

      Die standardmäßige SQL Server Express-Instanz ist (local)\sqlexpress.

    • Klicken Sie in der Dropdownliste auf AdventureWorks.

    • Klicken Sie auf OK, um zum Assistenten zurückzukehren, und klicken Sie dann auf Weiter.

  6. Geben Sie auf der Seite Verbindungszeichenfolge in der Anwendungskonfigurationsdatei speichern den Namen der Verbindungszeichenfolge ein, oder akzeptieren Sie den Standardnamen AdventureWorksConnectionString. Klicken Sie auf Weiter.

  7. Wählen Sie auf der Seite Wählen Sie einen Befehlstyp aus die Option SQL-Anweisungen verwenden aus, und klicken Sie dann auf Weiter.

  8. Geben Sie auf der Seite SQL-Anweisung eingeben die folgende Transact-SQL-Abfrage zum Abrufen von Vertriebsdaten aus der AdventureWorks-Datenbank ein, und klicken Sie dann auf Fertig stellen:

    SELECT  S.OrderDate, S.SalesOrderNumber, S.TotalDue AS TotalSales, 
            C.FirstName, C.LastName
    FROM    HumanResources.Employee E INNER JOIN
            Person.Contact C ON E.ContactID = C.ContactID INNER JOIN
            Sales.SalesOrderHeader S ON E.EmployeeID = S.SalesPersonID
    

    Zum Erstellen der Abfrage mit dem Abfrage-Generator können Sie auch auf die Schaltfläche Abfrage-Generator klicken und die Abfrage anschließend mit der Schaltfläche Abfrage ausführen überprüfen.

    Der Dataset-Designer zeigt nun die DataTable-Definition für DataTable1 mit Feldbezeichnungen an, die aus den Spalten und Spaltenaliasen der Abfrage erstellt wurden (OrderDate, SalesOrderNumber, TotalSales, FirstName und LastName). Sie verwenden diese Felder im Fenster Datenquellen zum Binden von Daten an die Berichtdatenbereiche.

    NoteHinweis

    Klicken Sie mit der rechten Maustaste auf die Kopfzeile DataTable1 oder die Kopfzeile DataTable1TableAdapter auf der Seite DataSet-Designer, wenn Sie die Felder in der Datentabelle ändern möchten. Wählen Sie Konfigurieren aus, um den TableAdapter-Konfigurations-Assistenten neu zu starten.

So fügen Sie eine neue Berichtsdefinitionsdatei hinzu

  1. Zeigen Sie im Menü Projekt auf die Einträge Neues Element und Hinzufügen.

  2. Klicken Sie im Dialogfeld Neues Element hinzufügen auf Bericht.

  3. Geben Sie unter Name den Wert Sales Orders.rdlc ein, und klicken Sie auf Hinzufügen, um eine grafische Entwurfsoberfläche zu öffnen.

    Die grafische Entwurfsoberfläche ist ein Teil der Berichts-Designer-Komponente von Visual Studio 2008.

So fügen Sie dem Berichtslayout eine Tabelle hinzu

  1. Wenn sich Sales Orders.rdlc im grafischen Entwurfsmodus befindet, wählen Sie im Menü Ansicht die Toolbox aus.

    Die Toolbox wird geöffnet.

  2. Klicken Sie im Abschnitt Data der Toolbox auf Tabelle, klicken Sie dann auf die Berichtsentwurfsoberfläche.

    Vom Berichts-Designer wird eine Tabelle mit drei Spalten angezeigt, die sich über die gesamte Breite des Berichts erstreckt.

  3. Klicken Sie auf die Tabelle, sodass die Spalten- und Zeilenziehpunkte über und neben der Tabelle angezeigt werden.

  4. Klicken Sie mit der rechten Maustaste in der ersten Spalte auf den Ziehpunkt, und klicken Sie dann auf Spalte links einfügen.

  5. Öffnen Sie im Eigenschaftenfenster für table1 den Knoten Größe. Standardmäßig wird das Eigenschaftenfenster unter dem Projektmappen-Explorer angedockt. Sie können dieses Fenster auch im Menü Ansicht öffnen, indem Sie das Eigenschaftenfenster auswählen.

  6. Legen Sie die Eigenschaft Breite des Knotens Größe auf 4.8 in fest. Damit werden sowohl die Tabellenbreite als auch die Größe der Spalten auf die gleiche Breite für die Anzeige auf dem Formular festgelegt.

  7. Klicken Sie im Berichts-Designer auf die Entwurfsoberfläche.

  8. Öffnen Sie im Eigenschaftenfenster den Knoten Größe, und legen Sie die Breite auf 5 in fest.

  9. Zum Erweitern und Anzeigen der Datenfelder klicken Sie im Datenquellenfenster auf den Knoten DataTable1. Führen Sie dann die folgenden Schritte aus:

    • Ziehen Sie das Feld LastName vom Fenster Datenquellen auf die mittlere Zeile (Detailzeile) der ersten Spalte in der Tabelle.

    • Wenn Sie das Feld auf der mittleren Zelle ablegen, laufen zwei Vorgänge ab.

      Als erstes enthält die Detailzeile folgenden Text: "=Fields!LastName.Value". Dieser Text ist ein Feldausdruck, der Datenwerte für das Feld LastName angibt. Felder, die Sie der Zeile Detail hinzufügen, werden immer als Ausdruck angegeben.

      Zweitens wird automatisch in die erste Zeile ein Wert für den Spaltenheader eingefügt, und zwar direkt über dem Feldausdruck. Standardmäßig wird die Spalte aus dem Feldnamen generiert. Bei Feldnamen, die die Pascal-Schreibweise verwenden, werden die Wörter, die mit Großbuchstaben beginnen, in den Spaltennamen durch Leerzeichen getrennt. Zum Beispiel wird LastName zu Last Name.

    • Ziehen Sie das Feld OrderDate aus dem Fenster Datenquellen auf die mittlere Zeile (Detailzeile) der zweiten Spalte in der Tabelle.

    • Ziehen Sie das Feld SalesOrderNumber aus dem Fenster Datenquellen auf die mittlere Zeile (Detailzeile) der dritten Spalte in der Tabelle.

    • Ziehen Sie das Feld TotalSales aus dem Fenster Datenquellen auf die mittlere Zeile (Detailzeile) der letzte Spalte in der Tabelle.

    Die folgende Abbildung zeigt einen Datenbereich einer Tabelle, der mit folgenden Feldern aufgefüllt wurde: LastName, OrderDate, SalesOrderNumber und TotalSales.

    Standardmäßige Berichtsdefinitionstabelle

So fügen Sie dem Formular ein ReportViewer-Steuerelement hinzu

  1. Klicken Sie im Projektmappen-Explorer auf Form1.vb.

  2. Klicken Sie im Menü Ansicht auf Designer.

  3. Ziehen Sie das ReportViewer-Steuerelement aus dem Bereich Data der Toolbox auf das Formular.

  4. Klicken Sie auf das Formular. Öffnen Sie im Eigenschaftenfenster den Eintrag Größe. Legen Sie nach Bedarf die Eigenschaften von Breite und Höhe fest.

  5. Öffnen Sie den Smarttagbereich des ReportViewer-Steuerelements, indem Sie auf das Dreieck in der rechten oberen Ecke des Steuerelements klicken. Klicken Sie in der Dropdownliste auf Bericht auswählen, und wählen Sie Sales Order.rdlc aus.

  6. Klicken Sie im Bereich Smarttags auf In übergeordnetem Container andocken.

    Im letzten Teil dieser Anleitung können Sie nun die Anwendung erstellen und den Bericht im Formular jederzeit anzeigen. Wenn Sie sehen möchten, wie sich die inkrementellen Änderungen Ihres Berichtsentwurfs auf den endgültigen Bericht auswirken, erstellen Sie bei jeder der folgenden Prozeduren als letzten Schritt den Bericht bzw. zeigen sie ihn an.

  7. (Optional) Drücken Sie F5, um die Anwendung zu erstellen und den Bericht im Formular anzuzeigen.

    Die folgende Abbildung zeigt die aktuelle, in Ihrem Formular gerenderte Berichtsdefinition. Sie sehen jetzt eine Kopfzeile, eine Detailzeile für jede Zeile in der Datentabelle und eine Fußzeile auf der letzten Seite des Berichts, jeweils im Standardformat dargestellt.

    Standardtabelle im gerenderten Bericht

So formatieren Sie ein Datumsfeld

  1. Klicken Sie mit der rechten Maustaste auf die Zelle mit dem Feldausdruck OrderDate, und klicken Sie dann auf Eigenschaften. Das Dialogfeld Textfeldeigenschaften wird angezeigt.

  2. Wählen Sie die Registerkarte Format aus, und klicken Sie auf die Schaltfläche zum Durchsuchen (), um das Dialogfeld Format auswählen zu öffnen.

    Wählen Sie im Feld Format den Eintrag Standard aus, wählen Sie Datum aus, und wählen Sie anschließend ein Datumsformat aus.

  3. Klicken Sie auf OK, um das Dialogfeld Format auswählen zu schließen, und klicken Sie noch einmal auf OK, um das Dialogfeld Textfeldeigenschaften zu schließen.

    Dialogfeld zum Auswählen des Datumsformats

  4. (Optional) Drücken Sie F5, um die Anwendung zu erstellen und den Bericht anzuzeigen. In diesem Fall wird die Datumsspalte mit der Formatierung angezeigt, die Sie gerade angewendet haben.

So formatieren Sie ein Währungsfeld

  1. Klicken Sie mit der rechten Maustaste auf die Zelle mit dem Feldausdruck TotalSales, und klicken Sie dann auf Eigenschaften.

  2. Wählen Sie die Registerkarte Format aus, und klicken Sie auf die Schaltfläche zum Durchsuchen (), um das Dialogfeld Format auswählen zu öffnen.

  3. Wählen Sie im Feld Format den Eintrag Standard aus, wählen Sie dann Währung aus, und wählen Sie anschließend ein Währungsformat aus.

  4. Bestätigen Sie mit OK, und schließen Sie dann das Dialogfeld Textfeldeigenschaften, indem Sie erneut auf OK klicken.

    Dialogfeld zum Auswählen des Währungsformats

  5. (Optional) Drücken Sie F5, um die Anwendung zu erstellen und den Bericht anzuzeigen. In diesem Fall werden Sie die Spaltenwerte Total Sales mit einem aktuellen Währungsformat angezeigt.

So formatieren Sie Tabellenkopfzeilen

  1. Klicken Sie auf die Tabelle, sodass die Spalten- und Zeilenziehpunkte über und neben der Tabelle angezeigt werden.

    NoteHinweis

    Ziehpunkte sind graue Felder, die über und neben der Tabelle angezeigt werden. Mit Ziehpunkten können Sie verschiedene Aktionen in Bezug auf Spalten, Zeilen und die Tabelle ausführen. Die Ziehpunkte, die am oberen Rand der Tabelle angezeigt werden, werden als Spaltenziehpunkte bezeichnet. Die Ziehpunkte, die an der Seite der Tabelle angezeigt werden, werden Zeilenziehpunkte genannt. Der Ziehpunkt an den Stellen, an denen sich Spalten- und Zeilenziehpunkte treffen, wird als Eckziehpunkt bezeichnet. Ein Beispiel zu Tabellenziehpunkten finden Sie unter Hinzufügen von Tabellendatenbereichen (Visual Studio-Berichts-Designer).

  2. Wählen Sie nun die Zeilenziehpunkte für die erste Zeile, die die Kopfzeilenbezeichnungen der Spalten enthält, und klicken Sie dann auf Fett.

  3. Klicken Sie auf die Kopfzeile der Tabelle und dann auf Hintergrundfarbe. Klicken Sie auf die Registerkarte Web, und wählen Sie MistyRose aus. Klicken Sie auf OK.

  4. (Optional) Klicken Sie F5, um die Anwendung zu erstellen und den Bericht anzuzeigen. Die folgende Abbildung zeigt den formatierten Bericht.

    Ansicht der Standardtabelle mit Formatierung

So fügen Sie einem Tabellenbericht eine Gruppe hinzu

  1. Klicken Sie auf die Tabelle, sodass die Spalten- und Zeilenziehpunkte über und neben der Tabelle angezeigt werden.

  2. Klicken Sie mit der rechten Maustaste auf den Ziehpunkt einer beliebigen Zeile, und klicken Sie dann auf Gruppe einfügen.

  3. Wählen Sie auf der Registerkarte Allgemein im Feld Gruppieren nach die Option =Fields!LastName.Value in der ersten Zeile und =Fields!FirstName.Value in der zweiten Zeile aus. Dadurch werden die Daten nach Vertriebsmitarbeiternamen gruppiert. Beachten Sie, dass Sie Daten nach Feldern gruppieren können, die nicht im Tabellendatenbereich verwendet werden, sondern über die DataTable1-Felder zur Verfügung gestellt werden.

    Registerkarte "Allgemein" und Seite "Gruppierungs- und Sortierungseigenschaften"

  4. Klicken Sie auf OK.

    Der Tabelle werden eine Gruppenkopfzeile und eine Gruppenfußzeile hinzugefügt.

So fassen Sie Daten in einer Gruppe zusammen

  1. Klicken Sie auf die Gruppenkopfzeile und dann auf Hintergrundfarbe. Wählen Sie die Registerkarte Web aus, und wählen Sie LightCyan aus. Klicken Sie auf OK.

  2. Ersetzen Sie den Eintrag TotalSales, der in jeder Zeile wiederholt wird, mit einem Ausdruck der Gruppenkopfzeile, die eine Gesamtsumme für die Gruppe bildet.

    1. Klicken Sie mit der rechten Maustaste auf die Gruppenkopfzeile für Total Sales, und wählen Sie Eigenschaften aus. Das Dialogfeld Textfeldeigenschaften wird geöffnet.

    2. Kopieren Sie den unten stehenden Text, und fügen Sie ihn in die Dropdownliste Wert ein.

      =Sum(Fields!TotalSales.Value)
      
    3. Übernehmen Sie eine Währungsformatierung für dieses Textfeld.

  3. Ersetzen Sie den Namen, der in jeder Zeile wiederholt wird, mit einem Ausdruck der Gruppenkopfzeile, der sich über zwei Zeilen erstreckt. Die erste Zeile enthält Vor- und Nachnamen. Die zweite Zeile enthält die Anzahl der Verkäufe, die ungleich NULL waren.

    1. Wählen Sie den Ausdruck in der Detailzeile Last Name aus, und löschen Sie ihn.

    2. Klicken Sie mit der rechten Maustaste in die Gruppenkopfzeile für Nachnamen, und wählen Sie Ausdruck aus. Kopieren Sie den folgenden Text, und fügen Sie ihn in den Dialogfeldbereich Ausdruck bearbeiten ein.

      Fields!FirstName.Value + " " + Fields!LastName.Value + ": " + vbCrLf + Count(Fields!SalesOrderNumber.Value).ToString()
      

    Die folgende Abbildung zeigt den Ausdrucks-Editor nach diesem Schritt an.

    Dialogfeld "Ausdruck bearbeiten" für das Textfeld "Gruppe"

  4. (Optional) Drücken Sie F5, um die Anwendung zu erstellen und den Bericht anzuzeigen. Die unten stehende Abbildung zeigt die Tabellenzeilen jeweils nach dem Namen des Verkäufers gruppiert. Jede Gruppenkopfzeile fasst die Detailzeilen der Gruppe zusammen und zeigt den Namen des Verkäufers, die Anzahl der Verkäufe und die Gesamtmenge der Verkäufe an.

    Ansicht der Tabellengruppe in einem verarbeiteten Bericht

So sortieren Sie Gruppen in einem Tabellenbericht

  1. Wählen Sie den Tabellendatenbereich aus, und öffnen Sie Tabelleneigenschaften.

  2. Klicken Sie auf die Registerkarte Gruppen. Die einzige definierte Gruppe, table1_Group1, wird automatisch ausgewählt. Klicken Sie auf Bearbeiten. Das Dialogfeld Gruppieren und sortieren wird geöffnet.

    Überprüfen Sie, dass es sich dabei um das Dialogfeld Gruppierungs- und Sortierungseigenschaften, und nicht um Tabelleneigenschaften handelt. Mit der Registerkarte Sortierung des Dialogfelds Tabelleneigenschaften wird festgelegt, wie die Detailzeilen, und nicht die Gruppen, sortiert werden. Im nächsten Arbeitsschritt legen Sie Detailsortierung fest.

  3. Klicken Sie auf die Registerkarte Sortierung. Wählen Sie in der Dropdownliste im Feld Sortieren nach den Eintrag <Ausdruck...> aus. Geben Sie im Feld Ausdruck bearbeiten den Ausdruck ein, nach dem Sie sortieren möchten. Beispiel:

    =Count(Fields!SalesOrderNumber.Value)

  4. Klicken Sie auf OK.

    Dialogfeld zum Gruppieren und Sortieren

  5. (Optional) Drücken Sie F5, um die Anwendung zu erstellen und den Bericht anzuzeigen. Der Bericht wird jetzt nach der Anzahl der Verkäufe der einzelnen Verkäufer sortiert.

    Ansicht der sortierten Tabellengruppe

So sortieren Sie in einem Tabellenbericht die Detailzeilen innerhalb einer Gruppe

  1. Klicken Sie auf die Tabelle, sodass die Spalten- und Zeilenziehpunkte über und neben der Tabelle angezeigt werden.

  2. Klicken Sie mit der rechten Maustaste auf den Eckziehpunkt, und klicken Sie dann auf Eigenschaften. Das Dialogfeld Tabelleneigenschaften wird geöffnet.

    NoteHinweis

    Der Eckziehpunkt befindet sich an der Stelle, an der sich Spalten- und Zeilenziehpunkte treffen.

  3. Wählen Sie auf der Registerkarte Sortierung im Feld Sortieren nach die Option =Fields!TotalSold.Value aus. Wählen Sie im Feld Richtung die Option Absteigend aus. Dadurch werden die Detaildaten nach der verkauften Menge beginnend mit dem höchsten Werten sortiert.

  4. Klicken Sie auf OK.

    Das Dialogfeld Tabelleneigenschaften sollte ungefähr der folgenden Abbildung entsprechen.

    Dialogfeld "Tabelleneigenschaften", Registerkarte "Sortierung"

  5. (Optional) Drücken Sie F5, um die Anwendung zu erstellen und den Bericht anzuzeigen. Die folgende Abbildung zeigt Seite 2 des Ergebnisberichts, in dem Gruppen mit mehr als einer Detailzeile angezeigt werden.

    Ansicht der gruppierten und auf einer Detailzeile sortierten Berichtsdaten

So fügen Sie zusammenfassende Daten der Fußzeile in einem Tabellenbericht hinzu

  1. Wählen Sie in der Fußzeile der Tabelle die Zellen Verkaufsreihenfolge und Total Sales aus. Klicken mit der rechten Maustaste auf die markierten Zellen, und klicken Sie dann auf Zellen zusammenführen.

    Dadurch steht mehr Platz zur Verfügung, um die Summe aller Verkäufe für die Tabelle zu formatieren.

  2. Klicken Sie mit der rechten Maustaste in die einzelne, zusammengeführte Zelle, und wählen Sie Eigenschaften aus.

  3. Geben Sie in der Dropdownliste Wert den folgenden Ausdruck ein:

    =Sum(Fields!TotalSales.Value)

  4. Übernehmen Sie Währungsformatierung für die zusammengeführte Zelle.

  5. Klicken Sie in die Textfeldzelle neben der zusammengeführten Zelle, und erstellen Sie eine Bezeichnung. Geben Sie beispielsweise Total Sold: ein. Beachten Sie, dass dies kein Ausdruck, sondern nur Text ist.

  6. (Optional) Legen Sie die Hintergrundfarbe der Fußzeile passend zur Kopfzeile fest.

    Die folgende Abbildung zeigt die Tabellendefinition.

    Berichtsdefinitionstabelle mit Fußzeile

  7. (Optional) Drücken Sie F5, um die Anwendung zu erstellen und den Bericht anzuzeigen. Klicken Sie im gerenderten Bericht auf der Symbolleiste des Berichts auf die Schaltfläche LastPage, um zur letzten Seite des Berichts zu navigieren. Wenn Sie einen Bildlauf nach unten durchführen, sehen Sie den Wert aller Verkäufe.

    Ansicht einer Tabelle mit Fußzeilenergebnissen

Siehe auch

Verweis

Microsoft.Reporting.WinForms.ReportViewer.Drillthrough
Microsoft.Reporting.WinForms.LocalReport.SubreportProcessing
Microsoft.Reporting.WebForms.ReportViewer.Drillthrough
Microsoft.Reporting.WebForms.LocalReport.SubreportProcessing

Konzepte

Verwenden des Smarttagbereichs ReportViewer-Aufgaben

Weitere Ressourcen

Beispiele und Anleitungen