Lektion 1: Hinzufügen von Parametern zum Filtern von Berichten nach Datum (SSRS)

Durch Einfügen von Parametern für ein Start- und ein Enddatum in eine Abfrage für Ihren Bericht können Sie einen Datumsbereich angeben, mit dem die aus der Datenquelle abgerufenen Daten eingeschränkt werden. Sie können weitere Parameter zum Filtern von Daten erstellen, nachdem diese aus der Datenquelle abgerufen wurden.

In dieser Lektion fügen Sie der Abfrage den @StartDate-Parameter und den @EndDate-Parameter hinzu, um die Daten einzuschränken, die aus der Datenquelle abgerufen werden. Der StartDate-Berichtsparameter und der EndDate-Berichtsparameter werden automatisch erstellt und im Bereich für die Berichtsdaten angezeigt. Bei den Parametern wird die Groß-/Kleinschreibung beachtet. Abfrageparameter beginnen im Gegensatz zu Berichtsparametern mit dem @-Symbol.

Sie legen den Datentyp der Parameter auf DateTime fest. Daraufhin wird ein Kalendersteuerelement mit dem Parametertextfeld auf der Symbolleiste des Berichts-Viewers angezeigt. Sie legen Standardwerte für die Parameter fest, damit der Bericht automatisch ausgeführt werden kann. Abschließend erstellen Sie den Berichtsparameter DayofWeek, der nicht an einen Abfrageparameter gebunden ist, und verwenden diesen zum Filtern von Daten, nachdem die Daten aus der Datenquelle abgerufen wurden.

Für dieses Lernprogramm ist es erforderlich, dass Sie Lernprogramm: Erstellen eines einfachen Tabellenberichts abgeschlossen haben.

So öffnen Sie ein vorhandenes Berichtsserverprojekt

  1. Klicken Sie auf Start, zeigen Sie auf Alle Programme und auf Microsoft SQL Server 2008 R2, und klicken Sie dann auf Business Intelligence Development Studio.

  2. Zeigen Sie im Menü Datei auf Öffnen, und klicken Sie auf Projekt/Projektmappe.

  3. Klicken Sie auf Lernprogramm, und wählen Sie anschließend Tutorial.sln aus. Dieses Lernprogramm wurde in Lernprogramm: Erstellen eines einfachen Tabellenberichts erstellt.

  4. Klicken Sie auf OK, um das Projekt zu öffnen. Das Lernprogrammprojekt wird im Projektmappen-Explorer mit dem Bericht Sales Orders.rdl angezeigt.

    Hinweis   Wenn der Projektmappen-Explorer nicht angezeigt wird, klicken Sie im Menü Ansicht auf Projektmappen-Explorer.

So konvertieren Sie eine eingebettete Datenquelle in eine freigegebene Datenquelle

  1. Klicken Sie im Bereich für die Berichtsdaten mit der rechten Maustaste auf die Datenquelle AdventureWorks und anschließend auf In freigegebene Datenquelle konvertieren. Die Datenquelle AdventureWorks.rds wird im Projektmappen-Explorer hinzugefügt.

  2. Klicken Sie im Bereich für die Berichtsdaten mit der rechten Maustaste auf die Datenquelle AdventureWorks, und wählen Sie Datenquelleneigenschaften aus.

  3. Geben Sie im Feld Name den Wert AdventureWorks_Ref ein.

  4. Klicken Sie auf OK.

So ersetzen Sie das vorhandene Dataset

  1. Klicken Sie im Bereich für die Berichtsdaten mit der rechten Maustaste auf das Dataset AdventureWorksDataset und anschließend auf Dataseteigenschaften.

    HinweisHinweis

    Zum Anzeigen des Bereichs für die Berichtsdaten klicken Sie ggf. im Menü Ansicht auf Berichtsdaten.

  2. Vergewissern Sie sich, dass unter Datenquelle die Option AdventureWorks_Ref ausgewählt ist.

  3. Überprüfen Sie unter Abfragetyp, ob Text ausgewählt ist.

  4. Klicken Sie auf die Schaltfläche Abfrage-Designer, um den Abfrage-Designer zu öffnen.

  5. Ersetzen Sie den Text durch Eingabe der folgenden Abfrage im Textfeld.

    SELECT 
       soh.OrderDate AS [Date], 
       soh.SalesOrderNumber AS [Order], 
       pps.Name AS Subcat, pp.Name as Product,  
       SUM(sd.OrderQty) AS Qty,
       SUM(sd.LineTotal) AS LineTotal
    FROM Sales.SalesPerson sp 
       INNER JOIN Sales.SalesOrderHeader AS soh 
          ON sp.BusinessEntityID = soh.SalesPersonID
       INNER JOIN Sales.SalesOrderDetail AS sd 
          ON sd.SalesOrderID = soh.SalesOrderID
       INNER JOIN Production.Product AS pp 
          ON sd.ProductID = pp.ProductID
       INNER JOIN Production.ProductSubcategory AS pps 
          ON pp.ProductSubcategoryID = pps.ProductSubcategoryID
       INNER JOIN Production.ProductCategory AS ppc 
          ON ppc.ProductCategoryID = pps.ProductCategoryID
    GROUP BY ppc.Name, soh.OrderDate, soh.SalesOrderNumber, 
       pps.Name, pp.Name,    soh.SalesPersonID
    HAVING (ppc.Name = 'Clothing' 
       AND (soh.OrderDate BETWEEN (@StartDate) AND (@EndDate)))
    

    Im Unterschied zur vorangehenden Abfrage wurde dieser Abfrage eine Bedingung mit zwei einschränkenden Parametern hinzugefügt:

    AND (soh.OrderDate BETWEEN (@StartDate) AND (@EndDate))

  6. Klicken Sie auf der Symbolleiste auf Ausführen (!). Das Dialogfeld Abfrageparameter definieren wird geöffnet, und Sie werden aufgefordert, die Parameterwerte einzugeben.

  7. Geben Sie zwei Werte an, um ein gefiltertes Resultset anzuzeigen:

    1. Geben Sie in der Spalte Parameterwert einen Wert für @StartDate, ein, beispielsweise 1/31/2001.

    2. Geben Sie in der Spalte Parameterwert einen Wert für @EndDate ein, beispielsweise 1/31/2003.

  8. Klicken Sie auf OK. 

  9. Das Resultset zeigt ein gefiltertes Dataset für Aufträge aus den Jahren 2001 und 2002 an.

  10. Klicken Sie zweimal auf OK. Der Bereich für die Berichtsdaten wird mit den Datasetfeldern gefüllt. Der StartDate-Berichtsparameter und der EndDate-Berichtsparameter werden automatisch erstellt und unter dem Knoten Parameter angezeigt.

Nachdem Sie die Abfrageparameter für den Bericht definiert haben, muss der Datentyp des Berichtsparameters entsprechend dem Datentyp der Quelldaten geändert werden. Die Standardeinstellung ist Text; dadurch werden Zuordnungen zum String-Datentyp in den meisten Datenquellen vorgenommen. Bei numerischen oder booleschen Quelldaten oder Datum/Uhrzeit-Quelldaten ist eine Änderung des Berichtsparameter-Datentyps erforderlich.

So ändern Sie den Datentyp und die Standardwerte für Berichtsparameter

  1. Erweitern Sie im Bereich für die Berichtsdaten den Knoten Parameter, und doppelklicken Sie auf StartDate. Das Dialogfeld Berichtsparametereigenschaften wird geöffnet.

  2. Vergewissern Sie sich, dass StartDate als Parametername angegeben wurde und die Eingabeaufforderung Startdatum lautet.

  3. Wählen Sie unter Datentyp die Option Datum/Uhrzeit aus.

  4. Klicken Sie auf OK.

  5. Doppelklicken Sie im Bereich für die Berichtsdaten auf EndDate. Überprüfen Sie den Namen und die Eingabewerte.

  6. Wählen Sie unter Datentyp die Option Datum/Uhrzeit aus.

  7. Klicken Sie auf OK. 

  8. Klicken Sie auf Vorschau. Der StartDate-Parameter und der EndDate-Parameter werden auf der Berichtssymbolleiste jeweils mit einem Kalendersteuerelement angezeigt. Kalendersteuerelemente werden automatisch angezeigt, wenn der Parameter den Date/Time-Datentyp aufweist und Sie keine Liste mit verfügbaren Werten definiert haben. Wenn Sie eine Liste der verfügbaren Werte definieren, wird stattdessen eine Dropdown-Werteliste angezeigt.

  9. Geben Sie zwei Parameterwerte an, um den Bericht auszuführen:

    1. Geben Sie im Parametertextfeld StartDate das Datum 1/31/2001 ein.

    2. Geben Sie im Parametertextfeld EndDate das Datum 1/31/2003 ein.

  10. Klicken Sie auf Bericht anzeigen. Im Bericht werden nur die Daten angezeigt, die den Berichtsparameterwerten entsprechen.

Nachdem Sie die Berichtsparameter für den Bericht erstellt haben, können Sie für diese Parameter Standardwerte hinzufügen. Mithilfe der Standardparameter kann der Bericht automatisch ausgeführt werden. Andernfalls muss der Benutzer Parameterwerte eingeben, damit der Bericht ausgeführt wird.

So legen Sie Standardwerte für Parameter fest

  1. Erweitern Sie in der Entwurfsansicht im Bereich für die Berichtsdaten den Knoten Parameter, und doppelklicken Sie auf StartDate. Das Dialogfeld Berichtsparametereigenschaften wird geöffnet.

  2. Klicken Sie auf Standardwerte.

  3. Wählen Sie die Option Werte angeben aus. Die Schaltfläche Hinzufügen und ein leeres Werteraster werden angezeigt.

  4. Klicken Sie auf Hinzufügen. Dem Raster wird eine neue Zeile hinzugefügt.

  5. Klicken Sie in das Textfeld Wert, und löschen Sie den Standardtext (NULL).

  6. Geben Sie 1/31/2001 ein. Klicken Sie auf OK. 

  7. Doppelklicken Sie im Bereich für den Berichtsentwurf auf EndDate.

  8. Klicken Sie auf Standardwerte.

  9. Wählen Sie die Option Werte angeben aus.

  10. Klicken Sie auf Hinzufügen.

  11. Geben Sie 1/31/2003 ein. Klicken Sie auf OK.

  12. Klicken Sie auf Vorschau. Der Bericht wird sofort ausgeführt, da für alle Parameter Standardwerte definiert sind.

So fügen Sie einer Abfrage ein neues Feld zur Verwendung beim Filtern hinzu

  1. Wechseln Sie zur Entwurfsansicht.

  2. Klicken Sie mit der rechten Maustaste auf das Dataset AdventureWorksDataset, und wählen Sie Dataseteigenschaften aus. Öffnen Sie den Abfrage-Designer, und ersetzen Sie die Abfrage durch folgende neue Abfrage:

    SELECT 
       soh.OrderDate AS [Date], DATENAME(weekday, soh.OrderDate) as Weekday,
       soh.SalesOrderNumber AS [Order], 
       pps.Name AS Subcat, pp.Name as Product,  
       SUM(sd.OrderQty) AS Qty,
       SUM(sd.LineTotal) AS LineTotal
    FROM Sales.SalesPerson sp 
       INNER JOIN Sales.SalesOrderHeader AS soh 
          ON sp.BusinessEntityID = soh.SalesPersonID
       INNER JOIN Sales.SalesOrderDetail AS sd 
          ON sd.SalesOrderID = soh.SalesOrderID
       INNER JOIN Production.Product AS pp 
          ON sd.ProductID = pp.ProductID
       INNER JOIN Production.ProductSubcategory AS pps 
          ON pp.ProductSubcategoryID = pps.ProductSubcategoryID
       INNER JOIN Production.ProductCategory AS ppc 
          ON ppc.ProductCategoryID = pps.ProductCategoryID
    GROUP BY ppc.Name, soh.OrderDate, soh.SalesOrderNumber, 
       pps.Name, pp.Name,    soh.SalesPersonID
    HAVING (ppc.Name = 'Clothing' AND (soh.OrderDate BETWEEN (@StartDate) AND (@EndDate)))
    

    In der Abfrage wurde eine zusätzliche berechnete Spalte für den Tag der Woche definiert, an dem ein Verkauf stattfand. Zu diesem Zweck wurde der SELECT-Anweisung der folgende Befehl hinzugefügt:

    DATENAME(weekday, soh.OrderDate) as Weekday.

  3. Klicken Sie auf Ausführen (!). Das Dialogfeld Abfrageparameter definieren wird geöffnet.

  4. Geben Sie in der Spalte Parameterwert einen Wert für @StartDate, ein, beispielsweise 1/31/2001.

  5. Geben Sie in der Spalte Parameterwert einen Wert für @EndDate ein, beispielsweise 1/31/2003.

  6. Klicken Sie auf OK. Das Resultset sollte nun die neue Spalte Weekday enthalten.

  7. Klicken Sie zweimal auf OK. Überprüfen Sie im Bereich für die Berichtsdaten, ob Weekday ein Feld ist.

So formatieren Sie das Datum in den gefilterten Tabellendaten (optional)

  1. Klicken Sie auf die Registerkarte Entwurf.

  2. Klicken Sie mit der rechten Maustaste auf die Zelle mit dem Date-Feldausdruck, und klicken Sie dann auf Textfeldeigenschaften.

  3. Klicken Sie auf Zahl, und wählen Sie dann im Feld Kategorie die Option Datum aus.

  4. Wählen Sie im Feld Typ die Option Montag, 31. Januar 2000 aus.

  5. Klicken Sie auf OK.

So fügen Sie einen neuen Berichtsparameter hinzu

  1. Klicken Sie in der Entwurfsansicht im Bereich für die Berichtsdaten auf Neu und anschließend auf Parameter. Das Dialogfeld Berichtsparametereigenschaften wird geöffnet.

  2. Geben Sie im Feld Name den Wert DayoftheWeek ein.

  3. Geben Sie an der Eingabeaufforderung die Zeichenfolge Filter on the day of the week: ein.

  4. Überprüfen Sie, ob der Datentyp gleich Text ist.

  5. Klicken Sie auf Standardwerte.

  6. Wählen Sie die Option Werte angeben aus. Die Schaltfläche Hinzufügen und ein leeres Werteraster werden angezeigt.

  7. Klicken Sie auf Hinzufügen.

  8. Geben Sie Friday ein.

  9. Klicken Sie auf OK.  

So legen Sie einen Tabellenfilter mit Parameterausdrücken fest

  1. Klicken Sie in der Entwurfsansicht mit der rechten Maustaste auf einen Zeilen- oder Spaltenziehpunkt der Tabelle, und wählen Sie Tablix-Eigenschaften aus.

    HinweisHinweis

    Der Tabellendatenbereich ist eine Vorlage, die auf einem Tablix-Datenbereich basiert.

  2. Klicken Sie auf Filter. Ein leeres Filterraster wird angezeigt.

  3. Klicken Sie auf Hinzufügen. Dem Raster wird eine neue Zeile hinzugefügt.

  4. Wählen Sie unter Ausdruck die Option [Weekday] aus der Dropdownliste aus.

  5. Überprüfen Sie, ob für Operator das Gleichheitszeichen (=) angezeigt wird.

  6. Klicken Sie auf die Ausdrucksschaltfläche (fx) neben dem Textfeld Wert. Das Dialogfeld Ausdruck wird geöffnet.

  7. Klicken Sie unter Kategorie auf Parameter. Die aktuelle Liste der Parameter wird im Bereich Werte angezeigt. Doppelklicken Sie auf DayoftheWeek. Der Parameterausdruck wird dem Ausdruckstextfeld hinzugefügt. Im Ausdruckstextfeld wird nun der folgende Ausdruck angezeigt: =Parameters!DayoftheWeek.Value.

  8. Klicken Sie auf OK. Klicken Sie erneut auf OK, um das Dialogfeld Tablix-Eigenschaften zu schließen.

    Der Filter für die Tabelle ist nun so festgelegt, dass der Wert im Feld Weekday mit dem Parameterwert für DayoftheWeek verglichen wird. Wenn Sie beispielsweise auf der Berichtssymbolleiste für DayoftheWeek den Wert Friday eingeben, werden vom Berichtsprozessor nur die Zeilen in der Tabelle verarbeitet, bei denen der Wert für das Feld Weekday dem Wert Friday entspricht.

    Klicken Sie auf Vorschau. Da für alle Parameter Standardwerte festgelegt wurden, wird der Bericht automatisch ausgeführt. In der Tabelle werden nur Werte angezeigt, die in dem durch StartDate und EndDate definierten Datumsbereich liegen und auf einen Freitag (Friday) fallen.

Nächste Schritte

Sie haben erfolgreich Abfrageparameter und Berichtsparameter erstellt sowie Standardwerte für die Parameter und einen Filter für die Tabelle festgelegt. In der nächsten Lektion erfahren Sie, wie Sie eine Liste mit verfügbaren oder gültigen Werten für einen Parameter erstellen. Siehe Lektion 2: Hinzufügen von Parametern zum Erstellen einer Liste verfügbarer Werte (SSRS).