Share via


Lektion 2: Hinzufügen von kaskadierenden Parametern zu einem Bericht

Neu: 17. Juli 2006

Kaskadierende Parameter bieten eine Möglichkeit, verfügbare Werte für die einzelnen Parameter in einer Gruppe von Parametern zu filtern, die eine natürliche Beziehung haben. Beispielsweise besitzt in der AdventureWorks-Datenbank jeder Wiederverkäufer eine Adresse an einem bestimmten Ort in einer bestimmten Stadt (Feld City). Städte sind nach Bundesländern oder Kantonen gruppiert (Feld StateProvince). Bundesländer und Kantone sind nach Ländern oder Regionen gruppiert (Feld CountryRegion). Länder bzw. Regionen sind nach Vertriebsgebieten gruppiert (Feld TerritoryGroup). Sie können für diese Felder vier kaskadierende Parameter erstellen, die eine abhängige Reihenfolge von der allgemeinsten Kategorie (TerritoryGroup) zur speziellsten Kategorie (City) besitzen.

Wenn kaskadierende Parameter auf einer Berichtssymbolleiste angezeigt werden, wählt der Leser des Berichts einen Wert aus dem ersten Parameter aus, mit dem die verfügbaren Werte für den nächsten Parameter bestimmt werden usw. Auf diese Weise können Sie theoretisch mehrere tausend Auswahlmöglichkeiten zu einer überschaubaren Anzahl für jeden kaskadierenden Parameter filtern.

Kaskadierende Parameter haben eine implizite Reihenfolge. Wenn Sie Berichtsparameter im Berichts-Designer anzeigen, werden die Parameter im Parameterbereich in einer bestimmten Reihenfolge aufgeführt. Der erste Parameter in einer Liste ist von keinem anderen Parameter abhängig. Wenn der nächste Parameter in der Liste als kaskadierender Parameter verwendet wird, ist er vom Parameter davor abhängig. Mithilfe der Schaltfläche mit dem Pfeil nach oben und der Schaltfläche mit dem Pfeil nach unten im Dialogfeld Berichtsparameter können Sie Parameter neu anordnen.

In dieser Lektion fügen Sie dem im vorherigen Lernprogramm erstellten Sales Orders-Bericht vier kaskadierende Parameter hinzu (TerritoryGroup, CountryRegion, StateProvince und City). Für jeden Parameter erstellen Sie ein Dataset, mit dem die Liste der verfügbaren Werte aufgefüllt wird. Wenn Sie eine Abfrage mit einem Abfrageparameter für ein Dataset der gültigen Werte erstellen, wird automatisch ein Berichtsparameter erstellt. Da Sie Datasets für die Listen der gültigen Werte vom allgemeinsten Parameter (TerritoryGroup) bis hin zum speziellsten Parameter (Cities) erstellen, erstellen Sie Berichtsparameter in der richtigen Reihenfolge für Abhängigkeiten. Für das finale Dataset der gültigen Werte (Cities) erfahren Sie, wie Sie einen Berichtsparameter manuell erstellen und ihn dem entsprechenden Abfrageparameter zuordnen können.

Nachdem Sie alle Datasets erstellt haben, ändern Sie die Standardeigenschaften für die einzelnen Berichtsparameter und legen die Eigenschaften für die gültigen Werte sowie die Standardwerte so fest, dass sie auf das entsprechende Dataset und Feld verweisen.

Abschließend ändern Sie die ursprüngliche Datasetabfrage, sodass sie Abfrageparameter für die einzelnen Berichtsparameter enthält. Wenn Sie den Bericht ausführen, wählen Sie der Reihe nach Werte für die einzelnen kaskadierenden Parameter aus. Mit den verfügbaren Werten für den nächsten Parameter werden nur die Werte aufgeführt, die gültig sind, nachdem der erste ausgewählt wurde.

Vorgehensweise

So öffnen Sie den ResellersWorldwide-Bericht

  1. Öffnen Sie in SQL Server Business Intelligence Development Studio das AdvancedParametersTutorial-Berichtsserverprojekt, das in der vorherigen Lektion erstellt wurde.

  2. Doppelklicken Sie im Projektmappen-Explorer auf den Resellers Worldwide-Bericht. Der Bericht wird in der Layout-Ansicht geöffnet.

  3. Klicken Sie auf die Registerkarte Daten.

So fügen Sie ein Dataset für verfügbare Werte für den TerritoryGroup-Parameter hinzu

  1. Klicken Sie in der Dropdownliste Dataset auf die Option <Neues Dataset>. Das Dialogfeld Dataset wird geöffnet.

  2. Geben Sie auf der Registerkarte Abfrage in das Textfeld Name die Zeichenfolge ValidValuesforTerritoryGroup ein.

  3. Überprüfen Sie, ob die Datenquelle gleich Resellers ist.

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

  5. Fügen Sie folgende Abfrage in den Abfragebereich ein.

    SELECT distinct [Group] as SalesTerritory
       FROM [AdventureWorks].[Sales].[SalesTerritory]
    
  6. Klicken Sie auf Ausführen (!), um das Resultset anzuzeigen. Die SalesTerritory-Spalte wird mit drei Zeilen angezeigt: Europe, North America und Pacific.

So fügen Sie ein Dataset für verfügbare Werte für den CountryRegion-Parameter hinzu

  1. Klicken Sie in der Dropdownliste Dataset auf die Option <Neues Dataset>. Das Dialogfeld Dataset wird geöffnet.

  2. Geben Sie auf der Registerkarte Abfrage in das Textfeld Name die Zeichenfolge ValidValuesforCountryRegion ein.

  3. Überprüfen Sie, ob die Datenquelle gleich Resellers ist.

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

  5. Fügen Sie folgende Abfrage im Abfragebereich ein.

    SELECT Distinct CR.Name AS CountryRegion
    FROM Sales.Store AS S
        JOIN Sales.CustomerAddress AS CA ON CA.CustomerID = S.CustomerID
        JOIN Person.Address AS A ON A.AddressID = CA.AddressID
        JOIN Person.StateProvince SP ON 
            SP.StateProvinceID = A.StateProvinceID
        JOIN Person.CountryRegion CR ON 
            CR.CountryRegionCode = SP.CountryRegionCode
        JOIN Sales.Customer C on S.CustomerID = C.CustomerID
        JOIN Sales.SalesTerritory T on C.TerritoryID = T.TerritoryID
    WHERE (T.[Group] = (@TerritoryGroup))
    Order by CR.Name
    
  6. Klicken Sie auf Ausführen (!). Das Dialogfeld Abfrageparameter definieren wird geöffnet.

  7. Geben Sie Pacific ein.

    Das Resultset wird mit der CountryRegion-Spalte und einer Zeile mit dem Wert Australia angezeigt.

    Wenn Sie den Abfrageparameter @TerritoryGroup definieren, wird ein neuer Berichtsparameter mit dem Namen TerritoryGroup erstellt.

  8. (Optional) Klicken Sie neben der Dropdownliste Dataset auf die Schaltfläche Ausgewähltes Dataset bearbeiten () und dann auf die Registerkarte Parameter. Überprüfen Sie, ob der Abfrageparameter @TerritoryGroup an den Wert des Berichtsparameters TerritoryGroup (=Parameters!TerritoryGroup.Value) gebunden ist.

So fügen Sie ein Dataset für verfügbare Werte für den StateProvince-Parameter hinzu

  1. Klicken Sie in der Dropdownliste Dataset auf die Option <Neues Dataset>. Das Dialogfeld Dataset wird geöffnet.

  2. Geben Sie auf der Registerkarte Abfrage im Feld Name den Namen ValidValuesforStateProvince ein.

  3. Überprüfen Sie, ob die Datenquelle gleich Resellers ist.

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

  5. Fügen Sie folgende Abfrage im Abfragebereich ein.

    SELECT Distinct SP.Name AS StateProvince
    FROM Sales.Store AS S
        JOIN Sales.CustomerAddress AS CA ON CA.CustomerID = S.CustomerID
        JOIN Person.Address AS A ON A.AddressID = CA.AddressID
        JOIN Person.StateProvince SP ON 
            SP.StateProvinceID = A.StateProvinceID
        JOIN Person.CountryRegion CR ON 
            CR.CountryRegionCode = SP.CountryRegionCode
    WHERE (CR.Name = @CountryRegion)
    Order by SP.Name
    
  6. Klicken Sie auf Ausführen (!), um das Resultset anzuzeigen. Das Dialogfeld Abfrageparameter definieren wird geöffnet.

  7. Geben Sie im Textfeld Parameterwert den Wert Australia ein. Klicken Sie auf OK.

    Die Spalte StateProvince wird mit vier Zeilen angezeigt: New South Wales, Queensland, South Australia und Victoria.

So fügen Sie ein Dataset für verfügbare Werte für den City-Parameter hinzu

  1. Klicken Sie in der Dropdownliste Dataset auf die Option <Neues Dataset>. Das Dialogfeld Dataset wird geöffnet.

  2. Geben Sie auf der Registerkarte Abfrage im Feld Name den Namen ValidValuesforCity ein.

  3. Überprüfen Sie, ob die Datenquelle gleich Resellers ist.

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

  5. Fügen Sie folgende Abfrage im Abfragebereich ein.

    SELECT Distinct A.City 
    FROM Sales.Store AS S
        JOIN Sales.CustomerAddress AS CA ON CA.CustomerID = S.CustomerID
        JOIN Person.Address AS A ON A.AddressID = CA.AddressID
        JOIN Person.StateProvince SP ON 
            SP.StateProvinceID = A.StateProvinceID
        JOIN Person.CountryRegion CR ON 
            CR.CountryRegionCode = SP.CountryRegionCode
        JOIN Sales.Customer C on S.CustomerID = C.CustomerID
        JOIN Sales.SalesTerritory T on C.TerritoryID = T.TerritoryID
    WHERE (
        T.[Group] = (@TerritoryGroup) AND
        CR.[Name] = (@CountryRegion) AND
        SP.[Name] = (@StateProvince)
        )
    Order by A.City
    
  6. Klicken Sie auf Ausführen (!), um das Resultset anzuzeigen. Das Dialogfeld Abfrageparameter definieren wird geöffnet.

  7. Geben Sie mithilfe der folgenden Tabelle in das Textfeld Parameterwert einen Wert für jeden Abfrageparameter ein.

Parametername Parameterwert

@TerritoryGroup

Pacific

@CountryRegion

Australia

@StateProvince

Victoria

  1. Klicken Sie auf OK.
    Die City-Spalte wird mit drei Zeilen angezeigt: Melbourne, Seaford und South Melbourne.

Sie haben nun vier kaskadierende Parameter erstellt. Als Nächstes bearbeiten Sie die Eigenschaften der erstellten Berichtsparameter, die den Abfrageparametern entsprechen. Sie legen die einzelnen Parameter so fest, dass sie das entsprechende Dataset zum Abrufen der verfügbaren Werte verwenden.

So legen Sie die verfügbaren Werte für den TerritoryGroup-Berichtsparameter fest

  1. Klicken Sie im Menü Bericht auf Berichtsparameter. Das Dialogfeld Berichtsparameter wird geöffnet. Dabei ist TerritoryGroup im Bereich Parameter ausgewählt.

  2. Überprüfen Sie, ob der Datentyp gleich String ist.

  3. Geben Sie im Textfeld Eingabeaufforderung den Text Select a Territory Group: ein.

  4. Stellen Sie sicher, dass alle Kontrollkästchen deaktiviert sind.

  5. Wählen Sie im Abschnitt Verfügbare Werte die Option Von Abfrage aus.

  6. Wählen Sie in der Dropdownliste Dataset den Wert ValidValuesforTerritoryGroup aus.

  7. Wählen Sie in der Dropdownliste Wertfeld den Wert SalesTerritory aus.

  8. Wählen Sie in der Dropdownliste Bezeichnungsfeld den Wert SalesTerritory aus.

  9. Wählen Sie im Abschnitt Standardwerte die Option Nicht abgefragt aus.

  10. Geben Sie North America in das Textfeld ein.

    Sie können einen Standardwert auf einen bestimmten Wert oder auf Standardwerte aus einem Datasetfeld festlegen. Da dieser Parameter den Typ String hat, können Sie den Wert direkt in das Textfeld eingeben. Für andere Datentypen geben Sie einen Ausdruck ein, der mit einem Gleichheitszeichen beginnt (=).

  11. Klicken Sie auf OK.

  12. (Optional) Klicken Sie auf die Registerkarte Vorschau. Der TerritoryGroup-Parameter wird mit dem Standardwert Europe und den gültigen Werten aus dem SalesTerritory-Feld aus dem ValidValuesforTerritoryGroup-Dataset angezeigt.

    Es werden keine Änderungen an den Berichtsdaten angezeigt, bevor Sie die Resellers-Datasetabfrage im letzten Arbeitsschritt dieser Lektion geändert haben.

So legen Sie die verfügbaren Werte für den CountryRegion-Berichtsparameter fest

  1. Klicken Sie im Menü Bericht auf Berichtsparameter. Das Dialogfeld Berichtsparameter wird geöffnet.

  2. Wählen Sie im Bereich Parameter den Wert CountryRegion aus.

  3. Überprüfen Sie, ob der Datentyp gleich String ist.

  4. Geben Sie im Textfeld Eingabeaufforderung den Text Select a Country/Region: ein.

  5. Stellen Sie sicher, dass alle Kontrollkästchen deaktiviert sind.

  6. Wählen Sie im Abschnitt Verfügbare Werte die Option Von Abfrage aus.

  7. Wählen Sie in der Dropdownliste Dataset den Wert ValidValuesforCountryRegion aus.

  8. Wählen Sie in der Dropdownliste Wertfeld den Wert CountryRegion aus.

  9. Wählen Sie in der Dropdownliste Bezeichnungsfeld den Wert CountryRegion aus.

  10. Wählen Sie im Abschnitt Standardwerte die Option Von Abfrage aus.

  11. Wählen Sie in der Dropdownliste Dataset den Wert ValidValuesforCountryRegion aus.

  12. Wählen Sie in der Dropdownliste Wertfeld den Wert CountryRegion aus.

  13. Klicken Sie auf OK.

  14. (Optional) Klicken Sie auf die Registerkarte Vorschau. Wählen Sie einen Wert für TerritoryGroup aus. Wählen Sie einen Wert für den CountryRegion-Parameter aus. Überprüfen Sie, ob die für CountryRegion angezeigten Werte für den von Ihnen ausgewählten TerritoryGroup-Parameter gültig sind.

So legen Sie die verfügbaren Werte für den StateProvince-Berichtsparameter fest

  1. Klicken Sie im Menü Bericht auf Berichtsparameter. Das Dialogfeld Berichtsparameter wird geöffnet.

  2. Wählen Sie im Bereich Parameter den Wert StateProvince aus.

  3. Überprüfen Sie, ob der Datentyp gleich String ist.

  4. Geben Sie im Textfeld Eingabeaufforderung den Text Select a State/Province: ein.

  5. Stellen Sie sicher, dass alle Kontrollkästchen deaktiviert sind.

  6. Wählen Sie im Abschnitt Verfügbare Werte die Option Von Abfrage aus.

  7. Wählen Sie in der Dropdownliste Dataset den Wert ValidValuesforStateProvince aus.

  8. Wählen Sie in der Dropdownliste Wertfeld den Wert StateProvince aus.

  9. Wählen Sie in der Dropdownliste Bezeichnungsfeld den Wert StateProvince aus.

  10. Wählen Sie im Abschnitt Standardwerte die Option Von Abfrage aus.

  11. Wählen Sie in der Dropdownliste Dataset den Wert ValidValuesforStateProvince aus.

  12. Wählen Sie in der Dropdownliste Wertfeld den Wert StateProvince aus.

  13. Klicken Sie auf OK.

  14. (Optional) Klicken Sie auf die Registerkarte Vorschau. Wählen Sie einen Wert für TerritoryGroup aus. Wählen Sie einen Wert für den CountryRegion-Parameter aus. Wählen Sie einen Wert für den StateProvince-Parameter aus. Überprüfen Sie, ob die für StateProvince angezeigten Werte für die von Ihnen ausgewählten Parameter TerritoryGroup und CountryRegion gültig sind.

So erstellen Sie den City-Berichtsparameter und legen seine Eigenschaften fest

  1. Klicken Sie im Menü Bericht auf Berichtsparameter. Das Dialogfeld Berichtsparameter wird geöffnet.

  2. Beachten Sie, dass im Bereich Parameter kein Berichtsparameter mit dem Namen City vorhanden ist.

    Berichtsparameter werden automatisch erstellt, wenn eine Abfrage, die Parameter enthält, für ein Dataset definiert wird. Keine der bisher erstellten Datasetabfragen enthält einen @City-Abfrageparameter. Sie können einen Berichtsparameter mit dem Namen City erstellen, und wenn eine Abfrage definiert wird, die einen @City-Abfrageparameter enthält, wird der Abfrageparameter automatisch an einen Berichtsparameter gebunden, falls er einen entsprechenden Namen besitzt (d. h. den Namen ohne das Abfrageparameterkennzeichen "@").

  3. Klicken Sie auf Hinzufügen. Es wird ein Berichtsparameter mit Standardeigenschaften erstellt.

  4. Geben Sie im Abschnitt Eigenschaften im Textfeld Name den Wert City ein.

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

  6. Geben Sie im Textfeld Eingabeaufforderung den Text Select a City: ein.

  7. Stellen Sie sicher, dass alle Kontrollkästchen deaktiviert sind.

  8. Wählen Sie im Abschnitt Verfügbare Werte die Option Von Abfrage aus.

  9. Wählen Sie in der Dropdownliste Dataset den Wert ValidValuesforCity aus.

  10. Wählen Sie in der Dropdownliste Wertfeld den Wert City aus.

  11. Wählen Sie in der Dropdownliste Bezeichnungsfeld den Wert City aus.

  12. Wählen Sie im Abschnitt Standardwerte die Option Von Abfrage aus.

  13. Wählen Sie in der Dropdownliste Dataset den Wert ValidValuesforCity aus.

  14. Wählen Sie in der Dropdownliste Wertfeld den Wert City aus.

  15. Klicken Sie auf OK.

  16. (Optional) Klicken Sie auf die Registerkarte Vorschau. Wählen Sie Werte für die Parameter TerritoryGroup, CountryRegion und StateProvince aus. Überprüfen Sie, ob die für City angezeigten Parameterwerte für Ihre Auswahl gültig sind.

Bis jetzt haben Sie die kaskadierenden Parameterwerte erstellt. Nun müssen Sie diese Werte in die Datasetabfrage für den Tabellendatenbereich aufnehmen, sodass die von Ihnen ausgewählten Parameter in die Abfrage aufgenommen werden, mit der die Tabellendaten abgerufen werden.

So ändern Sie die Abfrage für das Resellers-Dataset für Kaufaufträge so, dass vorhandene Abfrageparameter aufgenommen werden

  1. Wählen Sie in der Datenansicht in der Dropdownliste Dataset die Option Resellers aus. Die ursprüngliche, in der vorherigen Lektion erstellte Abfragezeichenfolge wird im Abfragebereich angezeigt.

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

    SELECT S.CustomerID, SO.SalesOrderNumber, SO.OrderDate, SO.TotalDue,
        S.Name AS Store, A.City, SP.Name AS State, CR.Name
        AS CountryRegion, 
        SC.ContactID As StoreContactID, T.[Group] As TerritoryGroup
    FROM Sales.Store AS S
        JOIN Sales.CustomerAddress AS CA ON CA.CustomerID = S.CustomerID
        JOIN Person.Address AS A ON A.AddressID = CA.AddressID
        JOIN Person.StateProvince SP ON 
            SP.StateProvinceID = A.StateProvinceID
        JOIN Person.CountryRegion CR ON 
            CR.CountryRegionCode = SP.CountryRegionCode
        JOIN Sales.SalesOrderHeader AS SO ON 
        S.CustomerID = SO.CustomerID
        JOIN Sales.StoreContact SC ON  S.CustomerID = SC.CustomerID
        JOIN Sales.Customer C on S.CustomerID = C.CustomerID
        JOIN Sales.SalesTerritory T on C.TerritoryID = T.TerritoryID
    WHERE(
        (T.[Group] = (@TerritoryGroup))
        AND
        (CR.Name = (@CountryRegion))
         AND
         (SP.Name = (@StateProvince))
        AND
        (A.City = (@City))
       )
    ORDER BY S.CustomerID 
    

    Die Abfrage enthält nun Abfrageparameter, die die Berichtsparameterwerte verwenden.

  3. Klicken Sie auf Ausführen (!), um das Resultset anzuzeigen. Das Dialogfeld Abfrageparameter definieren wird geöffnet.

  4. Geben Sie mithilfe der folgenden Tabelle in der Parameterwert-Spalte einen Wert für jeden Abfrageparameter ein.

Parametername Parameterwert

@TerritoryGroup

Pacific

@CountryRegion

Australia

@StateProvince

Victoria

@City

Melbourne

  1. Klicken Sie auf OK.
    Das Resultset enthält die Verkäufe für Wiederverkäufer in der Stadt Melbourne.
    Als Sie der Abfragedefinition für das Resellers-Dataset Abfrageparameter hinzugefügt haben, wurden diese automatisch so festgelegt, dass sie ihre Werte aus den entsprechenden Berichtsparameterwerten abrufen.
  2. (Optional) Klicken Sie neben der Dropdownliste Dataset auf die Schaltfläche Ausgewähltes Dataset bearbeiten () und dann auf die Registerkarte Parameter. Überprüfen Sie, ob die Abfrageparameter @TerritoryGroup, @CountryRegion, @StateProvince und @City an die Werte der entsprechenden Berichtsparameter gebunden sind.

So legen Sie den NoRows-Wert fest

  1. Klicken Sie auf die Registerkarte Layout, um zur Layoutansicht zu wechseln.

  2. Klicken Sie auf die Tabelle, sodass die Tabellenhandles angezeigt werden. Klicken Sie auf den Eckziehpunkt der Tabelle, um sie auszuwählen. Die Tabelle wird mit einem grauen Rahmen angezeigt.

  3. Suchen Sie im Eigenschaftenfenster die NoRows-Eigenschaft. Fügen Sie folgenden Text in das Textfeld daneben ein.

    There are no resellers in this area.

So erstellen Sie die Textfelder für den Hauptberichtstitel und den Parameterwert

  1. Klicken Sie auf die Registerkarte Layout, um zur Layoutansicht zu wechseln.

  2. Klicken Sie mit der rechten Maustaste auf das Textfeld, das den Timestamp für die Berichtsverarbeitung enthält, und wählen Sie Ausdruck aus.

  3. Klicken Sie auf die Ausdrucksschaltfläche (Fx) neben dem Textfeld Wert. Das Dialogfeld Ausdruck bearbeiten wird geöffnet. Ersetzen Sie den Timestampausdruck durch folgende Angabe:

    ="Report Processed Date: " & 
      Globals!ExecutionTime.ToShortDateString() & " " & 
      Globals!ExecutionTime.ToShortTimeString() & vbCrLf & 
      "Sales Territory for: " 
    & Parameters!TerritoryGroup.Value & ", " 
    & Parameters!CountryRegion.Value & ", "
    & Parameters!StateProvince.Value & ", "
    & Parameters!City.Value
    
  4. Klicken Sie auf Vorschau. Versuchen Sie, verschiedene Parameterwerte auszuwählen. Beachten Sie, dass in der Dropdownliste des nächsten Parameters nur die verfügbaren Werte anhand Ihrer Auswahl angezeigt werden, wenn Sie die einzelnen nachfolgenden Parameter auswählen. Die Berichtsdaten ändern sich nicht, auch wenn Sie neue Parameter auswählen. Klicken Sie auf Bericht anzeigen, um den Bericht mit den neu ausgewählten Parametern erneut zu verarbeiten.

Nächste Schritte

Sie haben erfolgreich einen Bericht mit kaskadierenden Parametern erstellt, in dem die Umsätze der Wiederverkäufer nach Gebiet angezeigt werden. In der nächsten Lektion erfahren Sie, wie mithilfe von Parametern die Sortierung von Tabellendetailzeilen und Tabellengruppen geändert wird. Siehe Lektion 3: Ändern der Anfangssortierung und der interaktiven Sortierung mithilfe von Parametern.

Siehe auch

Andere Ressourcen

Verwenden von Parametern in Reporting Services
Verwenden von Parametern zum Steuern von Berichtsdaten

Hilfe und Informationen

Informationsquellen für SQL Server 2005