Lezione 3: Aggiunta di parametri per la selezione di più valori in un elenco (SSRS)
In questa lezione i parametri BusinessPersonID e DayoftheWeek verranno modificati da parametri a valore singolo in parametri multivalore. I parametri multivalore consentono di selezionare più valori per un parametro del report. Per modificare il parametro di report BusinessPersonID, verrà modificata la query per il set di dati AdventureWorks2008R22008 per testare @BusinessPersonID nel set di valori selezionati invece che come valore singolo e verrà controllata la proprietà multivalore del parametro di report. Per modificare il parametro del report DayoftheWeek, verrà controllata la proprietà multivalore, i valori disponibili verranno impostati da un nuovo set di dati e verrà fornita un'espressione per i valori predefiniti. Verrà creato un nuovo set di dati per fornire i valori disponibili per il parametro DayoftheWeek. Verrà infine aggiunta una casella di testo al report per visualizzare i valori del parametro per le selezioni DayoftheWeek eseguite.
Per sostituire il set di dati esistente
Nel riquadro Dati report fare clic con il pulsante destro del mouse sul set di dati AdventureWorksDataset e scegliere Proprietà set di dati.
In Origine dati verificare che sia selezionato AdventureWorks_Ref.
In Tipo di query verificare che sia selezionato Testo.
Fare clic su Progettazione query per aprirla.
Sostituire il testo nella casella di testo con la query seguente:
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)
Si tratta della stessa query precedente, con l'eccezione che una condizione è stata modificata da uguaglianza a inclusione.
AND soh.SalesPersonID IN (@BusinessPersonID)
Fare clic sul pulsante Esegui (!). Quando vengono richiesti i parametri della query, utilizzare la tabella seguente per immettere i valori. Progettazione query non supporta la verifica di parametri multivalore.
@StartDate
1/1/2001
@EndDate
1/1/2003
@BusinessPersonID
290
Fare clic su OK.
Verrà visualizzato il set dei risultati per il venditore Ranjit Varkey Chudukatil con BusinessPersonID = 290.
Per modificare il parametro di report BusinessPersonID in modo che vengano accettati più valori
Nel riquadro Dati report espandere Parametri e fare doppio clic sul parametro BusinessPersonID.
Selezionare l'opzione Consenti più valori.
Fare clic su OK.
Fare clic su Anteprima. Il report viene eseguito automaticamente. In un elenco a discesa di BusinessPersonID vengono visualizzati tutti i nomi dei venditori.
Nota
Viene fornito il valore (Seleziona tutto) come primo valore di un elenco a discesa dei valori disponibili per un parametro multivalore. Utilizzare questa casella di controllo per selezionare o deselezionare tutti i valori. Tutti i valori sono selezionati per impostazione predefinita.
Per aggiungere un nuovo set di dati per popolare i valori validi per un parametro di report
Passare alla visualizzazione Progettazione.
Nel riquadro Dati report fare clic con il pulsante destro del mouse su AdventureWorks_Ref e scegliere Aggiungi set di dati. Verrà visualizzata la finestra di dialogo Proprietà set di dati.
Nel campo Nome digitare WeekDaysfromQuery.
In Tipo di query verificare che sia selezionato Testo.
In Query digitare o incollare la stringa di query seguente:
SET DATEFIRST 1; SELECT DISTINCT DATEPART(weekday, S.OrderDate) as WeekDayNumber, DATENAME(weekday, S.OrderDate) as Weekday FROM Sales.SalesOrderHeader S Order by WeekDayNumber
Fare clic sul pulsante Esegui (!) sulla barra degli strumenti di Progettazione query. Nel set di risultati verranno visualizzati numeri ordinali e giorni della settimana.
Fare due volte clic su OK per chiudere la finestra di dialogo Proprietà set di dati.
Nel riquadro Dati report verrà visualizzato il set di dati WeekDaysfromQuery.
Per modificare un parametro in modo che vengano accettati più valori, valori predefiniti e valori validi
Nel riquadro Dati report espandere Parametri e fare doppio clic su DayoftheWeek. Verrà visualizzata la finestra di dialogo Proprietà parametri report.
Selezionare Consenti più valori.
Fare clic su Valori disponibili.
Selezionare Ottieni valori da una query.
In Set di dati selezionare WeekDaysfromQuery nell'elenco a discesa.
Nell'elenco a discesa Campo valori selezionare Weekday.
Nell'elenco a discesa Campo etichette selezionare Weekday.
Fare clic su Valori predefiniti.
Selezionare Imposta valori.
(Facoltativo) Selezionare il valore esistente Venerdì e fare clic su Elimina.
Fare clic su Aggiungi.
Nella casella Valore digitare Sabato.
Fare clic su Aggiungi.
Nella casella Valore digitare Domenica.
Fare clic su OK.
Prima di visualizzare l'anteprima del report, è necessario modificare l'espressione di filtro definita per l'area dati tabella per consentire l'utilizzo dell'operatore IN, in quanto ora il parametro DayoftheWeek accetta più valori.
Per modificare un filtro per l'utilizzo di un parametro multivalore
Nella visualizzazione Progettazione fare clic con il pulsante destro del mouse nella tabella e scegliere Proprietà Tablix. Verrà visualizzata la finestra di dialogo Proprietà Tablix.
Fare clic su Filtri È già presente un filtro che è stato aggiunto per DaysoftheWeek nella lezione 1.
Nell'elenco a discesa di Espressione verificare che il valore sia [Weekday].
Verificare che sia selezionato Testo.
Modificare l'Operatore dal segno di uguale (=) all'operatore In.
Nell'elenco a discesa della casella di testo Valore verificare che il valore sia [@DayoftheWeek].
Fare clic su OK.
Il filtro per la tabella è ora impostato per il confronto del valore del campo Weekday con il valore del parametro DayoftheWeek mediante l'operatore In. Quando si scelgono più valori per il parametro di report, il filtro verificherà ogni riga della tabella per determinare se il campo Weekday esiste nella raccolta DayoftheWeek.
Fare clic su Anteprima. Nel report verrà visualizzato il parametro di report DaysoftheWeek con i valori predefiniti Sabato e Domenica. Utilizzare l'elenco a discesa per selezionare più valori per il parametro DayoftheWeek.
Passaggi successivi
In questo modo sono state modificate le proprietà dei parametri di report trasformando i parametri a valore singolo in parametri multivalore, sono state apportate le modifiche necessarie in una query, in un filtro e in un'espressione per utilizzare una raccolta di parametri multivalore e sono state eseguite le procedure per l'utilizzo di parametri multivalore in un'espressione. Nella prossima lezione si imparerà come creare parametri i cui valori vengono popolati in modo condizionale in base un valore selezionato da un parametro precedente. Vedere Lezione 4: Aggiunta di parametri di propagazione (SSRS).