Caricare collection figlia
copia linkTrascrizione
La struttura documentale presente nel progetto, prevede documenti e collection di documenti: quando una collection figlia di un documento viene caricata dal database? C’è solo un caso automatico in cui questo avviene e precisamente quando un pannello in interfaccia ne ha bisogno per mostrare il contenuto.
Prendiamo la videata Prenotazione, finchè rimane il Layout List, il framework carica solo i dati del documento Prenotazione, quando invece si passa al Layout Form il framework è obbligato a caricare la collection PrenotazioneServizi da mostrare nel pannello detail.
Di questo aspetto bisogna sempre tenerne conto quando si scrive il codice: non possiamo sapere se il codice verrà eseguito mentre si è in un pannello dove la collection è stata caricata o meno, quindi come regola fondamentale, prima di lavorare con una collection chiedersi sempre se la collection è in memoria oppure, ed in caso negativo caricarla.
Ad esempio, nel documento Prenotazione è presente un metodo calcolaTotaleServizi, dove avremmo necessità della Collection figlia PrenotazioniServizi per calcolare il totale delle righe; ci siamo già chiesti se la collection non è caricata e il documento non è nuovo allora:
loadCollectionFromDB(PrenotazioneServizi)
questa istruzione carica una collection figlia del documento attuale, così siamo sicuri che dopo potremo utilizzare i dati della collection che abbiamo in memoria: attenzione che nel caso la collection non sia caricata il framework non segnala nessuna eccezione o errore: semplicemente non effettua nessun ciclo successivo.
Aggiungiamo al documento Appartamento un metodo serviziDuplicati.
Public boolean serviziDuplicati() {
Boolean duplicati = false
//Controlla che non siano presenti servizi duplicati
If (not ServiziAppartamenti.loaded and not inserted)
loadCollectionFromDb(ServiziAppartamenti)
//CONTROLLO DUPLICATI
return duplicati
}
}
Impostiamo una onValidate nel documento Appartamento:
If reason = 0 and not deleted {
If serviziDuplicati AddDocumentError(“Controllare risultano servizi duplicati”) {
}
}
Tra brevissimo, impareremo a ciclare gli elementi di una collection e cosi potremo completare il codice a seguito di questi caricamenti.
Prendiamo la videata Prenotazione, finchè rimane il Layout List, il framework carica solo i dati del documento Prenotazione, quando invece si passa al Layout Form il framework è obbligato a caricare la collection PrenotazioneServizi da mostrare nel pannello detail.
Di questo aspetto bisogna sempre tenerne conto quando si scrive il codice: non possiamo sapere se il codice verrà eseguito mentre si è in un pannello dove la collection è stata caricata o meno, quindi come regola fondamentale, prima di lavorare con una collection chiedersi sempre se la collection è in memoria oppure, ed in caso negativo caricarla.
Ad esempio, nel documento Prenotazione è presente un metodo calcolaTotaleServizi, dove avremmo necessità della Collection figlia PrenotazioniServizi per calcolare il totale delle righe; ci siamo già chiesti se la collection non è caricata e il documento non è nuovo allora:
loadCollectionFromDB(PrenotazioneServizi)
questa istruzione carica una collection figlia del documento attuale, così siamo sicuri che dopo potremo utilizzare i dati della collection che abbiamo in memoria: attenzione che nel caso la collection non sia caricata il framework non segnala nessuna eccezione o errore: semplicemente non effettua nessun ciclo successivo.
Aggiungiamo al documento Appartamento un metodo serviziDuplicati.
Public boolean serviziDuplicati() {
Boolean duplicati = false
//Controlla che non siano presenti servizi duplicati
If (not ServiziAppartamenti.loaded and not inserted)
loadCollectionFromDb(ServiziAppartamenti)
//CONTROLLO DUPLICATI
return duplicati
}
}
Impostiamo una onValidate nel documento Appartamento:
If reason = 0 and not deleted {
If serviziDuplicati AddDocumentError(“Controllare risultano servizi duplicati”) {
}
}
Tra brevissimo, impareremo a ciclare gli elementi di una collection e cosi potremo completare il codice a seguito di questi caricamenti.
Ultima modifica: 19/03/2021 / Validità: da 20.5.8000