Condividi tramite


Procedura dettagliata: creazione di un report di ReportViewer

In questa procedura guidata viene illustrato come creare un semplice report tabella basato sul database di esempio AdventureWorks in un progetto di applicazione Windows in Microsoft Visual Studio 2008. Verranno illustrate le procedure per aggiungere un modello di report al progetto, impostare le informazioni di connessione per il database AdventureWorks, definire una query, aggiungere un'area dati tabella e aggiungere un controllo Windows Form ReportViewer a un Windows Form in modo che il report possa essere visualizzato dagli utenti tramite l'applicazione.

Prerequisiti

Per utilizzare questa procedura dettagliata, è necessario poter accedere al database di esempio AdventureWorks per SQL Server 2005. Con una versione precedente di AdventureWorks, non sarà possibile eseguire query. Per ulteriori informazioni sull'installazione della versione SQL Server 2005 di AdventureWorks, vedere Procedura dettagliata: installazione del database AdventureWorks.

Questa procedura guidata presuppone la conoscenza delle query Transact-SQL e degli oggetti DataSet e DataTable di ADO.NET.

Per creare un nuovo progetto di applicazione basato su Windows

  1. Aprire Visual Studio. Scegliere Nuovo dal menu File e quindi selezionare Progetto.

  2. Nel riquadro Tipi progetto scegliere Visual Basic.

  3. Nel riquadro Modelli scegliere Applicazione Windows per creare un'applicazione basata su Microsoft Windows.

  4. Nella casella Nome digitare SimpleReport.

  5. Nella casella Percorso immettere la directory in cui si desidera salvare il progetto oppure fare clic su Sfoglia per selezionarla.

    Viene aperto Progettazione Windows Form in cui è visualizzato Form1 del progetto creato.

  6. Fare clic sul form. Scegliere Finestra Proprietà dal menu Visualizza. Espandere la proprietà Size per visualizzare Width e Height. Impostare Width su 500 pixel.

Per definire una connessione all'origine dei dati e una tabella di dati

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto denominato SimpleReport (non sulla soluzione), scegliere Aggiungi, quindi Nuovo elemento. Se la finestra Esplora soluzioni non è visibile, scegliere Esplora soluzioni dal menu Visualizza.

  2. Nella finestra di dialogo Aggiungi nuovo elemento fare clic su DataSet. Digitare un nome per il nuovo set di dati e fare clic su Aggiungi. Il nome predefinito è DataSet1.xsd.

    In questo modo verrà aggiunto un nuovo file XSD al progetto e aperto Progettazione DataSet.

  3. Scegliere Finestra di progettazione dal menu Visualizza. Aprire la casella degli strumenti e trascinare un controllo TableAdapter sulla superficie di progettazione DataSet.

    In questo modo verrà avviata la Configurazione guidata TableAdapter.

  4. Nella pagina Seleziona connessione dati fare clic su Nuova connessione.

  5. Nella pagina Aggiungi connessione, eseguire le operazioni seguenti:

    • Nella finestra di dialogo Origine dei dati selezionare Microsoft SQL Server.

    • Nella finestra di dialogo Nome server immettere il server in cui è archiviato il database AdventureWorks.

      L'istanza di SQL Server Express predefinita è (locale)\sqlexpress.

    • ScegliereAdventureWorks dall'elenco a discesa.

    • Fare clic su OK per ritornare alla procedura guidata, quindi scegliere Avanti.

  6. Nella pagina Salva stringa di connessione nel file di configurazione dell'applicazione digitare il nome per la stringa di connessione o accettare il nome predefinito AdventureWorksConnectionString. Fare clic su Avanti.

  7. Nella pagina Seleziona un tipo di comando selezionare Usa istruzioni SQL e fare clic su Avanti.

  8. Nella pagina Immettere un'istruzione SQL inserire la query Transact-SQL seguente per recuperare i dati di vendita dal database AdventureWorks e fare clic su Fine.

    SELECT  S.OrderDate, S.SalesOrderNumber, S.TotalDue AS TotalSales, 
            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
    

    È anche possibile fare clic sul pulsante Generatore query e utilizzare il generatore delle query per creare una query e convalidarla facendo clic sul pulsante Esegui query.

    In Progettazione DataSet verranno visualizzate le definizioni DataTable per DataTable1 con i campi denominati dalle colonne e gli alias colonne della query (OrderDate, SalesOrderNumber, TotalSales, FirstName e LastName). I campi saranno utilizzati dalla finestra Origini dei dati durante l'associazione di dati alle aree dati del report.

    NoteNota

    Se è necessario modificare i campi nella tabella dati, fare clic con il pulsante destro del mouse sull'intestazione DataTable1 o sull'intestazione DataTable1TableAdapter nella pagina Progettazione DataSet. Scegliere Configura in modo da riavviare Configurazione guidata TableAdapter.

Per aggiungere un nuovo file di definizione del report

  1. Scegliere Aggiungi Nuovo elemento dal menu Progetto.

  2. Nella finestra di dialogo Aggiungi nuovo elemento fare clic su Report.

  3. Nella casella Nome digitare Sales Orders.rdlc, quindi fare clic su Aggiungi per aprire un'area di progettazione grafica.

    L'area di progettazione grafica è inclusa nel componente Progettazione report di Visual Studio 2008.

Per aggiungere una tabella al layout del report

  1. Con Sales Orders.rdlc in modalità di progettazione grafica, selezionare Casella degli strumenti dal menu Visualizza.

    Verrà visualizzata la casella degli strumenti.

  2. ****Scegliere Tabella dalla sezione Dati della casella degli strumenti, quindi fare clic sull'area di progettazione del report.

    In Progettazione report verrà visualizzata una tabella composta da tre colonne che occupa l'intera larghezza del report.

  3. Fare clic nella tabella in modo che vengano visualizzati gli handle di colonna e riga sopra e a sinistra della tabella.

  4. Fare clic con il pulsante destro del mouse sull'handle della prima colonna, quindi scegliere Inserisci colonna a sinistra.

  5. Espandere il nodo Size dalla finestra Proprietà per table1. Per impostazione predefinita, la finestra Proprietà è ancorata in Esplora soluzioni. È anche possibile aprire questa finestra selezionando Finestra Proprietà dal menu Visualizza.

  6. Impostare la proprietà Width del nodo Size su 121 mm. In questo modo la larghezza della tabella e delle colonne sarà impostata sulla spaziatura per la visualizzazione nel form.

  7. In Progettazione report selezionare l'area di progettazione.

  8. Espandere il nodo Size dalla finestra Proprietà e impostare Width su 127 mm.

  9. Fare clic sul nodo DataTable1 dalla finestra Origini dei dati per espanderlo e visualizzare i campi dei dati. Eseguire quindi le operazioni seguenti:

    • Trascinare il campo LastName dalla finestra Origine dei dati alla riga centrale (dettagli) della prima colonna della tabella.

    • Quando si rilascia il campo nella cella centrale si verificano i due eventi indicati di seguito.

      Innanzitutto, la cella di dettaglio conterrà il testo seguente: =Fields!LastName.Value. Il testo corrisponde a un'espressione che specifica i valori dei dati del campo LastName. I campi aggiunti a una riga Dettaglio vengono sempre specificati come espressioni.

      In secondo luogo un valore di intestazione di colonna verrà inserito nella prima riga, proprio sopra l'espressione di campo. Per impostazione predefinita la colonna è generata dal nome del campo. Per i nomi di campo con la convenzione Pascal, i nomi delle colonne saranno scritti in maiuscolo e ogni parola sarà separata da uno spazio. LastName, ad esempio, diventerà >Last Name.

    • Trascinare il campo OrderDate dalla finestra Origine dei dati alla riga centrale (dettagli) della seconda colonna della tabella.

    • Trascinare il campo SalesOrderNumber dalla finestra Origine dei dati alla riga centrale (dettagli) della terza colonna della tabella.

    • Trascinare il campo TotalSales dalla finestra Origine dei dati alla riga centrale (dettagli) dell'ultima colonna della tabella.

    Nel diagramma riportato di seguito è illustrata un'area dati di tabella compilata con i campi seguenti: LastName, OrderDate, SalesOrderNumber e TotalSales.

    Tabella predefinita per la definizione dei report

Per aggiungere il controllo ReportViewer al form

  1. In Esplora soluzioni fare clic su Form1.vb.

  2. Scegliere Finestra di progettazione dal menu Visualizza.

  3. Dalla sezione Dati della casella degli strumenti trascinare il controllo ReportViewer nel form.

  4. Fare clic sul form. Espandere Size dalla finestra Proprietà. Impostare le proprietà relative alla larghezza e all'altezza in base alle esigenze.

  5. Aprire il pannello smart tag del controllo ReportViewer facendo clic sul triangolo nell'angolo superiore destro dello stesso. Fare clic sull'elenco a discesa Scegli report e selezionare Sales Orders.rdlc.

  6. Scegliere Ancora nel contenitore padre dal pannello smart tag.

    È possibile generare l'applicazione e visualizzare il report nel form in qualsiasi momento nel resto di questa procedura guidata. Per verificare in che modo le modifiche incrementali apportate nel corso della progettazione influiscono sul report finale, generare e visualizzare il report come ultimo passaggio in ognuna delle procedure descritte di seguito.

  7. Facoltativamente premere F5 per generare l'applicazione e visualizzare il report nel form.

    Nel diagramma seguente è visualizzato il rendering della definizione del report corrente nel form. Saranno visualizzate una riga di intestazione e una riga di dettaglio per ogni riga della tabella dati e una riga del piè di pagina nell'ultima pagina del report. Il formato di visualizzazione è predefinito.

    Tabella predefinita in un report visualizzabile

Per formattare un campo di tipo data

  1. Fare clic con il pulsante destro del mouse nella cella contenente l'espressione per il campo OrderDate e scegliere Proprietà. Verrà visualizzata la finestra di dialogo Proprietà casella di testo.

  2. Selezionare la scheda Formato e fare clic sul pulsante Sfoglia () per aprire la finestra di dialogo Scegli formato.

    Nella casella Formato, selezionare Standard, Data, quindi scegliere il formato della data.

  3. Fare clic su OK per chiudere la finestra di dialogo Scegli formato e quindi nuovamente su OK per chiudere la finestra di dialogo Proprietà casella di testo.

    Finestra di dialogo Scegli formato per la data

  4. Facoltativamente premere F5 per generare l'applicazione e visualizzare il report. In questo caso, la colonna relativa alla data verrà visualizzata nel formato appena applicato.

Per formattare un campo di tipo valuta

  1. Fare clic con il pulsante destro del mouse nella cella contenente l'espressione per il campo TotalSales e scegliere Proprietà.

  2. Selezionare la scheda Formato e fare clic sul pulsante Sfoglia () per aprire la finestra di dialogo Scegli formato.

  3. Nella casella Formato, selezionare Standard, Valuta, quindi scegliere il formato della valuta.

  4. Fare clic su OK e quindi nuovamente su OK per chiudere la finestra di dialogo Proprietà casella di testo.

    Finestra di dialogo Scegli formato per la valuta

  5. Facoltativamente premere F5 per generare l'applicazione e visualizzare il report. In questo caso, i valori della colonna Total Sales saranno visualizzati in formato valuta.

Per formattare intestazioni di tabelle

  1. Fare clic nella tabella in modo che vengano visualizzati gli handle di colonna e riga sopra e a sinistra della tabella.

    NoteNota

    I selettori sono rappresentati da caselle di colore grigio visualizzate sopra e accanto alla tabella. È possibile utilizzare i selettori per eseguire varie azioni sulle colonne, sulle righe e sulla tabella stessa. Sopra la tabella sono disponibili i selettori di colonna, mentre accanto alla tabella sono disponibili i selettori di riga. Il selettore disponibile nel punto di incontro tra i selettori di riga e di colonna è il selettore in angolo. Per visualizzare un esempio dei selettori di tabella, vedere Aggiunta di aree dati tabella (Progettazione report di Visual Studio).

  2. Selezionare gli handle della prima riga contenenti le etichette di intestazione delle colonne, quindi fare clic su Grassetto.

  3. Fare clic sulla riga di intestazione della tabella, quindi selezionare Colore di sfondo. Fare clic sulla scheda Web e selezionare RosaPallido. Fare clic su OK.

  4. Facoltativamente premere F5 per generare l'applicazione e visualizzare il report. Nel diagramma seguente è visualizzata la formattazione del report.

    Visualizzazione della tabella predefinita con formattazione

Per definire un gruppo per un report tabulare

  1. Fare clic nella tabella in modo che vengano visualizzati gli handle di colonna e riga sopra e a sinistra della tabella.

  2. Fare clic con il pulsante destro del mouse su uno dei selettori di riga e quindi scegliere Inserisci gruppo.

  3. Nella scheda Generale selezionare =Fields!LastName.Value nella prima riga e =Fields!FirstName.Value nella seconda riga nella casella Raggruppa in base a. In questo modo i dati verranno raggruppati in base al nome del venditore. È possibile radunare i dati in base a campi non utilizzati nell'area dati della tabella ma disponibili nei campi DataTable1.

    Scheda Generale, pagina Proprietà raggruppamento e ordinamento

  4. Fare clic su OK.

    Alla tabella verranno aggiunti un'intestazione di gruppo e un piè di pagina di gruppo.

Per riepilogare i dati in base al gruppo

  1. Fare clic sulla riga di intestazione del gruppo, quindi scegliere Colore di sfondo. Fare clic sulla scheda Web e selezionare CianoChiaro. Fare clic su OK.

  2. Sostituire in ogni riga TotalSales con un'espressione nell'intestazione di gruppo corrispondente a un totale combinato per il gruppo.

    1. Fare clic con il pulsante destro del mouse sull'intestazione di gruppo relativa a Total Sales e scegliere Proprietà. Verrà visualizzata la finestra di dialogo Proprietà casella di testo.

    2. Copiare il testo riportato di seguito e incollarlo nell'elenco a discesa Valore.

      =Sum(Fields!TotalSales.Value)
      
    3. Applicare il formato valuta a questa casella di testo.

  3. Sostituire il nome ripetuto in ogni riga dell'intestazione di gruppo con un'espressione costituita da due righe: la prima riga indica il nome e cognome; la seconda riga il numero delle vendite con valore non Null.

    1. Selezionare l'espressione dalla riga di dettaglio Last Name ed eliminarla.

    2. Fare clic con il pulsante destro del mouse sulla riga di intestazione del gruppo per Last Name e scegliere Espressione. Copiare il testo seguente e incollarlo nella finestra di dialogo Modifica espressione.

      Fields!FirstName.Value + " " + Fields!LastName.Value + ": " + vbCrLf + Count(Fields!SalesOrderNumber.Value).ToString()
      

    Nel diagramma seguente viene mostrato l'editor espressioni dopo questo passaggio.

    Finestra di dialogo Modifica espressione per la casella di testo dei raggruppamenti

  4. Facoltativamente premere F5 per generare l'applicazione e visualizzare il report. Nel diagramma seguente sono mostrate le righe della tabella raggruppate in base al nome di ogni venditore. Ogni intestazione di gruppo contiene il riepilogo delle righe di dettaglio per il gruppo con la visualizzazione del nome del venditore, del numero di vendite e della quantità totale venduta.

    Visualizzazione di un raggruppamento di tabella in un report elaborato

Per ordinare gruppi in un report tabulare

  1. Selezionare l'area dati della tabella e scegliere Proprietà tabella.

  2. Fare clic sulla scheda Gruppi. L'unico gruppo definito, table1_Group1, viene selezionato automaticamente. Fare clic su Modifica. Verrà visualizzata la finestra di dialogo Raggruppamento e ordinamento.

    Verificare che la finestra di dialogo visualizzata sia Proprietà raggruppamento e ordinamento e non Proprietà tabella. La scheda Ordinamento di Proprietà tabella consente di controllare l'ordinamento delle righe di dettaglio, non dei gruppi. Nella procedura successiva verrà impostato l'ordinamento dei dettagli.

  3. Fare clic sulla scheda Ordinamento. Nella casella Ordina in base a, selezionare <Espressione...> dall'elenco a discesa. Digitare l'espressione in base a cui eseguire l'ordinamento nella casella Modifica espressione. Ad esempio:

    =Count(Fields!SalesOrderNumber.Value)

  4. Fare clic su OK.

    Finestra di dialogo Raggruppamento e ordinamento

  5. Facoltativamente premere F5 per generare l'applicazione e visualizzare il report. Il report è ora ordinato in base al numero di vendite realizzate da ciascun venditore.

    Visualizzazione di un raggruppamento di tabella ordinato

Per ordinare le righe di dettaglio in un gruppo di un report tabulare

  1. Fare clic nella tabella in modo che vengano visualizzati i selettori di colonna e riga sopra e a sinistra della tabella.

  2. Fare clic con il pulsante destro del mouse sul selettore in angolo e quindi scegliere Proprietà. Verrà visualizzata la finestra di dialogo Proprietà tabella.

    NoteNota

    Il selettore in angolo è il selettore disponibile nel punto di incontro tra i selettori di riga e di colonna.

  3. Nella scheda Ordinamento selezionare =Fields!TotalSold.Value nella casella Ordina in base a. Nella casella Direzione, selezionare Decrescente. In questo modo i dati di dettaglio saranno ordinati in base alla quantità venduta a partire dai valori maggiori.

  4. Fare clic su OK.

    La finestra di dialogo Proprietà tabella dovrebbe essere analoga a quella illustrata nella figura seguente.

    Finestra di dialogo Proprietà tabella, scheda Ordinamento

  5. Facoltativamente premere F5 per generare l'applicazione e visualizzare il report. Nella figura seguente viene visualizzata la pagina 2 del risultante report in cui sono riportati i gruppi con più righe di dettaglio.

    Visualizzazione di dati del report raggruppati ordinati in una riga di dettaglio

Per aggiungere dati di riepilogo al piè di pagina di un report tabulare

  1. Selezionare le celle Sales Order e Total Sales nella riga del piè di pagina della tabella. Fare clic con il pulsante destro del mouse sulle celle selezionate e scegliere Unisci celle.

    In questo modo si acquisirà più spazio per formattare la somma di tutte le vendite della tabella.

  2. Fare clic con il pulsante destro del mouse nella singola cella unita e scegliere Proprietà.

  3. Nell'elenco a discesa Valore digitare l'espressione seguente:

    =Sum(Fields!TotalSales.Value)

  4. Applicare il formato valuta alla cella unita.

  5. Fare clic nella cella della casella di testo accanto alle celle unite e creare un'etichetta. Digitare, ad esempio, Totale venduto:. Si noti che non si tratta di un'espressione, ma di semplice testo.

  6. Facoltativamente, impostare come colore di sfondo della riga del piè di pagina lo stesso colore della riga di intestazione.

    Nella figura seguente è illustrata la definizione della tabella.

    Tabella per la definizione dei report con piè di pagina

  7. Facoltativamente premere F5 per generare l'applicazione e visualizzare il report. Fare clic sul pulsante LastPage nella barra degli strumenti del report visualizzato per spostarsi all'ultima pagina del report. Scorrere fino al fondo della pagina per visualizzare il valore del totale vendite.

    Visualizzazione di una tabella con risultati nel piè di pagina

Vedere anche

Riferimento

Microsoft.Reporting.WinForms.ReportViewer.Drillthrough
Microsoft.Reporting.WinForms.LocalReport.SubreportProcessing
Microsoft.Reporting.WebForms.ReportViewer.Drillthrough
Microsoft.Reporting.WebForms.LocalReport.SubreportProcessing

Concetti

Utilizzo del riquadro degli smart tag delle attività di ReportViewer

Altre risorse

Esempi e scenari