Condividi tramite


Lezione 1: Aggiunta di parametri per il filtraggio dei report in base alla data (Generatore report 2.0)

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 visualizzati nel riquadro Dati report, in Transact-SQL i parametri di query iniziano con il simbolo @.

Impostando il tipo di dati dei parametri su DateTime, sulla barra degli strumenti del visualizzatore di report verrà visualizzato un controllo di 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 (Generatore report 2.0).

Per aprire un report esistente

  1. Fare clic sul pulsante Start, scegliere Programmi, Generatore report per Microsoft SQL Server 2008 e quindi fare clic su Generatore report 2.0.

  2. Dal pulsante Generatore report, fare clic su Apri.

  3. Passare a Sales Order, ovvero il report creato in Esercitazione: Creazione di un report tabella semplice (Generatore report 2.0).

  4. Fare clic su Apri. La definizione del report verrà aperta nella visualizzazione Progettazione.

    Si sostituirà quindi la query del set di dati con una query contenente un parametro di query.

Per sostituire la query del set di dati esistente

  1. Nel riquadro Dati report fare clic con il pulsante destro del mouse sul set di dati DataSet1 e scegliere Query. Verrà visualizzata la finestra Progettazione query.

  2. Nel riquadro delle query sostituire il testo con la query seguente:

    SELECT
      SH.OrderDate
      ,SH.SalesOrderNumber
      ,SD.OrderQty
      ,SD.LineTotal
      ,P.Name AS [Product]
      ,PS.Name AS [Subcategory]
    FROM
      Sales.SalesOrderHeader AS SH
      INNER JOIN Sales.SalesOrderDetail AS SD
        ON SH.SalesOrderID = SD.SalesOrderID
      INNER JOIN Production.Product AS P
       ON SD.ProductID = P.ProductID
      INNER JOIN Production.ProductSubcategory AS PS
       ON PS.ProductSubcategoryID = P.ProductSubcategoryID
      INNER JOIN Production.ProductCategory AS PC
       ON PC.ProductCategoryID = PS.ProductCategoryID
    WHERE PC.Name = 'Clothing' AND SH.OnlineOrderFlag = 0
       AND (SH.OrderDate BETWEEN (@StartDate) AND (@EndDate))
    

    Si tratta di una query analoga a quella precedente, con la rimozione della clausola di ordinamento ORDER BY e l'aggiunta di una condizione con due parametri di limitazione:

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

  3. Fare clic su Esegui (!) sulla barra degli strumenti. Verrà visualizzata la finestra di dialogo Definisci parametri query nella quale viene richiesto un valore per ogni parametro.

  4. 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.

  5. Fare clic su OK. 

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

  6. Fare clic su OK. 

    Nel riquadro Dati report espandere il nodo Parametri per visualizzare i due parametri del report StartDate e EndDate che vengono creati automaticamente dai parametri di query.

    Dopo aver definito i parametri di query che rappresentano una data o un'ora, è necessario modificare il tipo di dati dei parametri di report in modo che corrispondano.

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

  1. Nel riquadro Dati report fare clic con il pulsante destro del mouse su StartDate, quindi scegliere Proprietà parametri.

  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. Verrà impostato il tipo di dati del parametro di report salvato nella definizione del report.

  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 Esegui per visualizzare l'anteprima del report. I parametri StartDate ed EndDate verranno visualizzati sulla barra degli strumenti dei report con un controllo di 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 di valori disponibili, viene invece visualizzato un elenco a discesa di valori.

  9. Fornire due valori di parametro per eseguire il report. È possibile utilizzare il controllo di calendario o semplicemente digitare le date seguenti:

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

    2. Nella casella di testo del parametro EndDate digitare 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. In alternativa, per eseguire il report è necessario immettere manualmente i valori dei parametri.

Per impostare valori predefiniti per i parametri

  1. Passare alla visualizzazione Progettazione.

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

  3. Fare clic su Valori predefiniti.

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

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

  6. Nella casella di testo Valore sostituire il testo predefinito (Null) e digitare 2001-01-01.

  7. Fare clic su OK. 

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

  9. Fare clic su Valori predefiniti.

  10. Selezionare l'opzione Imposta valori.

  11. Fare clic su Aggiungi.

  12. Digitare 2003-01-01.

  13. Fare clic su OK.

  14. Fare clic su Anteprima. Il report verrà eseguito immediatamente perché a ogni parametro è associato un valore predefinito.

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 DataSet1 e scegliere Proprietà set di dati. Aprire Progettazione query e sostituire la query con la nuova query seguente:

    SELECT
      SH.OrderDate
      ,DATENAME(weekday, SH.OrderDate) as Weekday
      ,SH.SalesOrderNumber
      ,SD.OrderQty
      ,SD.LineTotal
      ,P.Name AS [Product]
      ,PS.Name AS [Subcategory]
    FROM
      Sales.SalesOrderHeader AS SH
      INNER JOIN Sales.SalesOrderDetail AS SD
        ON SH.SalesOrderID = SD.SalesOrderID
      INNER JOIN Production.Product AS P
       ON SD.ProductID = P.ProductID
      INNER JOIN Production.ProductSubcategory AS PS
       ON PS.ProductSubcategoryID = P.ProductSubcategoryID
      INNER JOIN Production.ProductCategory AS PC
       ON PC.ProductCategoryID = PS.ProductCategoryID
    WHERE PC.Name = 'Clothing' AND SH.OnlineOrderFlag = 0
       AND (SH.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.

    Ora che nella tabella sono contenuti dati che identificano il giorno della settimana, è possibile aggiungere un filtro in modo che nel report vengano utilizzate solo le vendite relative a uno specifico giorno della settimana. A scopo di verifica, è possibile visualizzare il giorno della settimana con la data dell'ordine di vendita.

Per formattare la data nella tabella

  1. Passare alla visualizzazione Progettazione.

  2. Fare clic sulla cella contenente l'espressione per il campo OrderDate. Nel gruppo Numero della scheda Home fare clic sul pulsante di visualizzazione della finestra di dialogo.

  3. In Categoria verificare che sia selezionato Data.

  4. Nella casella Tipo selezionare un tipo di data che visualizzi il giorno della settimana. Se, ad esempio, nelle impostazioni internazionali è selezionata l'opzione Italiano (Italia), è possibile selezionare lunedì 31 gennaio 2000.

  5. Fare clic su OK.

  6. Fare clic su Esegui per visualizzare l'anteprima del report. La data nella prima colonna della tabella indica il giorno della settimana e la data di calendario.

    Si aggiungerà quindi un parametro per consentire all'utente di filtrare in base al giorno della settimana.

Per aggiungere un nuovo parametro di report

  1. Passare alla visualizzazione Progettazione.

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

  3. In Nome digitare DayoftheWeek.

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

  5. Verificare che il tipo di dati sia Text.

  6. Fare clic su Valori predefiniti.

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

  8. Fare clic su Aggiungi.

  9. Digitare Venerdì.

  10. Fare clic su OK. 

    Si aggiungerà quindi un filtro per visualizzare solo il valore scelto per il parametro DayoftheWeek. È possibile aggiungere un filtro alla tabella o al set di dati. In questo report sono inclusi sia una tabella che un grafico con gli stessi dati visualizzati. Aggiungere il filtro alla tabella se si desidera visualizzare solo i dati filtrati nella tabella. Aggiungere il filtro al set di dati se si desidera visualizzare i dati filtrati sia nella tabella che nel grafico. Nella procedura riportata di seguito viene impostato il filtro sul set di dati.

Per impostare un filtro del set di dati con un'espressione per i parametri

  1. Nel riquadro Dati report della visualizzazione Progettazione fare clic con il pulsante destro del mouse su DataSet1, quindi scegliere Proprietà set di dati.

  2. Fare clic su Filtri.

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

  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 =Parameters!DayoftheWeek.Value.

  8. Fare clic su OK. 

    In Valore viene visualizzata l'espressione semplice per il parametro DayoftheWeek: [@DayoftheWeek].

  9. Fare clic su OK. 

    A questo punto il filtro per il set di dati è 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 viene eseguito automaticamente. Nella tabella e nel grafico vengono visualizzati solo i valori che rientrano nell'intervallo di date definito da StartDate e EndDate e che corrispondono a un venerdì. Per questo set di dati, solo tre date corrispondono a un venerdì:

    • 1 febbraio 2002

    • 1 marzo 2002

    • 1 novembre 2002

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 un set di dati. 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 (Generatore report 2.0).

Vedere anche

Altre risorse