Lektion 2: Hinzufügen von Parametern zum Erstellen einer Liste verfügbarer Werte (SSRS)

Mit verfügbaren Werten bzw. gültigen Werten wird eine Liste mit möglichen Werten für einen Berichtsparameter bereitgestellt. Als Berichtsautor können Sie gültige Werte aus einer Abfrage bereitstellen, die speziell zum Abrufen von bestimmten Werten aus der Datenquelle vorgesehen ist. Sie können auch eine vordefinierte Gruppe von Werten bereitstellen. Wenn Sie bestimmte verfügbare Werte an eine Datasetabfrage binden, die während der Verarbeitung des Berichts ausgeführt wird, stellen Sie sicher, dass nur Werte aus der Dropdownliste ausgewählt werden können, die in der Datenbank vorhanden sind.

In dieser Lektion ändern Sie den Sales Orders-Bericht so, dass eine Dropdownliste der verfügbaren Namen von Vertriebsmitarbeitern aus der SQL Server AdventureWorks2008R2-Datenbank angezeigt wird. Sie legen eine Tabelleneigenschaft so fest, dass eine Meldung angezeigt wird, wenn keine Zeilen im Resultset für den ausgewählten Parameterwert vorhanden sind. Wenn Sie einen Namen auswählen und den Bericht anzeigen, werden im Bericht ausschließlich die Verkäufe dieses Vertriebsmitarbeiters angezeigt.

So ersetzen Sie das vorhandene Dataset

  1. Klicken Sie im Bereich für die Berichtsdaten mit der rechten Maustaste auf das AdventureWorksDataset-Dataset 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], 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))
    AND  soh.SalesPersonID = (@BusinessPersonID)
    

    Im Unterschied zur vorangehenden Abfrage wurde dieser Abfrage eine Bedingung hinzugefügt, durch die das Resultset auf eine Person einschränkt wird:

    AND soh.SalesPersonID = (@BusinessPersonID)

  6. Klicken Sie auf die Schaltfläche Ausführen (!). Wenn Sie nach den Abfrageparametern gefragt werden, geben Sie die Werte mithilfe der folgenden Tabelle ein.

    @StartDate

    1/31/2001

    @EndDate

    1/31/2003

    @BusinessPersonID

    290

  7. Klicken Sie auf OK. Das Resultset wird für den Vertriebsmitarbeiter Ranjit Varkey Chudukatil mit SalesPersonID = 290 angezeigt. 

So füllen Sie eine Liste gültiger Werte für einen Berichtsparameter

  1. Klicken Sie im Berichtsdatenbereich auf Neu und anschließend auf Dataset. Das Dialogfeld Dataseteigenschaften wird angezeigt.

  2. Geben Sie in das Feld Name den Namen BusinessPersons ein. Mit diesem Dataset wird die Liste gültiger Werte für den SalesPersonID-Berichtsparameter gefüllt.

  3. Als Datenquelle sollte AdventureWorks_Ref verwendet werden.

  4. Fügen Sie folgende Transact-SQL-Abfrage im Abfragebereich ein:

    SELECT SP.BusinessEntityID, C.FirstName, C.LastName
    FROM   Sales.SalesPerson AS SP INNER JOIN
         HumanResources.Employee AS E ON E.BusinessEntityID = SP.BusinessEntityID INNER JOIN
         Person.Person AS C ON C.BusinessEntityID = E.BusinessEntityID
    ORDER BY SP.BusinessEntityID
    

    Klicken Sie zweimal auf OK. Eine Liste der Felder für das BusinessPersons-Dataset wird gefüllt. Mit diesem Dataset werden gültige Werte für den Parameter BusinessPersonID bereitgestellt.

  5. Sie werden feststellen, dass das BusinessPersons-Dataset über das Feld FirstName und LastName verfügt. Diese Felder werden im nächsten Schritt im Feld Name verknüpft.

So definieren Sie ein berechnetes Feld im Bereich für die Berichtsdaten:

  1. Klicken Sie auf der Symbolleiste im Bereich für die Berichtsdaten mit der rechten Maustaste auf das BusinessPersons-Dataset und anschließend auf Berechnetes Feld hinzufügen. Die Seite Felder des Dialogfelds Dataseteigenschaften wird mit einer neuen Zeile im Raster geöffnet.

  2. Geben Sie im letzten Textfeld Feldname Folgendes ein: Name.

  3. Fügen Sie im Textfeld Feldquelle den folgenden Ausdruck ein:

    =Fields!LastName.Value & ", " & Fields!FirstName.Value

  4. Klicken Sie auf OK.

  5. Das neue Feld Name wird im Bereich für die Berichtsdaten unter dem BusinessPersons-Dataset in der Feldauflistung für das Dataset angezeigt.

So füllen Sie den Berichtsparameter mit einer Liste verfügbarer Werte auf:

  1. Erweitern Sie im Bereich für die Berichtsdaten den Knoten Parameter, klicken Sie mit der rechten Maustaste auf BusinessPersonID und anschließend auf Parametereigenschaften.

  2. Geben Sie an der Eingabeaufforderung den Text Select business person: ein.

  3. Wählen Sie unter Datentyp die Option Ganze Zahl aus.

  4. Klicken Sie auf Verfügbare Werte.

  5. Wählen Sie die Option Werte aus Abfrage abrufen aus.

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

  7. Wählen Sie in der Dropdownliste Wertfeld den Eintrag BusinessEntityID aus.

  8. Wählen Sie in der Dropdownliste Bezeichnungsfeld den Eintrag Name aus.

    Nachdem Sie Name für die Bezeichnung ausgewählt haben, enthält die Dropdownliste der gültigen Werte für den BusinessEntityID-Parameter nun den Namen des jeweiligen Vertriebsmitarbeiters anstelle der entsprechenden ID.

  9. Klicken Sie auf Standardwerte.

  10. Wählen Sie die Option Werte aus Abfrage abrufen aus.

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

  12. Wählen Sie in der Dropdownliste Wertfeld den Eintrag BusinessEntityID aus.

  13. Klicken Sie auf OK. 

  14. Klicken Sie auf die Registerkarte Vorschau. Im Bericht wird eine Dropdownliste mit den Namen der Vertriebsmitarbeiter angezeigt.

  15. Klicken Sie auf Bericht anzeigen. Wählen Sie andere Parameterwerte aus, um die Ergebnisse zu überprüfen.

Nächste Schritte

Sie haben einem vorhandenen Bericht erfolgreich eine Liste verfügbarer Werte hinzugefügt. Anschließend ändern Sie den DayoftheWeek-Parameter und den SalesPersonID -Parameter so, dass diese mehrwertig sind. Siehe Lektion 3: Hinzufügen von Parametern zur Auswahl mehrerer Werte in einer Liste (SSRS).