Lezione 2: Aggiunta di parametri a Filtra per Data
Data creazione: 17 luglio 2006
Includendo parametri per una data di inizio e di fine in una query per il report, è possibile specificare un intervallo di date che limita i dati recuperati dall'origine dei dati. È possibile creare parametri aggiuntivi per filtrare i dati dopo che vengono recuperati dall'origine dei dati.
In questa lezione verranno aggiunti i parametri di query @StartDate e @EndDate. I parametri del report con distinzione tra maiuscole e minuscole StartDate e EndDate (senza l'indicatore di parametro di query @) vengono creati automaticamente. Si noti che diversi provider di dati utilizzano diversi indicatori di parametri di query. Il provider di dati Oracle utilizza ad esempio i due punti (:) invece del simbolo chiocciola (@).
Il tipo di dati dei parametri verrà impostato su DateTime e nella barra degli strumenti verrà visualizzato un controllo calendario con la casella di testo dei parametri. Verranno impostati valori predefiniti per i parametri in modo che il report possa essere eseguito automaticamente. Verrà infine creato un parametro del report DayofWeek non associato a un parametro di query e lo si utilizzerà per filtrare i dati dopo che questi sono stati recuperati dall'origine dei dati.
Per aggiungere parametri di data alla query
Nella visualizzazione Dati selezionare il set di dati AdventureWorks.
Sostituire la query esistente con la query seguente:
SELECT S.OrderDate, 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)) -- Accurate Enddate would be '20020228 23:59:59.997'
[!NOTA] SQL Server archivia i dati DATETIME in modo accurato in un trecentesimo di secondo. Per ulteriori informazioni, vedere Tipi di dati data/ora (Transact-SQL). Se non vengono restituiti i risultati filtrati attesi utilizzando una variabile DateTime, potrebbe essere necessario utilizzare un'ora più precisa nel parametro di query.
In questa esercitazione verranno utilizzati valori datetime approssimati.
Fare clic su Esegui (!) sulla barra degli strumenti. Verrà visualizzata la finestra di dialogo Definisci parametri query.
Nella colonna Valore parametro immettere un valore per @StartDate, ad esempio 20010101.
Nella colonna Valore parametro immettere un valore per @EndDate, ad esempio 20030101.
Fare clic su OK. I parametri del report StartDate e EndDate verranno creati automaticamente e ne verrà impostato il tipo di dati predefinito String. Nei tre passaggi seguenti questi parametri verranno impostati sul tipo di dati DateTime.
Scegliere Parametri report dal menu Report. Verrà visualizzata la finestra di dialogo Parametri report.
Nella casella di riepilogo Parametri verificare che StartDate sia evidenziato. Selezionare DateTime nell'elenco a discesa Tipo di dati.
Nella casella di riepilogo Parametri selezionare EndDate. Selezionare DateTime nell'elenco a discesa Tipo di dati.
Fare clic su OK.
Fare clic su Anteprima. I parametri StartDate e EndDate verranno visualizzati nella barra degli strumenti con un controllo calendario. I controlli calendario vengono visualizzati automaticamente quando il tipo di dati del parametro è DateTime e non è stato definito un elenco di valori disponibili. Quando si definisce un elenco di valori disponibili viene creato un elenco a discesa di valori invece di un controllo calendario.
In questa esercitazione, invece di utilizzare il controllo calendario verrà immesso un valore per i dati.
Nella casella di testo del parametro StartDate immettere la data 2001-01-01.
Nella casella di testo EndDate immettere la data 2003-01-01.
Fare clic su Visualizza report. Nel report verranno visualizzati solo i record di dati che rientrano nei valori del parametro del report.
Dopo aver creato i parametri di query per il report, è possibile aggiungere valori predefiniti per tali parametri. I parametri predefiniti consentono l'esecuzione automatica del report. In caso contrario, è necessario immettere valori per i parametri per poter eseguire il report.
Per impostare valori predefiniti per i parametri di data
Nella visualizzazione Layout scegliere Parametri report dal menu Report. Verrà visualizzata la finestra di dialogo Parametri report.
Nella casella di riepilogo Parametri verificare che StartDate sia evidenziato.
Nella sezione dei valori predefiniti selezionare Non da query e digitare 2001-01-01. Premere TAB per uscire dalla casella di testo.
Nella casella di riepilogo Parametri selezionare EndDate.
Nella sezione dei valori predefiniti selezionare Non da query e digitare 2003-01-01. Premere TAB per uscire dalla casella di testo.
Fare clic su OK.
Fare clic su Anteprima. Il report verrà eseguito immediatamente in quanto sono stati definiti valori predefiniti per tutti i parametri.
Quando si esegue il report, è possibile impostare valori predefiniti che rientrano nell'ambito dei parametri di query. È ad esempio possibile specificare valori per i parametri del report che limitano i dati visualizzabili a un mese.
Per aggiungere un nuovo campo alla query per utilizzare un filtro
Nella visualizzazione Dati selezionare il set di dati AdventureWorks.
Nella query definire una colonna calcolata aggiuntiva per il giorno della settimana in cui si è verificata una vendita aggiungendo il comando seguente all'istruzione SELECT: DATENAME(weekday, S.OrderDate) as Weekday.
Sostituire la query esistente con il testo 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))
Fare clic su Esegui (!). Verranno visualizzati una nuova colonna denominata Weekday e i nomi dei giorni della settimana.
Nella finestra Set di dati verificare che Weekday sia un campo.
[!NOTA] Se la finestra Set di dati non è visibile, scegliere Set di dati dal menu Visualizza.
In questo modo è stato aggiunto un campo di set di dati aggiuntivo denominato Weekday. Quando si crea manualmente un parametro del report e lo si associa a questo campo, sarà possibile filtrare i dati del report in base al giorno della settimana.
Per aggiungere un nuovo parametro del report
Fare clic sulla scheda Layout.
Scegliere Parametri report dal menu Report. Verrà visualizzata la finestra di dialogo Parametri report.
Fare clic su Aggiungi. Verrà visualizzato un nuovo parametro, Report_Parameter_2, con valori predefiniti.
Nella sezione Proprietà sostituire Report_Parameter_2 con DayoftheWeek nella casella di testo Nome. Verificare che il tipo di dati sia String.
In Messaggio di richiesta digitare Filter on which day of the week:.
Deselezionare la casella di controllo Consenti nessun valore.
Nella sezione Valori disponibili selezionare Non da query. Non specificare alcun valore.
Nella sezione Valori predefiniti selezionare Non da query. Nella casella di testo digitare Sunday.
Fare clic su OK.
Per impostare un filtro di tabella con un'espressione per i parametri
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 selezionare =Fields!Weekday.Value.
Verificare che in Operatore sia selezionato il segno di uguale (=).
Fare clic nella casella di testo Valore e selezionare <Espressione> nell'elenco a discesa. Verrà visualizzata la finestra di dialogo Modifica espressione.
Nel riquadro delle variabili globali fare clic su Parametri. Nel riquadro opposto verrà visualizzato l'elenco corrente dei parametri.
Fare doppio clic su DayoftheWeek. L'espressione per il parametro verrà aggiunta alla casella di testo dell'espressione. Nella casella di testo per l'espressione verrà visualizzata l'espressione seguente: =Parameters!DayoftheWeek.Value.
Fare clic su OK.
Fare clic su OK.
Il filtro per la tabella è ora impostato per confrontare il valore del campo Weekday con il valore del parametro DayoftheWeek. Se si immette ad esempio il valore Sunday nella barra degli strumenti del report per DayoftheWeek, durante l'elaborazione del report verranno elaborate solo quelle righe della tabella in cui il valore per il campo Weekday è Sunday.
Fare clic su Anteprima. Poiché i parametri hanno valori predefiniti, il report verrà eseguito automaticamente. Nella tabella vengono visualizzati solo i valori che rientrano nell'intervallo di date definito da StartDate e EndDate e che corrispondono a Sunday.
Nella procedura facoltativa seguente verrà aggiunta formattazione all'intestazione della tabella.
Per impostare il colore di sfondo e del tipo di carattere per la riga dell'intestazione della tabella (facoltativo)
Fare clic sulla scheda Layout.
Fare clic nella tabella. Verranno visualizzati i quadratini di ridimensionamento della tabella.
Fare clic sulla riga dell'intestazione della tabella. Nella barra degli strumenti di layout fare clic su Colore di sfondo. Verrà visualizzata la finestra di dialogo Scegli colore.
Nella scheda Web scegliere DarkRed.
Fare clic su OK.
Scegliere quindi un colore per il tipo di carattere.
Nella barra degli strumenti di layout fare clic su Colore primo piano. Verrà visualizzata la finestra di dialogo Scegli colore.
Nella scheda Web scegliere White.
Fare clic su OK.
Fare clic su Anteprima. La tabella verrà visualizzata con i colori scelti per la riga dell'intestazione della tabella.
Passaggi successivi
In questo modo sono stati definiti parametri di query e parametri del report, sono stati impostati valori predefiniti per i parametri ed è stato associato un parametro del report a un campo calcolato. Nella lezione successiva verranno descritte le procedure per creare un elenco di valori disponibili, o valori validi, per un parametro. Vedere Lezione 3: Aggiunta di un parametro a valore singolo con un elenco di valori disponibili.