Reporting Services Datasets mit Parametern

Ein Dataset, das als Datenquelle eines Berichts der Reporting Services dient, ist selten statisch aufgebaut – also so, dass es immer alle Daten einer Tabelle oder Abfrage liefert oder einen bestimmten Teil. Stattdessen sollen Berichte oft Daten liefern, die sich auf einen bestimmten Zeitraum beziehen, auf einen bestimmten Kunden oder auch auf bestimmte Artikel oder Kategorien. In den bisherigen Artikeln haben wir erläutert, wie Sie Berichte auf Basis statischer Datenquellen erstellen. Der vorliegende Artikel fügt die Verwendung von Parametern mit hinzu, damit der Benutzer genau festlegen kann, welche Daten der von ihm gewählte Bericht liefern soll.

Vorbereitung für diesen Artikel

Da wir uns explizit um den Einsatz von Parametern kümmern wollen, gehen wir von einem Visual Studio-Projekt des Typs Berichtsserverprojekt namens DatasetMitParametern aus.

Diesem haben wir eine freigegebene Datenquelle namens AdventureWorks auf Basis der SQL Server-Datenbank AdventureWorksLT2019 hinzugefügt. Wo Sie diese Beispieldatenbank finden und wie Sie diese installieren, erfahren Sie im Artikel AdventureWorks: Schnelle Beispieldatenbank (www.datenbankentwickler.net/254).

Dataset anlegen

Das Dataset für diesen Bericht legen wir als eingebettetes Dataset an. Damit erhalten wir zum Beispiel den Vorteil, dass die in diesem Dataset definierten Parameter direkt vom Bericht als solche erkannt werden.

Bericht anlegen

Nun legen wir einen neuen Bericht namens SalesPerProduct.rdl an. Diesem weisen wir die zuvor angelegte freigegebene Datenquelle AdventureWorks.rds als Datenquelle zu und geben auch der neuen eingebetteten Datenquelle den Namen AdventureWorks.

Dann legen wir für den Bericht ein neues eingebettetes Dataset namens ProductsSalesOrders an (siehe Bild 1). Das Dataset verwendet einige Felder der drei Tabellen Product, SalesOrderDetail und SalesOrderHeader als Datenquelle. Damit haben wir ausreichend Daten zum Demonstrieren der Parameter-Funktionen der Reporting Services.

Abfrage für das Dataset ProductsSalesOrders

Bild 1: Abfrage für das Dataset ProductsSalesOrders

Der Bereich Berichtsdaten sieht anschließend wie in Bild 2 aus.

Daten für den Bericht

Bild 2: Daten für den Bericht

Nun blenden wir die Toolbox ein und fügen dem Bericht ein Tabelle-Element hinzu. Dann wechseln wir wieder zum Berichtsdaten-Bereich und ziehen einige Felder in die Tabelle, sodass diese wie in Bild 3 aussieht.

Berichtsentwurf

Bild 3: Berichtsentwurf

Ein Wechsel in die Vorschauansicht liefert eine Liste der einzelnen Bestellpositionen (siehe Bild 4). Damit haben wir alles zusammen, um die angezeigten Datensätze nach verschiedenen Kriterien mit noch zu ermittelnden Parameterwerten zu filtern.

Ausgabe der einzelnen Bestellpositionen

Bild 4: Ausgabe der einzelnen Bestellpositionen

Parameter zum Dataset hinzufügen

Der erste Schritt ist das Hinzufügen des Parameters zum Dataset. Dazu öffnen wir das Dataset per Doppelklick auf seinen Eintrag im Bereich Berichtsdaten.

Im Bereich Abfrage des Dialogs Dataseteigenschaften finden wir im Feld Abfrage die SQL-Abfrage. Diese erweitern wir wie in Bild 5 um die folgende WHERE-Klausel:

Integrieren des Parameters im Abfrageausdruck

Bild 5: Integrieren des Parameters im Abfrageausdruck

WHERE SalesOrderDetail.ProductID = @ProductID

Um die Funktionsweise dieses Parameters auszuprobieren, klicken Sie auf die Schaltfläche Abfrage-Designer… und öffnen so den Dialog Abfrage-Designer. Hier finden Sie die neu hinzugefügte WHERE-Klausel ebenfalls vor. Um diese auszuprobieren, betätigen Sie die Schaltfläche mit dem roten Ausrufezeichen. Dadurch erscheint der Dialog Abfrageparameter (siehe Bild 6). Hier geben Sie den Wert ein, nach dem das Feld ProductID gefiltert werden soll, zum Beispiel 991.

Eingabe des Parameterwertes

Bild 6: Eingabe des Parameterwertes

Der Abfrage-Designer zeigt dann im unteren Bereich alle passenden Datensätze an. Nun wollen wir dafür sorgen, dass der Parameter auch beim Anzeigen des Berichts abgefragt und berücksichtigt wird.

Vorher werfen wir jedoch noch einen Blick auf den Bereich Berichtsdaten. Hier finden wir nämlich nun einen neuen Eintrag namens [@] ProductID vor (siehe Bild 7).

Neuer Eintrag im Ordner Parameter

Bild 7: Neuer Eintrag im Ordner Parameter

Eigenschaften des neuen Parameters festlegen

Den neuen Parameter wollen wir direkt anpassen. Die Eigenschaften des neuen Parameters zeigen Sie an, indem Sie doppelt auf den Eintrag im Ordner Parameter klicken. Dies öffnet den Dialog Berichtsparametereigenschaften (siehe Bild 8).

Eigenschaften des neuen Parameters

Bild 8: Eigenschaften des neuen Parameters

Der erste Bereich namens Allgemein erwartet die folgenden Informationen:

  • Name: Bezeichnung des Parameters, unter dem Sie diesen später referenzieren können. Dieser wurde bereits mit ProductID gefüllt.
  • Eingabeaufforderung: Text, der erscheint, um den Wert des Parameters vom Benutzer abzufragen. Den vorausgefüllten Text ändern wir in Filtern nach Produkt-ID:.
  • Datentyp: Datentyp des Parameters. Mögliche Werte sind Text, Boolean, Datum/Uhrzeit, Ganze Zahl oder Gleitkommawert. Wenn Sie Datum/Uhrzeit auswählen, bekommt der Benutzer ein entsprechendes Steuerelement zur Auswahl des Datums angezeigt. In diesem Fall benötigen wir den Wert Ganze Zahl.
  • Leeren Wert zulassen: Gibt an, ob leere Zeichenketten angegeben werden können.
  • NULL-Wert zulassen: Gibt an, ob NULL-Werte zulässig sind. Dies ist nötig, wenn Sie wie weiter unten beschrieben alle Datensätze des Dataset anzeigen wollen.
  • Mehrere Werte zulassen: Gibt an, ob die Eingabe mehrerer Werte möglich sein soll. Dafür darf die vorherige Eigenschaft keine NULL-Werte zulassen. Später zeigen wir ein Beispiel für diese Einstellung.

Anzeige eines Textfeldes zur Parametereingabe

Neben dem neuen Eintrag im Ordner Parameter sehen wir außerdem nun, wozu die weißen Felder oben im Berichtsentwurf nützlich sind. Hier zeigen die Reporting Services nämlich die Parametertexte und die Steuerelemente zur Eingabe der Parameter an – in unserem Fall ein Feld mit der Beschriftung Filtern nach Produkt-ID:.

Wechseln wir nun in die Vorschau-Ansicht, bleibt dieses Eingabefeld erhalten und wir können nach der gewünschten Produkt-ID filtern (siehe Bild 9).

Eingeben des Parameterwertes und Filtern nach der Produkt-ID

Bild 9: Eingeben des Parameterwertes und Filtern nach der Produkt-ID

Das sieht doch schon sehr benutzerfreundlich aus und viel schöner als beispielsweise die Parameter-Dialoge von Access, in denen man jeden Parameter einzeln eingeben muss. Hier können Sie den Parameterwert ändern und mit der Schaltfläche Bericht anzeigen oder einfach durch Betätigen der Eingabetaste die Anzeige aktualisieren.

Alle Datensätze anzeigen, wenn der Parameter NULL ist

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins DATENBANKENTWICKLER:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 200 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar