Share via


Lektion 1: Hinzufügen von Parametern zum Filtern von Berichten nach Datum (Berichts-Generator 2.0)

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. In Transact-SQL beginnen Abfrageparameter mit dem Symbol @, während dies bei Berichtsparametern, die im Berichtsdatenbereich angezeigt werden, nicht der Fall ist.

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 müssen Sie Lernprogramm: Erstellen eines einfachen Tabellenberichts (Berichts-Generator 2.0) abgeschlossen haben.

So öffnen Sie einen vorhandenen Bericht

  1. Klicken Sie auf Start, zeigen Sie auf Programme, zeigen Sie auf Microsoft SQL Server 2008 Berichts-Generator, und klicken Sie dann auf Berichts-Generator 2.0.

  2. Klicken Sie in der Schaltfläche Berichts-Generator auf Öffnen.

  3. Navigieren Sie zu Sales Order. Dieser Bericht wurde in Lernprogramm: Erstellen eines einfachen Tabellenberichts (Berichts-Generator 2.0) erstellt.

  4. Klicken Sie auf Öffnen. Die Berichtsdefinition wird in der Entwurfsansicht geöffnet.

    Danach ersetzen Sie die Datasetabfrage durch eine Abfrage, die einen Abfrageparameter enthält.

So ersetzen Sie die vorhandene Datasetabfrage

  1. Klicken Sie im Berichtsdatenbereich mit der rechten Maustaste auf das Dataset Dataset1, und klicken Sie dann auf Abfrage. Der Abfrage-Designer wird geöffnet.

  2. Ersetzen Sie den Text im Abfragebereich durch folgende Abfrage:

    SELECT
      SH.OrderDate
      ,SH.SalesOrderNumber
      ,SD.OrderQty
      ,SD.LineTotal
      ,P.Name AS [Product]
      ,PS.Name AS [Subcategory]
    FROM
      Sales.SalesOrderHeader AS SH
      INNER JOIN Sales.SalesOrderDetail AS SD
        ON SH.SalesOrderID = SD.SalesOrderID
      INNER JOIN Production.Product AS P
       ON SD.ProductID = P.ProductID
      INNER JOIN Production.ProductSubcategory AS PS
       ON PS.ProductSubcategoryID = P.ProductSubcategoryID
      INNER JOIN Production.ProductCategory AS PC
       ON PC.ProductCategoryID = PS.ProductCategoryID
    WHERE PC.Name = 'Clothing' AND SH.OnlineOrderFlag = 0
       AND (SH.OrderDate BETWEEN (@StartDate) AND (@EndDate))
    

    Im Unterschied zur vorangehenden Abfrage wurde die Sortierklausel ORDER BY entfernt und eine Bedingung mit zwei einschränkenden Parametern hinzugefügt:

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

  3. Klicken Sie auf der Symbolleiste auf Ausführen (!). Das Dialogfeld Abfrageparameter definieren wird geöffnet, und Sie werden aufgefordert, einen Wert für jeden Parameter einzugeben.

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

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

    2. Geben Sie in der Spalte Parameterwert einen Wert für @EndDate ein, beispielsweise 20030101.

  5. Klicken Sie auf OK. 

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

  6. Klicken Sie auf OK. 

    Erweitern Sie im Berichtsdatenbereich den Knoten Parameter , um die beiden Berichtsparameter StartDate und EndDate anzuzeigen, die automatisch aus den Abfrageparametern erstellt werden.

    Nachdem Sie die Abfrageparameter definiert haben, die ein Datum oder eine Uhrzeit darstellen, müssen Sie den Datentyp des Berichtsparameters entsprechend ändern.

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

  1. Klicken Sie im Berichtsdatenbereich mit der rechten Maustaste auf StartDate, und klicken Sie dann auf Parametereigenschaften.

  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. Dadurch wird der Berichtsparameterdatentyp festgelegt, der in der Berichtsdefinition gespeichert wird.

  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 Ausführen, um den Bericht in der Vorschau anzuzeigen. 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. Sie können das Kalendersteuerelement verwenden oder nur die folgenden Datumsangaben eingeben:

    1. Geben Sie im Parametertextfeld StartDate das Datum 2001-01-01 ein.

    2. Geben Sie im Parametertextfeld StartDate das Datum 2003-01-01 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. Mit Standardparametern 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. Wechseln Sie zur Entwurfsansicht.

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

  3. Klicken Sie auf Standardwerte.

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

  5. Klicken Sie auf Hinzufügen. Dem Raster wird eine leere Zeile hinzugefügt.

  6. Ersetzen Sie im Textfeld Wert den Standardtext (Null), und geben Sie 2001-01-01 ein.

  7. Klicken Sie auf OK. 

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

  9. Klicken Sie auf Standardwerte.

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

  11. Klicken Sie auf Hinzufügen.

  12. Geben Sie 2003-01-01 ein.

  13. Klicken Sie auf OK.

  14. Klicken Sie auf Vorschau. Der Bericht wird sofort ausgeführt, da jeder Parameter über einen Standardwert verfügt.

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 Dataset1, und wählen Sie Dataseteigenschaften aus. Öffnen Sie den Abfrage-Designer, und ersetzen Sie die Abfrage durch folgende neue Abfrage:

    SELECT
      SH.OrderDate
      ,DATENAME(weekday, SH.OrderDate) as Weekday
      ,SH.SalesOrderNumber
      ,SD.OrderQty
      ,SD.LineTotal
      ,P.Name AS [Product]
      ,PS.Name AS [Subcategory]
    FROM
      Sales.SalesOrderHeader AS SH
      INNER JOIN Sales.SalesOrderDetail AS SD
        ON SH.SalesOrderID = SD.SalesOrderID
      INNER JOIN Production.Product AS P
       ON SD.ProductID = P.ProductID
      INNER JOIN Production.ProductSubcategory AS PS
       ON PS.ProductSubcategoryID = P.ProductSubcategoryID
      INNER JOIN Production.ProductCategory AS PC
       ON PC.ProductCategoryID = PS.ProductCategoryID
    WHERE PC.Name = 'Clothing' AND SH.OnlineOrderFlag = 0
       AND (SH.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 20010101.

  5. Geben Sie in der Spalte Parameterwert einen Wert für @EndDate ein, beispielsweise 20030101.

  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, dass Weekday ein Feld darstellt.

    Nachdem die Tabelle jetzt Daten enthält, die den Tag der Woche identifizieren, können Sie einen Filter hinzufügen, damit nur Verkäufe an bestimmten Tagen der Woche in dem Bericht verwendet werden. Um dies zu überprüfen, können Sie den Tag der Woche mit dem Auftragsdatum anzeigen.

So formatieren Sie das Datum in der Tabelle

  1. Wechseln Sie zur Entwurfsansicht.

  2. Klicken Sie auf die Zelle mit dem OrderDate-Feldausdruck. Klicken Sie auf der Startseite in der Gruppe Zahl auf das Dialogfeldstartprogramm.

  3. Überprüfen Sie in Kategorie, ob Date ausgewählt ist.

  4. Wählen Sie im Feld Typ einen Datumstyp aus, der den Tag der Woche anzeigt. Beispiel: Für die Ländereinstellung Englisch (USA) können Sie Monday, January 31, 2000 wählen.

  5. Klicken Sie auf OK.

  6. Klicken Sie auf Ausführen, um den Bericht in der Vorschau anzuzeigen. Mit dem Datum in der ersten Spalte der Tabelle wird der Tag der Woche und das Kalenderdatum angezeigt.

    Als Nächstes fügen Sie einen Parameter hinzu, damit der Benutzer nach dem Tag der Woche filtern kann.

So fügen Sie einen neuen Berichtsparameter hinzu

  1. Wechseln Sie zur Entwurfsansicht.

  2. Klicken Sie im Berichtsdatenbereich auf Neu und anschließend auf Parameter. Das Dialogfeld Berichtsparametereigenschaften wird geöffnet.

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

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

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

  6. Klicken Sie auf Standardwerte.

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

  8. Klicken Sie auf Hinzufügen.

  9. Geben Sie Friday ein.

  10. Klicken Sie auf OK. 

    Als Nächstes fügen Sie einen Filter hinzu, um nur den Wert anzuzeigen, den Sie für den Parameter DayoftheWeek wählen. Sie können der Tabelle oder dem Dataset einen Filter hinzufügen. Dieser Bericht enthält sowohl eine Tabelle als auch ein Diagramm, die dieselben Daten anzeigen. Fügen Sie den Filter der Tabelle hinzu, wenn Sie die gefilterten Daten nur in der Tabelle anzeigen möchten. Fügen Sie den Filter dem Dataset hinzu, wenn Sie die gefilterten Daten in der Tabelle und dem Diagramm anzeigen möchten. In der folgenden Prozedur legen Sie den Filter auf dem Dataset fest.

So legen Sie einen Datasetfilter mit einem Parameterausdruck fest

  1. Klicken Sie in der Entwurfsansicht im Berichtsdatenbereich mit der rechten Maustaste auf Dataset1, und klicken Sie dann auf Dataseteigenschaften.

  2. Klicken Sie auf Filter.

  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. 

    Wert zeigt den einfachen Ausdruck für den DayoftheWeek-Parameter: [@DayoftheWeek] an.

  9. Klicken Sie auf OK. 

    Der Filter für das Dataset 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 und dem Diagramm werden nur Werte angezeigt, die in dem durch StartDate und EndDate definierten Datumsbereich liegen und auf einen Freitag (Friday) fallen. Bei diesem Dataset fallen nur drei Datumsangaben auf einen Freitag:

    • 1. Februar 2002

    • 1. März 2002

    • 1. November 2002

Nächste Schritte

Sie haben erfolgreich Abfrageparameter und Berichtsparameter erstellt sowie Standardwerte für die Parameter und einen Filter für das Dataset 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 (Berichts-Generator 2.0).

Siehe auch

Andere Ressourcen