Sotto Report basati su DO
copia linkTrascrizione
Come promesso, ecco il Report già strutturato con alcune proprietà visualizzate, report che andremo a modificare con l’aggiunta di un sottoreport. Vi mostro la funzionalità del sottoreport Document Oriented, perché è leggermente differente dalla modalità Database.
La parte iniziale di creazione Report è identica. Quindi, in primis, creiamo, all’interno del report, una sezione ad-hoc: Albero di progetto, Report Appartamenti, tasto destro, Aggiungi Sezione. Assegniamo come identificativo Sezione Prezzi: quindi confermiamo.
Adesso, aumento l’altezza della sezione che abbiamo appena inserito, così lavoriamo meglio e all’interno creo una box, assegnando come identificativo Box Prezzi: confermo. Sistemo un attimo questa box. Al solito, il sistema crea la box con all’interno anche l’oggetto span, nel nostro caso non ci serve. Quindi: l’oggetto span Box Prezzi andiamo ad eliminarlo.
Siamo pronti per l’aggiunta del sottoreport: in corrispondenza dell’oggetto Box Prezzi, tasto destro: Aggiungi Report. Assegniamo come identificativo la frase Report Elenco Prezzi, così da riconoscere questo report e confermiamo.
Gli oggetti sottoreport contengono sempre tutte le sezioni anche se, come nel nostro caso, avremo bisogno solo di Intestazione Pagina e Dettaglio. Quindi procedo alla cancellazione delle Sezioni che non interessano, quindi: Intestazione Report, Piede Pagina e Piede Report.
Prima di impostare la Master Query del sottoreport, analizziamo un attimo la struttura documentale, che abbiamo creato partendo dalla classe Appartamento. La classe Appartamento contiene, tra le proprietà, 3 Collection derivate dalle classi Media, Prezzo e Servizio Appartamenti. Nella scrittura della Master Query Report, di tipo DO, noi dovremo sempre riferirci alla Classe e non alle proprietà di tipo Collection. Quindi, nel nostro esempio, ci riferiremo alla classe Prezzo e solo successivamente andremo a specificare che i due report, il Report Appartamenti e il Report dell’elenco Prezzo, dovranno rispecchiare la stessa struttura documentale che si evince dalla classe Appartamento.
Quindi, torniamo al Libro, visualizziamo la Master Query del Sottoreport con il doppio clic e sulla riga from, noi impostiamo l’Oggetto: la Classe DO Prezzo. Aggiungiamo anche tutte le colonne, quindi premo <INVIO> alla riga select e digito il di simbolo Asterisco: quindi ancora <INVIO>.
Adesso vado ad aggiungere a questo sottoreport le Box e gli Span, relativi a questa Master Query. Potete mettere in pausa questo video, potete farlo anche voi e ci troviamo dopo quando ho concluso la sistemazione Eseguo abbastanza velocemente l’aggiunta delle Box e degli Span relativi a questa Master Query: fatelo anche voi, mettete il video in pausa e ci troviamo tra poco.
PAUSA
Eccoci tornati con il sottoreport compilato, insomma, un po’ sistemato. In stampa succederà quello che ci si aspetta? Cioè, il motore stampa stamperà il primo appartamento, seguito dai suoi prezzi, poi il secondo appartamento, seguito dai suoi prezzi, e così via?
Bè, diciamo che, questo che vi ho raccontato, sarebbe ciò che vorremmo ottenere, ma non succederà. Non succederà, in quanto, nella Master Query relativa al Sottoreport, nessuno ha esplicitamente richiesto di mostrare solo i Prezzi, dove l’idAppartamento fosse uguale all’Id dell’Appartamento che sta stampando in quel momento. Se andiamo ad analizzare, appunto, la Master Query, con un doppio clic vendiamo che non c’è nessuna condizione di where. Questa impostazione che vi ho raccontato è necessaria e indispensabile, nel caso ci trovassimo in un sottoreport di tipo database. Ma, essendo in versione DO, possiamo rifarci alla struttura documentale che è già presente nella Classe Appartamenti.
In effetti, avevamo visto prima, nella struttura documentale dell’Appartamento, abbiamo la collection Prezzi. Quindi, vuole dire che il framework sa benissimo come caricare i prezzi per ogni appartamento: dobbiamo solo comunicare la nostra intenzione anche con questo Report. Sì, proprio così: cioè, dobbiamo dire al Report Appartamenti, a questo report, che sarà il Report Master e che invece il Report Elenco Prezzi sarà il dettaglio. Questa operazione avviene semplicemente con il mouse e la tastiera, ovviamente nell’albero di progetto.
Trasciniamo il Report Appartamenti sul Sottoreport Elenco Prezzi: questa operazione di trascinamento deve avvenire con il tasto SHIFT premuto sulla tastiera. Al momento del rilascio, se date un occhio alla barra di stato, prima di rilasciare, troverete che l’operazione che state eseguendo è appunto: Imposta Report Master.
Rilasciamo, quindi, il mouse e successivamente la tastiera e adesso l’icona del Sottoreport conterrà una piccola iconcina con la freccia arancione. Questo indica il collegamento con il report principale: tutti i sottoreport DO che andremo inserire, se devono legarsi al report principale, dovranno possedere la stessa icona di collegamento.
In ultimo, vi ricordo di non dimenticarsi di applicare le stesse logiche che avevamo visto di Mantieni Insieme, che abbiamo già visto per i sottoreport DO: cioè, togliere il flag Mantieni Insieme alla Box Prezzi e alla Sezione Prezzi, così da consentire la divisione del sottoreport su più pagine.
La parte iniziale di creazione Report è identica. Quindi, in primis, creiamo, all’interno del report, una sezione ad-hoc: Albero di progetto, Report Appartamenti, tasto destro, Aggiungi Sezione. Assegniamo come identificativo Sezione Prezzi: quindi confermiamo.
Adesso, aumento l’altezza della sezione che abbiamo appena inserito, così lavoriamo meglio e all’interno creo una box, assegnando come identificativo Box Prezzi: confermo. Sistemo un attimo questa box. Al solito, il sistema crea la box con all’interno anche l’oggetto span, nel nostro caso non ci serve. Quindi: l’oggetto span Box Prezzi andiamo ad eliminarlo.
Siamo pronti per l’aggiunta del sottoreport: in corrispondenza dell’oggetto Box Prezzi, tasto destro: Aggiungi Report. Assegniamo come identificativo la frase Report Elenco Prezzi, così da riconoscere questo report e confermiamo.
Gli oggetti sottoreport contengono sempre tutte le sezioni anche se, come nel nostro caso, avremo bisogno solo di Intestazione Pagina e Dettaglio. Quindi procedo alla cancellazione delle Sezioni che non interessano, quindi: Intestazione Report, Piede Pagina e Piede Report.
Prima di impostare la Master Query del sottoreport, analizziamo un attimo la struttura documentale, che abbiamo creato partendo dalla classe Appartamento. La classe Appartamento contiene, tra le proprietà, 3 Collection derivate dalle classi Media, Prezzo e Servizio Appartamenti. Nella scrittura della Master Query Report, di tipo DO, noi dovremo sempre riferirci alla Classe e non alle proprietà di tipo Collection. Quindi, nel nostro esempio, ci riferiremo alla classe Prezzo e solo successivamente andremo a specificare che i due report, il Report Appartamenti e il Report dell’elenco Prezzo, dovranno rispecchiare la stessa struttura documentale che si evince dalla classe Appartamento.
Quindi, torniamo al Libro, visualizziamo la Master Query del Sottoreport con il doppio clic e sulla riga from, noi impostiamo l’Oggetto: la Classe DO Prezzo. Aggiungiamo anche tutte le colonne, quindi premo <INVIO> alla riga select e digito il di simbolo Asterisco: quindi ancora <INVIO>.
Adesso vado ad aggiungere a questo sottoreport le Box e gli Span, relativi a questa Master Query. Potete mettere in pausa questo video, potete farlo anche voi e ci troviamo dopo quando ho concluso la sistemazione Eseguo abbastanza velocemente l’aggiunta delle Box e degli Span relativi a questa Master Query: fatelo anche voi, mettete il video in pausa e ci troviamo tra poco.
PAUSA
Eccoci tornati con il sottoreport compilato, insomma, un po’ sistemato. In stampa succederà quello che ci si aspetta? Cioè, il motore stampa stamperà il primo appartamento, seguito dai suoi prezzi, poi il secondo appartamento, seguito dai suoi prezzi, e così via?
Bè, diciamo che, questo che vi ho raccontato, sarebbe ciò che vorremmo ottenere, ma non succederà. Non succederà, in quanto, nella Master Query relativa al Sottoreport, nessuno ha esplicitamente richiesto di mostrare solo i Prezzi, dove l’idAppartamento fosse uguale all’Id dell’Appartamento che sta stampando in quel momento. Se andiamo ad analizzare, appunto, la Master Query, con un doppio clic vendiamo che non c’è nessuna condizione di where. Questa impostazione che vi ho raccontato è necessaria e indispensabile, nel caso ci trovassimo in un sottoreport di tipo database. Ma, essendo in versione DO, possiamo rifarci alla struttura documentale che è già presente nella Classe Appartamenti.
In effetti, avevamo visto prima, nella struttura documentale dell’Appartamento, abbiamo la collection Prezzi. Quindi, vuole dire che il framework sa benissimo come caricare i prezzi per ogni appartamento: dobbiamo solo comunicare la nostra intenzione anche con questo Report. Sì, proprio così: cioè, dobbiamo dire al Report Appartamenti, a questo report, che sarà il Report Master e che invece il Report Elenco Prezzi sarà il dettaglio. Questa operazione avviene semplicemente con il mouse e la tastiera, ovviamente nell’albero di progetto.
Trasciniamo il Report Appartamenti sul Sottoreport Elenco Prezzi: questa operazione di trascinamento deve avvenire con il tasto SHIFT premuto sulla tastiera. Al momento del rilascio, se date un occhio alla barra di stato, prima di rilasciare, troverete che l’operazione che state eseguendo è appunto: Imposta Report Master.
Rilasciamo, quindi, il mouse e successivamente la tastiera e adesso l’icona del Sottoreport conterrà una piccola iconcina con la freccia arancione. Questo indica il collegamento con il report principale: tutti i sottoreport DO che andremo inserire, se devono legarsi al report principale, dovranno possedere la stessa icona di collegamento.
In ultimo, vi ricordo di non dimenticarsi di applicare le stesse logiche che avevamo visto di Mantieni Insieme, che abbiamo già visto per i sottoreport DO: cioè, togliere il flag Mantieni Insieme alla Box Prezzi e alla Sezione Prezzi, così da consentire la divisione del sottoreport su più pagine.
Ultima modifica: 16/06/2021 / Validità: da 21.0.8100