Lezione 1: Aggiunta di parametri per il filtraggio dei report in base alla data

Includendo in una query per il report parametri relativi alla data di inizio e alla data di fine, è possibile specificare un intervallo di date che limita i dati recuperati dall'origine dati. È possibile creare parametri aggiuntivi per filtrare i dati dopo il loro recupero dall'origine dati.

In questa lezione verranno aggiunti i parametri @StartDate e @EndDate alla query per limitare i dati recuperati dall'origine dati. Due parametri di report, StartDate e EndDate, vengono automaticamente creati e visualizzati nel riquadro Dati report. Per i parametri viene fatta distinzione tra maiuscole e minuscole. Diversamente dai parametri di report, i parametri di query iniziano con il simbolo @.

Impostando il tipo di dati dei parametri su DateTime, nella barra degli strumenti del visualizzatore di report verrà visualizzato un controllo calendario con la casella di testo relativa ai 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 dati.

Per questa esercitazione è necessario avere completato Esercitazione: Creazione di un report tabella semplice.

Per aprire un progetto server report esistente

  1. Fare clic sul pulsante Start, scegliere Tutti i programmi, Microsoft SQL Server 2008 e quindi Business Intelligence Development Studio.

  2. Scegliere Apri dal menu File e fare clic su Progetto/Soluzione.

  3. Passare al file Tutorial.sln. Si tratta dell'esercitazione creata in Esercitazione: Creazione di un report tabella semplice.

  4. Scegliere OK per aprire il progetto. Il progetto Tutorial verrà visualizzato in Esplora soluzioni con un report denominato Sales Orders.rdl.

    Nota   Se Esplora soluzioni non è visualizzato, scegliere Esplora soluzioni dal menu Visualizza.

Per convertire un'origine dati incorporata in un'origine dati condivisa

  1. Nel riquadro Dati report fare clic con il pulsante destro del mouse sull'origine dati AdventureWorks e scegliere Converti in origine dati condivisa. Un'origine dati denominata AdventureWorks.rds verrà aggiunta in Esplora soluzioni.

  2. Nel riquadro Dati report fare clic con il pulsante destro del mouse sull'origine dati AdventureWorks e scegliere Proprietà origine dati.

  3. Nella casella Nome digitare AdventureWorks_Ref.

  4. Fare clic su OK.

Per sostituire il set di dati esistente

  1. Nel riquadro Dati report fare clic con il pulsante destro del mouse sul set di dati AdventureWorksDataset e scegliere Proprietà set di dati.

    [!NOTA]

    Se non è possibile visualizzare il riquadro Dati report, scegliere Dati report dal menu Visualizza.

  2. In Origine dati verificare che sia selezionato AdventureWorks_Ref.

  3. In Tipo di query verificare che sia selezionato Testo.

  4. Fare clic su Progettazione query per aprirlo.

  5. Sostituire il testo nella casella di testo con la query seguente.

    SELECT 
       soh.OrderDate AS [Date], 
       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)))
    

    Si tratta di una query analoga a quella precedente, con l'aggiunta di una condizione con due parametri di limitazione:

    AND (soh.OrderDate BETWEEN (@StartDate) AND (@EndDate))

  6. Fare clic su Esegui (!) sulla barra degli strumenti. Verrà visualizzata la finestra di dialogo Definisci parametri query nella quale vengono richiesti i valori dei parametri.

  7. Specificare due valori in modo da visualizzare un set di risultati filtrato:

    1. Nella colonna Valore parametro immettere un valore per @StartDate,, ad esempio 20010101.

    2. Nella colonna Valore parametro immettere un valore per @EndDate, ad esempio 20030101.

  8. Fare clic su OK.

  9. Nel set di risultati verrà visualizzato un set di dati filtrato per gli ordini relativi agli anni 2001 e 2002.

  10. Fare due volte clic su OK. Nel riquadro Dati report vengono inseriti i campi del set di dati. Si noti inoltre che due parametri del report, StartDate e EndDate, vengono automaticamente creati e visualizzati sotto il nodo Parametri.

Dopo aver definito parametri di query per il report, è necessario modificare il tipo di dati dei parametri di report in modo che corrispondano al tipo di dati dei dati di origine. L'impostazione predefinita è Testo, ovvero viene eseguito il mapping al tipo di dati String nella maggior parte delle origini dati. Se i dati di origine sono numerici, Booleani, o Data/Ora, è necessario modificare il tipo di dati dei parametri di report.

Per modificare il tipo di dati e i valori predefiniti di un parametro di report

  1. Nel riquadro Dati report espandere Parametri e fare doppio clic su StartDate. Verrà visualizzata la finestra di dialogo Proprietà parametri report.

  2. Verificare che il nome del parametro sia StartDate e che il messaggio di richiesta sia Data inizio.

  3. In Tipo di dati selezionare Data/Ora.

  4. Fare clic su OK.

  5. Nel riquadro Dati report fare doppio clic su EndDate. Verificare i valori del nome e del messaggio di richiesta.

  6. In Tipo di dati selezionare Data/Ora.

  7. Fare clic su OK.

  8. Fare clic su Anteprima. I parametri StartDate e EndDate verranno visualizzati nella barra degli strumenti dei report con un controllo calendario. I controlli calendario vengono visualizzati automaticamente quando il tipo di dati del parametro è Date/Time e non è stato definito un elenco dei valori disponibili. Se si definisce un elenco dei valori disponibili, viene invece visualizzato un elenco a discesa di valori.

  9. Fornire due valori di parametro per eseguire il report:

    1. Nella casella di testo del parametro StartDate immettere la data 2001-01-01.

    2. Nella casella di testo del parametro EndDate immettere la data 2003-01-01.

  10. Fare clic su Visualizza report. Nel report verranno visualizzati solo i dati che rientrano nei valori dei parametri di report.

Dopo aver creato i parametri di report, è possibile aggiungere valori predefiniti per tali parametri. I parametri predefiniti consentono l'esecuzione automatica del report. Per eseguire subito il report, è necessario immettere manualmente i valori dei parametri.

Per impostare valori predefiniti per i parametri

  1. Nel riquadro Dati report della visualizzazione Progettazione espandere Parametri e fare doppio clic su StartDate. Verrà visualizzata la finestra di dialogo Proprietà parametri report.

  2. Fare clic su Valori predefiniti.

  3. Selezionare l'opzione Imposta valori. Verranno visualizzati il pulsante Aggiungi e una griglia Valore vuota.

  4. Fare clic su Aggiungi. Verrà aggiunta una riga vuota alla griglia.

  5. Fare clic nella casella di testo Valore ed eliminare il testo predefinito (Null).

  6. Digitare 2001-01-01. Fare clic su OK.

  7. Nel riquadro Progettazione report fare doppio clic su EndDate.

  8. Fare clic su Valori predefiniti.

  9. Selezionare l'opzione Imposta valori.

  10. Fare clic su Aggiungi.

  11. Digitare 2003-01-01. Fare clic su OK.

  12. Fare clic su Anteprima. Il report verrà eseguito immediatamente in quanto sono stati definiti valori predefiniti per tutti i parametri.

Per aggiungere un nuovo campo alla query da utilizzare per il filtraggio

  1. Passare alla visualizzazione Progettazione.

  2. Fare clic con il pulsante destro del mouse sul set di dati AdventureWorksDataset e scegliere Proprietà set di dati. Aprire Progettazione query e sostituire la query con la nuova 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)))
    

    Aggiungendo il comando seguente all'istruzione SELECT, nella query viene definita una colonna calcolata aggiuntiva relativa al giorno della settimana in cui si è verificata una vendita:

    DATENAME(weekday, soh.OrderDate) as Weekday.

  3. Fare clic su Esegui (!). Verrà visualizzata la finestra di dialogo Definisci parametri query.

  4. Nella colonna Valore parametro immettere un valore per @StartDate,, ad esempio 20010101.

  5. Nella colonna Valore parametro immettere un valore per @EndDate, ad esempio 20030101.

  6. Fare clic su OK. A questo punto nel set di risultati dovrebbe essere visualizzata una nuova colonna etichettata Weekday.

  7. Fare due volte clic su OK. Nel riquadro Dati report verificare che Weekday sia un campo.

(Facoltativo) Per formattare la data nei dati della tabella che saranno filtrati

  1. Fare clic sulla scheda Progettazione.

  2. Fare clic con il pulsante destro del mouse nella cella contenente l'espressione per il campo [Date] e scegliere Proprietà casella di testo.

  3. Fare clic su Numero, quindi selezionare Data nel campo Categoria.

  4. Nella casella Tipo selezionare Monday, January 31, 2000.

  5. Fare clic su OK.

Per aggiungere un nuovo parametro di report

  1. Nel riquadro Dati report della visualizzazione Progettazione fare clic su Nuovo, quindi su Parametro. Verrà visualizzata la finestra di dialogo Proprietà parametri report.

  2. In Nome digitare DayoftheWeek.

  3. In Messaggio di richiesta digitare Filtro in base al giorno della settimana:.

  4. Verificare che il tipo di dati sia Text.

  5. Fare clic su Valori predefiniti.

  6. Selezionare l'opzione Imposta valori. Verranno visualizzati il pulsante Aggiungi e una griglia Valore vuota.

  7. Fare clic su Aggiungi.

  8. Digitare Venerdì.

  9. Fare clic su OK.

Per impostare un filtro di tabella con un'espressione per i parametri

  1. Nella visualizzazione Progettazione fare clic con il pulsante destro del mouse su un handle di riga o di colonna della tabella e scegliere Proprietà Tablix.

    [!NOTA]

    L'area dati tabella è un modello basato su un'area dati Tablix.

  2. Fare clic su Filtri. Verrà visualizzata una griglia filtri vuota.

  3. Fare clic su Aggiungi. Alla griglia verrà aggiunta una riga vuota.

  4. In Espressione selezionare [Weekday] nell'elenco a discesa.

  5. Verificare che in Operatore sia visualizzato il segno di uguale (=).

  6. Fare clic sul pulsante Espressione (fx) accanto alla casella di testo Valore. Verrà visualizzata la finestra di dialogo Espressione.

  7. In Categoria fare clic su Parametri. Nel riquadro Valori 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 dell'espressione è ora visualizzata l'espressione seguente: =Parameters!DayoftheWeek.Value.

  8. Fare clic su OK. Fare nuovamente clic su OK per chiudere la finestra di dialogo Proprietà Tablix.

    A questo punto il filtro per la tabella è stato impostato per il confronto del valore del campo Weekday con il valore di parametro relativo a DayoftheWeek. Se ad esempio si immette il valore Venerdì nella barra degli strumenti del report per DayoftheWeek, durante l'elaborazione del report verranno elaborate solo le righe della tabella in cui il valore per il campo Weekday è Venerdì.

    Fare clic su Anteprima. Poiché tutti 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 Venerdì.

Passaggi successivi

In questa lezione sono stati definiti parametri di query e parametri del report, sono stati impostati valori predefiniti per i parametri ed è stato impostato un filtro per la tabella. Nella lezione successiva verranno descritte le procedure per creare un elenco di valori disponibili, o valori validi, per un parametro. Vedere Lezione 2: Aggiunta di parametri per la creazione di un elenco di valori disponibili.