Lezione 4: Aggiunta di un parametro multivalore con Seleziona tutto
Data aggiornamento: 12 dicembre 2006
In questa lezione i parametri SalesOrderID e DayoftheWeek verranno modificati da parametri a valore singolo a parametri multivalore. I parametri multivalore consentono di selezionare più valori per un parametro del report. Per modificare il parametro del report SalesOrderID, verrà modificata la query per il set di dati AdventureWorks per verificare @SalesPersonID nell'insieme dei valori selezionati invece che come valore singolo, e si controllerà la proprietà multivalore del parametro del 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 aprire il report Sales Orders
In SQL Server Business Intelligence Development Studio aprire il progetto Server report Tutorial creato nella lezione precedente.
In Esplora soluzioni fare doppio clic sul report Sales Orders. Il report verrà aperto nella visualizzazione Layout.
Fare clic sulla scheda Dati.
Per modificare la query del set di dati per verificare l'inclusione in un insieme di valori
Selezionare AdventureWorks nell'elenco a discesa Set di dati.
Modificare la clausola WHERE della query esistente cambiando la verifica di
@SalesPersonID
da uguaglianza (= (@SalesPersonID)
) a inclusione(IN (@SalesPersonID)
).Sostituire la stringa di query per questo set di dati con la query seguente.
SELECT S.OrderDate, DATENAME(weekday, S.OrderDate) as Weekday, S.SalesOrderNumber, S.TotalDue, C.FirstName, C.LastName FROM HumanResources.Employee E INNER JOIN Person.Contact C ON E.ContactID = C.ContactID INNER JOIN Sales.SalesOrderHeader S ON E.EmployeeID = S.SalesPersonID WHERE ( S.OrderDate BETWEEN (@StartDate) AND (@EndDate) AND S.SalesPersonID IN (@SalesPersonID) )
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
20010101
@EndDate
20030101
@SalesPersonID
286
Fare clic su OK. Verrà visualizzato il set dei risultati per il venditore Ranjit Varkey Chudakatil con SalesPersonID = 286.
Per impostare le proprietà del parametro del report SalesPersonID
Scegliere Parametri report dal menu Report. Verrà visualizzata la finestra di dialogo Parametri report.
Nel riquadro Parametri selezionare SalesPersonID.
Nella sezione Proprietà selezionare Multivalore.
Nella casella di testo Messaggio di richiesta digitare Select Sales Persons:.
Fare clic su OK.
Fare clic sulla scheda Anteprima. Nel report verrà visualizzato un elenco a discesa con i nomi dei venditori.
[!NOTA] Verrà fornito un valore (Seleziona tutto) come primo valore dell'elenco a discesa dei valori disponibili per un parametro multivalore. Utilizzare questa casella di controllo per selezionare o deselezionare tutti i valori.
[!NOTA] L'opzione Seleziona tutto è stata disattivata in SQL Server 2005 Service Pack 1, ma è di nuovo disponibile in SQL Server 2005 Service Pack 2.
Per aggiungere un nuovo set di dati per i valori disponibili per DaysoftheWeek
Nell'elenco a discesa Set di dati della scheda Dati selezionare <Nuovo set di dati>.
Impostare l'origine dei dati sull'origine dei dati AdventureWorks.
Nel campo Nome digitare WeekDaysfromQuery.
Nel riquadro delle query incollare la 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
DATEFIRST
imposta il giorno della settimana che si desidera utilizzare come primo giorno.SET DATEFIRST 7
modifica ad esempio l'ordine dei giorni della settimana in modo che la domenica sia il primo giorno. Per ulteriori informazioni, vedere SET DATEFIRST (Transact-SQL).In questa esercitazione lunedì è il primo giorno della settimana.
Fare clic su OK.
Fare clic sul pulsante Esegui (!) sulla barra degli strumenti di Progettazione query. Nel set di risultati verranno visualizzati numeri ordinali e giorni della settimana.
Per impostare le proprietà del parametro del report DayoftheWeek
Scegliere Parametri report dal menu Report. Verrà visualizzata la finestra di dialogo Parametri report.
Nel riquadro Parametri selezionare DayoftheWeek. Questo parametro è stato creato nella lezione 2.
Nella sezione Proprietà selezionare Multivalore.
Nella casella di testo Messaggio di richiesta digitare Filter on which days of the week:.
Nella sezione Valori disponibili selezionare WeekDaysfromQuery nell'elenco a discesa Set di dati.
Nell'elenco a discesa Campo valori selezionare Weekday.
Nell'elenco a discesa Campo etichette selezionare Weekday.
Per i valori predefiniti, nella prima casella di testo Valore digitare Saturday e nella seconda casella di testo Valore digitare Sunday.
Fare clic su OK.
Prima di visualizzare l'anteprima del report è necessario modificare l'espressione di filtro definita per l'area dati della tabella per l'utilizzo dell'operatore IN in quanto ora il parametro DayoftheWeek è multivalore.
Per modificare il filtro per l'utilizzo di un parametro multivalore
Nella visualizzazione Layout selezionare la tabella. La tabella verrà visualizzata con un contorno di colore grigio.
Fare clic con il pulsante destro del mouse sul contorno della tabella e scegliere Proprietà. Verrà visualizzata la finestra di dialogo Proprietà tabella.
Fare clic sulla scheda Filtri.
Nell'elenco a discesa della colonna Espressione verificare che il valore sia
=Fields!Weekday.Value
.Modificare l'operatore dal segno di uguale (=) all'operatore In.
Nell'elenco a discesa della casella di testo Valore verificare che il valore sia
=Parameters!DayoftheWeek.Value
.Fare clic su OK.
Il filtro per la tabella è ora impostato per confrontare il valore del campo Weekday con il valore del parametro DayoftheWeek utilizzando l'operatore In. Quando si scelgono più valori per il parametro del report, il filtro verificherà ogni riga della tabella per determinare se il campo Weekday esiste nell'insieme DayoftheWeek.
Fare clic sulla scheda Anteprima. Nel report verrà visualizzato il parametro del report DaysoftheWeek con i valori predefiniti Saturday e Sunday.
[!NOTA] Verrà fornito un valore (Seleziona tutto), con l'eccezione indicata in una procedura precedente, come primo valore dell'elenco a discesa dei valori disponibili per un parametro multivalore. Utilizzare questa casella di controllo per selezionare o deselezionare tutti i valori.
Per aggiungere una casella di testo per visualizzare i valori dei parametri
Nella visualizzazione Layout selezionare la tabella. Premere più volte il tasto freccia GIÙ per spostare la tabella verso il basso ed espandere l'altezza del report.
Dalla casella degli strumenti trascinare una casella di testo sulla tabella. Selezionare un lato della casella di testo ed espanderne la larghezza affinché corrisponda alla larghezza della tabella.
Incollare l'espressione seguente nella casella di testo:
="From " & Parameters!StartDate.Value & " to " & Parameters!EndDate.Value & vbCrLf & "For the following " & Parameters!DayoftheWeek.Count & " days of the week: " & Join(Parameters!DayoftheWeek.Value,", ") & vbCrLf & "First and last selected salespersons: " & Parameters!SalesPersonID.Label(0) & " and " & Parameters!SalesPersonID.Label(Parameters!SalesPersonID.Count-1)
Ci sono diversi aspetti dell'espressione che è importante avere presente:
- È possibile fare riferimento all'etichetta del parametro invece che al valore. Esempio:
Parameters!SalesPersonID.Label
invece diParameters!SalesPersonID.Value
. - Per fare riferimento a un singolo membro di un insieme di parametri, utilizzare l'indice in base zero. Esempio:
Parameters!SalesPersonID.Label(0)
. - Per fare riferimento all'intero insieme, non utilizzare alcun indice. Esempio:
Parameters!SalesPersonID.Value
. - Per trovare il numero di valori, utilizzare
Parameters!SalesPersonID.Count
. - È inoltre possibile scoprire se un parametro è multivalore. Esempio:
Parameters!SalesPersonID.IsMultivalue
. - È possibile concatenare tutti i valori selezionati in un parametro multivalore utilizzando la funzione Join di Visual Basic. Esempio:
Join(Parameters!DayoftheWeek.Value,", ")
.
- È possibile fare riferimento all'etichetta del parametro invece che al valore. Esempio:
Fare clic su Anteprima. Verificare che quando si fa clic su Visualizza report nella casella di testo vengano visualizzati i valori selezionati nei parametri.
Passaggi successivi
In questo modo sono state modificate le proprietà dei parametri del 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 un insieme di parametri multivalore e sono state eseguite le procedure per l'utilizzo di parametri multivalore in un'espressione. Nella lezione successiva verranno descritte le procedure per creare un parametro booleano per controllare la quantità di dettagli da visualizzare in un report. Vedere Lezione 5: Aggiunta di un parametro per il controllo della visibilità delle righe.
Cronologia modifiche
Versione | Cronologia |
---|---|
12 dicembre 2006 |
|
Vedere anche
Attività
Altre risorse
Utilizzo di parametri in Reporting Services