Cerca
  • marco ferrari

Capire la struttura di un Dataset nei report e costruire un'anteprima dei dati in Excel

Come molti di voi sapranno, uno dei problemi maggiori nella costruzione dei report è riuscire a visualizzare il dataset prima di creare il layout. Questo perché quando costruiamo un report basato su diversi dataitem, quello che poi si vede nel Report Builder è comunque un'unica grande tabella contenente tutti i campi (column) di tutti i dataitem inseriti nella query. In altri termini, il sistema esegue una sorta di denormalizzazione dei nostri dati, ripetendo i record in uno scenario uno-a-molti.


In questo post voglio spiegare con quale logica il sistema converte la struttura in un unico dataset e come ottenere una visualizzazione della propria query.


Supponiamo di voler stampare una fattura registrata che contenga dei commenti associati ad alcune righe. La struttura delle tabelle sarebbe questa:

Questa verrebbe tradotta in questa struttura:

Per poter ottenere un'anteprima del nostro dataset, dobbiamo inserire alcune colonne nella struttura:

Ora, quando lanciamo il report basta selezionare la voce Documento di Microsoft Excel (solo dati).


Nell'Excel scaricato possiamo quindi vedere il nostro dataset

Come si può notare, la Inner Join viene tradotta in un'unica tabella in cui le colonne del primo dataitem vengono ripetute per ogni riga dei dataitem annidati sottostanti.

In questo caso specifico, le prime due righe della fattura hanno associate due righe di commento ciascuna e per questo motivo vediamo il numero dell'articolo ripetuto due volte per ciascuna riga; viceversa, non avendo l'ultima riga alcun commento associato, la vediamo apparire una volta sola ma con il NULL nella colonna Comment.


Spesso nei report standard troviamo un primo/ultimo dataitem associato alla tabella virtuale Integer filtrata in modo da restituire un unico record. Questo serve tipicamente ad avere una sezione header/footer nella quale inserire, ad esempio, i dati della società o i totali.


Anche in questo caso il risultato è un dataset unico, ma vediamo in dettaglio cosa succede. Supponiamo di avere questa struttura:


Il primo e l'ultimo dataitem vengono visti dal sistema come query separate, con questo risultato finale:

Adesso è chiaro quanto sia importante conoscere bene come i nostri record sono distribuiti all'interno del dataset prima di costruire il layout del report, perché questo ci permette di capire quando e in che modo utilizzare i gruppi o i filtri delle Tablix per mostrarli.


Un suggerimento che può aiutare a semplificare la costruzione del layout è quello di inserire in ciascun dataitem delle colonne "segnaposto" che lo identifichino, come nell'esempio sopra, in modo da rendere più lineare l'uso dei filtri delle Tablix nel Report Builder o in Word.

28 visualizzazioni0 commenti

Post recenti

Mostra tutti