Concetto di master query di caricamento
copia linkTrascrizione
Con i documenti che abbiamo inserito nel progetto come sarà il flusso dei dati in fase di esecuzione? Quali operazioni verranno effettuate?
Possiamo schematizzare il tutto con 3 operazioni
Soffermiamoci sul primo punto: il caricamento dei dati dal database; questa operazione può’ avvenire tramite una Query database; è possibile visualizzare nel progetto esattamente la query che verrà eseguita?
Sì è possibile ed in Instant Developer prende il nome di Master Query di caricamento documentale, cioè potremo vedere la struttura della query che verrà eseguita nelle fasi di caricamento; quello che vediamo non saranno istruzioni in reale linguaggio SQL ma un meta linguaggio che lo ricorda molto.
Ogni volta che richiederemo dati al database, il framework creerà una query opportuna basandosi sulla Master Query di caricamento e una volta ottenuto il recordset con i dati creerà N documenti valorizzandone le rispettive proprietà.
Vediamo allora una Master Query di caricamento, per esempio la Master Query del documento Prezzo; vi ricordo subito che l’operazione che stiamo effettuando non è assolutamente obbligatoria: tutti i documenti posseggono in automatico la Master Query di caricamento anche se non visibile nell’albero, in questo caso invece noi vogliamo vederla ed ecco come fare: tasto destro sul documento Prezzo -> Aggiungi Master Query.
Nell’area di progettazione si apre una scheda di Visual Code Editor con la Query nel metalinguaggio SQL di Instant Developer; questa che vediamo verrà trasformata in una Query SQL reale in fase di esecuzione.
Analizziamola un attimo, inizia con SELECT in fondo troviamo la tabella FROM PREZZI e in mezzo tutti i campi che serviranno a popolare le proprietà del documento, quindi leggiamo SET ID = ID, SET VALIDO DAL = VALIDO DAL etc.
Notate che le icone delle proprietà sono diverse da quelle dei campi database, e potete scoprire le diversità anche con i tooltip che compaiono se vi soffermerete sugli elementi.
Quello che vediamo ora è lo scheletro per le query di caricamento del documento Prezzo: una query come questa quanti record carica? quanti documenti saranno creati in memoria? Dipende dal contenuto della tabella Prezzi sul database, comunque tutti i record che sono sul db diventeranno documenti in memoria.
In fase di esecuzione, con la scrittura di codice, potremo effettuare caricamenti filtrati: ad esempio chiedere di caricare solo i record il cui Prezzo Giornaliero è superiore a 500, oppure che abbia una data Valido Da maggiore o uguale ad Inizio Anno; il framework in esecuzione utilizzerà questa Master Query attaccandoci condizioni di Where che noi indicheremo via codice.
Se ci pensiamo un attimo, non è che la nuova proprietà Valida oggi possiamo valorizzarla nella Master Query di caricamento per fare in modo che possegga un valore?
Esatto !!!! Possiamo modificare la Master Query di caricamento per trattare la proprietà Valida Oggi come un campo calcolato e quindi valorizzarla.
Se scrivessimo una istruzione condizionale del tipo SE Oggi >= ValidoDal E Oggi <= ValidoAl allora il valore della proprietà è TRUE altrimenti FALSE saremmo a posto.
Facciamolo, posizioniamoci alla fine della riga Prezzo a Persona e premiamo sulla tastiera, il nuovo blocco SET compare, digitiamo il nome della proprietà Valida Oggi .
Ora mi preoccupo della parte destra, useremo la funzione IF che crea una condizione e la funzione Today() che ritorna il giorno odierno…ah un suggerimento ogni volta che finito di scrivere un token cioè un blocco premete , vedrete che sarà più semplice la scrittura nel Visual Code Editor.
Proviamo, digitiamo IF , passiamo alla condizione Today >= ValidoDal poi premo e digito l’operatore logico AND e proseguo con Today <= Valido Al .
Rimane da impostare il valore restituito quando la condizione è TRUE e quando FALSE, beh son proprio i 2 valori che vogliamo quindi digito da una parte TRUE e nell’altra FALSE.
Questa scheda di progettazione non richiede un salvataggio, viene salvata quando salviamo l’intero progetto.
Abbiamo modificato la Master Query documentale di caricamento, cosi ogni operazione di caricamento effettuata con il documento Prezzo vedrà valorizzata la proprietà aggiuntive Valida Oggi.
Possiamo schematizzare il tutto con 3 operazioni
- 1) Caricamento dei dati dal database in memoria
- 2) Variazione dei dati in memoria
- 3) Salvataggio delle modifiche sul database
Soffermiamoci sul primo punto: il caricamento dei dati dal database; questa operazione può’ avvenire tramite una Query database; è possibile visualizzare nel progetto esattamente la query che verrà eseguita?
Sì è possibile ed in Instant Developer prende il nome di Master Query di caricamento documentale, cioè potremo vedere la struttura della query che verrà eseguita nelle fasi di caricamento; quello che vediamo non saranno istruzioni in reale linguaggio SQL ma un meta linguaggio che lo ricorda molto.
Ogni volta che richiederemo dati al database, il framework creerà una query opportuna basandosi sulla Master Query di caricamento e una volta ottenuto il recordset con i dati creerà N documenti valorizzandone le rispettive proprietà.
Vediamo allora una Master Query di caricamento, per esempio la Master Query del documento Prezzo; vi ricordo subito che l’operazione che stiamo effettuando non è assolutamente obbligatoria: tutti i documenti posseggono in automatico la Master Query di caricamento anche se non visibile nell’albero, in questo caso invece noi vogliamo vederla ed ecco come fare: tasto destro sul documento Prezzo -> Aggiungi Master Query.
Nell’area di progettazione si apre una scheda di Visual Code Editor con la Query nel metalinguaggio SQL di Instant Developer; questa che vediamo verrà trasformata in una Query SQL reale in fase di esecuzione.
Analizziamola un attimo, inizia con SELECT in fondo troviamo la tabella FROM PREZZI e in mezzo tutti i campi che serviranno a popolare le proprietà del documento, quindi leggiamo SET ID = ID, SET VALIDO DAL = VALIDO DAL etc.
Notate che le icone delle proprietà sono diverse da quelle dei campi database, e potete scoprire le diversità anche con i tooltip che compaiono se vi soffermerete sugli elementi.
Quello che vediamo ora è lo scheletro per le query di caricamento del documento Prezzo: una query come questa quanti record carica? quanti documenti saranno creati in memoria? Dipende dal contenuto della tabella Prezzi sul database, comunque tutti i record che sono sul db diventeranno documenti in memoria.
In fase di esecuzione, con la scrittura di codice, potremo effettuare caricamenti filtrati: ad esempio chiedere di caricare solo i record il cui Prezzo Giornaliero è superiore a 500, oppure che abbia una data Valido Da maggiore o uguale ad Inizio Anno; il framework in esecuzione utilizzerà questa Master Query attaccandoci condizioni di Where che noi indicheremo via codice.
Se ci pensiamo un attimo, non è che la nuova proprietà Valida oggi possiamo valorizzarla nella Master Query di caricamento per fare in modo che possegga un valore?
Esatto !!!! Possiamo modificare la Master Query di caricamento per trattare la proprietà Valida Oggi come un campo calcolato e quindi valorizzarla.
Se scrivessimo una istruzione condizionale del tipo SE Oggi >= ValidoDal E Oggi <= ValidoAl allora il valore della proprietà è TRUE altrimenti FALSE saremmo a posto.
Facciamolo, posizioniamoci alla fine della riga Prezzo a Persona e premiamo
Ora mi preoccupo della parte destra, useremo la funzione IF che crea una condizione e la funzione Today() che ritorna il giorno odierno…ah un suggerimento ogni volta che finito di scrivere un token cioè un blocco premete
Proviamo, digitiamo IF
Rimane da impostare il valore restituito quando la condizione è TRUE e quando FALSE, beh son proprio i 2 valori che vogliamo quindi digito da una parte TRUE e nell’altra FALSE.
Questa scheda di progettazione non richiede un salvataggio, viene salvata quando salviamo l’intero progetto.
Abbiamo modificato la Master Query documentale di caricamento, cosi ogni operazione di caricamento effettuata con il documento Prezzo vedrà valorizzata la proprietà aggiuntive Valida Oggi.
Ultima modifica: 25/03/2021 / Validità: da 20.0.7800