Report basati su DO: Master Query
copia linkTrascrizione
Una volta compreso il meccanismo dei Report in versione Database, possiamo provare a utilizzare una fonte dati differente. Ad esempio, una fonte dati documentali, con i Report DO Oriented.
Analizziamo la videata Appartamenti che contiene, appunto, un elenco di Appartamenti. Vorremmo poter produrre una stampa dalle caratteristiche seguenti, cioè:
Riportare in stampa solo i record mostrati nel pannello, è una funzionalità prevista anche nella versione Database. La versione DO, o Database, ovviamente, prevede una implementazione differente, ma, comunque, è prevista.
Consentire, invece, la stampa di informazioni non salvate è una funzionalità non prevista nella modalità Database, ma applicabile solamente alla modalità DO. Questo perché, ogni volta che il motore di stampa deve recuperare i dati, nella modalità Database deve necessariamente eseguire la Query ed ovviamente, se i dati non sono ancora salvati, non può di certo recuperarli.
Vediamo come utilizzare una Master Query DO Oriented per poter utilizzare le dinamiche appena viste. Aggiungiamo alla videata Appartamenti un Libro: Albero di progetto, tasto destro Aggiungi Libro sulla videata Appartamenti. Assegniamo come identificativo, quindi come Nome, a questo libro con un doppio clic il termine Elenco Appartamenti.
Non facciamo nessuna modifica alla pagina Mastro: passiamo subito al nostro report, al Nuovo Report. Quindi, un doppio clic sul Nuovo Report, in maniera tale che gli modifichiamo l’identificativo in Report Appartamenti e confermo. Espandiamo il ramo del Report e qui troviamo la Master Query: quindi, doppio clic sulla Master Query per poterla modificare nel Visual Code Editor. Andremo a digitare la query di caricamento, questa volta, utilizzando le classi documento, al posto delle tabelle database: quindi, sulla riga from digitiamo Appartamento, Appartamento come Classe, come Oggetto. Passiamo adesso alle colonne, ci si posiziona alla fine della riga select, si preme <INVIO>: inseriamo come colonna il simbolo asterisco, quindi premiamo <INVIO>. (Vi ricordo il simbolo ASTERISCO all’interno della Master Query aggiunge tutte le colonne presenti nella tabella di riferimento, in questo caso, nell’oggetto di riferimento.)
Avendo inserito come fonte dati una classe Documentale, il report, da questo momento, seguirà le logiche Document Oriented con vantaggi e limitazioni: il primo vantaggio è che sarà possibile, con una istruzione di codice, attaccare una collection al Report, evitando quindi che la Master Query venga eseguita.
Tornando alle richieste iniziali, vogliamo che il contenuto del pannello, anche non salvato, venga stampato? Benissimo, nel momento di stampa, andremo a recuperare la collection del pannello e la attaccheremo al Report: in questo caso il report non eseguirà la query sul database e così avremo ottenuto il risultato desiderato.
Passiamo, invece, alle limitazioni di una Master Query DO. Bè, non è possibile effettuare operazioni di JOIN con Tabelle o Documenti, in quanto non è una vera Query che stiamo scrivendo e quindi niente Join e niente colonne calcolate: tutto quello che dobbiamo stampare deve risiedere nelle proprietà del documento.
Vi lascio con un piccolo esercizio per la prossima lezione. Noi abbiamo aggiunto le colonne della Master Query, ma il report non contiene nessuna Box e nessuno Span. Bè, lascio a voi la creazione delle Box e degli Span per visualizzare la lista degli appartamenti. Al prossimo tutorial noi partiremo già con un report compilato.
Analizziamo la videata Appartamenti che contiene, appunto, un elenco di Appartamenti. Vorremmo poter produrre una stampa dalle caratteristiche seguenti, cioè:
- Stampare solo i record mostrati nel pannello
- Stampare i record anche quando l’utente non ha ancora salvato sul database
Riportare in stampa solo i record mostrati nel pannello, è una funzionalità prevista anche nella versione Database. La versione DO, o Database, ovviamente, prevede una implementazione differente, ma, comunque, è prevista.
Consentire, invece, la stampa di informazioni non salvate è una funzionalità non prevista nella modalità Database, ma applicabile solamente alla modalità DO. Questo perché, ogni volta che il motore di stampa deve recuperare i dati, nella modalità Database deve necessariamente eseguire la Query ed ovviamente, se i dati non sono ancora salvati, non può di certo recuperarli.
Vediamo come utilizzare una Master Query DO Oriented per poter utilizzare le dinamiche appena viste. Aggiungiamo alla videata Appartamenti un Libro: Albero di progetto, tasto destro Aggiungi Libro sulla videata Appartamenti. Assegniamo come identificativo, quindi come Nome, a questo libro con un doppio clic il termine Elenco Appartamenti.
Non facciamo nessuna modifica alla pagina Mastro: passiamo subito al nostro report, al Nuovo Report. Quindi, un doppio clic sul Nuovo Report, in maniera tale che gli modifichiamo l’identificativo in Report Appartamenti e confermo. Espandiamo il ramo del Report e qui troviamo la Master Query: quindi, doppio clic sulla Master Query per poterla modificare nel Visual Code Editor. Andremo a digitare la query di caricamento, questa volta, utilizzando le classi documento, al posto delle tabelle database: quindi, sulla riga from digitiamo Appartamento, Appartamento come Classe, come Oggetto. Passiamo adesso alle colonne, ci si posiziona alla fine della riga select, si preme <INVIO>: inseriamo come colonna il simbolo asterisco, quindi premiamo <INVIO>. (Vi ricordo il simbolo ASTERISCO all’interno della Master Query aggiunge tutte le colonne presenti nella tabella di riferimento, in questo caso, nell’oggetto di riferimento.)
Avendo inserito come fonte dati una classe Documentale, il report, da questo momento, seguirà le logiche Document Oriented con vantaggi e limitazioni: il primo vantaggio è che sarà possibile, con una istruzione di codice, attaccare una collection al Report, evitando quindi che la Master Query venga eseguita.
Tornando alle richieste iniziali, vogliamo che il contenuto del pannello, anche non salvato, venga stampato? Benissimo, nel momento di stampa, andremo a recuperare la collection del pannello e la attaccheremo al Report: in questo caso il report non eseguirà la query sul database e così avremo ottenuto il risultato desiderato.
Passiamo, invece, alle limitazioni di una Master Query DO. Bè, non è possibile effettuare operazioni di JOIN con Tabelle o Documenti, in quanto non è una vera Query che stiamo scrivendo e quindi niente Join e niente colonne calcolate: tutto quello che dobbiamo stampare deve risiedere nelle proprietà del documento.
Vi lascio con un piccolo esercizio per la prossima lezione. Noi abbiamo aggiunto le colonne della Master Query, ma il report non contiene nessuna Box e nessuno Span. Bè, lascio a voi la creazione delle Box e degli Span per visualizzare la lista degli appartamenti. Al prossimo tutorial noi partiremo già con un report compilato.
Ultima modifica: 08/06/2021 / Validità: da 21.0.8100