Lektion 3: Hinzufügen von Parametern zur Auswahl mehrerer Werte in einer Liste
In dieser Lektion ändern Sie die Parameter BusinessPersonID und DayoftheWeek aus einwertigen Parametern in mehrwertige Parameter. Mit mehrwertigen Parametern können Sie mehr als einen Wert für einen Berichtsparameter auswählen. Zum Ändern des Berichtsparameters BusinessPersonID ändern Sie die Abfrage für das AdventureWorks2008-Dataset so, dass ein Test auf @BusinessPersonID in der Gruppe der ausgewählten Werte statt in Übereinstimmung mit einem einzelnen Wert ausgeführt wird, und aktivieren Sie die Mehrwertig-Eigenschaft des Berichtsparameters. Zum Ändern des Berichtsparameters DayoftheWeek aktivieren Sie die Mehrwertig-Eigenschaft, legen die verfügbaren Werte aus einem neuen Dataset fest und geben einen Ausdruck für die Standardwerte an. Sie erstellen ein neues Dataset, um verfügbare Werte für den DayoftheWeek-Parameter bereitzustellen. Abschließend fügen Sie dem Bericht ein Textfeld hinzu, in dem Parameterwerte für die Auswahlmöglichkeiten von DayoftheWeek angezeigt werden.
So ersetzen Sie das vorhandene Dataset
Klicken Sie im Bereich für die Berichtsdaten mit der rechten Maustaste auf das AdventureWorksDataset-Dataset und anschließend auf Dataseteigenschaften.
Vergewissern Sie sich, dass unter Datenquelle die Option AdventureWorks_Ref ausgewählt ist.
Überprüfen Sie unter Abfragetyp, ob Text ausgewählt ist.
Klicken Sie auf die Schaltfläche Abfrage-Designer, um den Abfrage-Designer zu öffnen.
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 IN (@BusinessPersonID)
Im Unterschied zur vorangehenden Abfrage wurde hier eine Bedingung von Gleichheit in Enthaltensein geändert.
AND soh.SalesPersonID IN (@BusinessPersonID)
Klicken Sie auf die Schaltfläche Ausführen (!). Wenn Sie nach den Abfrageparametern gefragt werden, geben Sie die Werte mithilfe der folgenden Tabelle ein. Das Testen mehrwertiger Parameter wird im Abfrage-Designer nicht unterstützt.
@StartDate
20010101
@EndDate
20030101
@BusinessPersonID
290
Klicken Sie auf OK.
Das Resultset wird für den Vertriebsmitarbeiter Ranjit Varkey Chudukatil mit BusinessPersonID = 290 angezeigt.
So bearbeiten Sie den BusinessPersonID-Berichtsparameter zum Annehmen mehrerer Werte
Erweitern Sie im Bereich für die Berichtsdaten den Knoten Parameter, und doppelklicken Sie auf den Parameter BusinessPersonID.
Wählen Sie die Option Mehrere Werte zulassen aus.
Klicken Sie auf OK.
Klicken Sie auf Vorschau. Der Bericht wird automatisch ausgeführt. Die Namen aller Vertriebsmitarbeiter werden in einer Dropdownliste für BusinessPersonID aufgeführt.
Hinweis |
---|
Der Wert (Alles auswählen) wird als erster Wert in einer Dropdownliste der verfügbaren Werte für einen mehrwertigen Parameter angegeben. Mit diesem Kontrollkästchen können Sie alle Werte auswählen bzw. die Auswahl aller Werte aufheben. Standardmäßig sind alle Werte ausgewählt. |
So fügen Sie ein neues Dataset zum Auffüllen der gültigen Werte für einen Berichtsparameter hinzu
Wechseln Sie zur Entwurfsansicht.
Klicken Sie im Bereich für die Berichtsdaten mit der rechten Maustaste auf AdventureWorks_Ref, und klicken Sie anschließend auf DataSet hinzufügen. Das Dialogfeld Dataseteigenschaften wird angezeigt.
Geben Sie in das Feld Name den Namen WeekDaysfromQuery ein.
Überprüfen Sie unter Abfragetyp, ob Text ausgewählt ist.
Geben Sie folgende Abfragezeichenfolge in das Feld Abfrage ein oder fügen Sie diese mit Kopieren und Einfügen ein:
SET DATEFIRST 1; SELECT DISTINCT DATEPART(weekday, S.OrderDate) as WeekDayNumber, DATENAME(weekday, S.OrderDate) as Weekday FROM Sales.SalesOrderHeader S Order by WeekDayNumber
Klicken Sie auf der Symbolleiste des Abfrage-Designers auf die Schaltfläche Ausführen (!). Im Resultset werden Ordinalzahlen (Ordnungszahlen) und Wochentage angezeigt.
Klicken Sie zweimal auf OK, um das Dialogfeld Dataseteigenschaften zu schließen.
Das WeekDaysfromQuery-Dataset wird im Bereich für die Berichtsdaten angezeigt.
So bearbeiten Sie einen Parameter für die Annahme von mehreren Werten, Standardwerten und gültigen Werten
Erweitern Sie im Bereich für die Berichtsdaten den Knoten Parameter, und doppelklicken Sie auf DayoftheWeek. Das Dialogfeld Berichtsparametereigenschaften wird geöffnet.
Wählen Sie Mehrere Werte zulassen aus.
Klicken Sie auf Verfügbare Werte.
Wählen Sie Werte aus Abfrage abrufen aus.
Wählen Sie unter Dataset den Eintrag WeekDaysfromQuery aus der Dropdownliste aus.
Wählen Sie unter Wertfeld den Eintrag Weekday aus der Dropdownliste aus.
Wählen Sie unter Bezeichnungsfeld den Eintrag Weekday aus der Dropdownliste aus.
Klicken Sie auf Standardwerte.
Wählen Sie Werte angeben aus.
Wählen Sie den vorhandenen Wert Friday aus, und klicken Sie auf Löschen (optional).
Klicken Sie auf Hinzufügen.
Geben Sie im Feld Wert den Wert Saturday ein.
Klicken Sie auf Hinzufügen.
Geben Sie im Feld Wert den Wert Sunday ein.
Klicken Sie auf OK.
Bevor Sie eine Vorschau für den Bericht anzeigen können, müssen Sie den für den Tabellendatenbereich definierten Filterausdruck so ändern, dass der IN-Operator verwendet wird, da der DayoftheWeek-Parameter mehrere Werte annehmen kann.
So ändern Sie einen Filter zur Verwendung mehrwertiger Parameter
Klicken Sie in der Entwurfsansicht mit der rechten Maustaste auf die Tabelle und anschließend auf Tablix-Eigenschaften. Das Dialogfeld Tablix-Eigenschaften wird geöffnet.
Klicken Sie auf Filter. Es wurde bereits ein Filter für DaysoftheWeek aus Lektion 1 hinzugefügt.
Vergewissern Sie sich, dass die Spalte Ausdruck (von der Dropdownliste) den Wert [Weekday] enthält.
Stellen Sie sicher, dass Text ausgewählt ist.
Ändern Sie den Operator vom Gleichheitszeichen (=) in den In-Operator.
Vergewissern Sie sich, dass das Textfeld Wert (von der Dropdownliste) den Wert [@DayoftheWeek] enthält.
Klicken Sie auf OK.
Der Filter für die Tabelle ist nun so festgelegt, dass der Wert des Felds Weekday mithilfe des In-Operators mit dem Wert des Parameters DayoftheWeek verglichen wird. Wenn Sie mehrere Werte für den Berichtsparameter auswählen, testet der Filter jede Zeile der Tabelle daraufhin, ob das Feld Weekday in der DayoftheWeek-Auflistung vorhanden ist.
Klicken Sie auf Vorschau. Im Bericht wird der Berichtsparameter DaysoftheWeek mit den Standardwerten Saturday und Sunday angezeigt. Verwenden Sie die Dropdownliste, um mehrere Werte für den DayoftheWeek-Parameter auszuwählen.
Nächste Schritte
Sie haben die Berichtsparametereigenschaften erfolgreich von einwertig in mehrwertig geändert. Sie haben die erforderlichen Änderungen in einer Abfrage, einem Filter und in einem Ausdruck vorgenommen. Diese Elemente werden mithilfe einer mehrwertigen Parameterauflistung berücksichtigt. Sie haben gelernt, mehrwertige Parameter in einem Ausdruck zu verwenden. In der nächsten Lektion lernen Sie, Parameter zu erstellen, deren Werte in Abhängigkeit vom ausgewählten Wert für einen früheren Parameter bedingt gefüllt werden. Siehe Lektion 4: Hinzufügen von kaskadierenden Parametern.