Nel primo e nel secondo episodio di questa trilogia, abbiamo mostrato le basi di ORDA utilizzando caselle di riepilogo, entità e selezioni di entità. Abbiamo anche mostrato come utilizzare caselle di riepilogo simili con fonti di dati distinte e come utilizzare l’espressione Meta info per migliorare la grafica delle caselle di riepilogo.
Oggi ci divertiremo ancora di più, con meno codice!
Scarica Genealogia – Episodio tre
Meno codice, più divertimento!
Sulla base della struttura ricorsiva di cui abbiamo parlato in precedenza, il nostro obiettivo di oggi è visualizzare un albero genealogico (come mostrato di seguito).
Per ogni coppia, vogliamo visualizzare i genitori, i nonni e i figli (se ne hanno).
L’elenco a sinistra mostrerà tutte le coppie per le quali troveremo quattro genitori e otto nonni. Questa sarà la sfida principale.
Per visualizzare le coppie a sinistra, possiamo limitare la ricerca agli uomini con partner:
Gender=false // boolean field
e partner # null
Ma dobbiamo anche essere sicuri che entrambi abbiano dei genitori:
e Padre # null
e Madre # null
E poi dovremo controllare i nonni, ecc. ecc.
Magia e logica
Se 4D (e ORDA) può essere interrogato per trovare quattro nonni del partner di X, significa anche che X ha un partner e che anche il suo partner ha un padre e una madre. Quindi, alla fine, è abbastanza semplice! Dobbiamo solo verificare che ogni membro della coppia abbia quattro nonni!
Gender=false // search for men only (his partner's name will be displayed next to his)
e Father.Father # null // check for the man's grandparents
e Father.Mother # null
e Mother.Father # null
e Mother.Mother # null
e Partner.Father.Father # null // check for his partner's grandparents
e Partner.Father.Mother # null
e Partner.Mother.Father # null
e Partner.Mother.Mother # null
Fatto! Questa è la selezione di entità che verrà utilizzata sul lato sinistro del modulo.
Niente più codice?
Quasi. Tranne che per i figli, che gestiremo più avanti, non è necessario altro codice!
Ricordate solo che nelle proprietà della casella di riepilogo c’è una proprietà chiamata elemento corrente. Basta darle un nome… e poi usarla! In questo caso, l’elemento corrente è “uomo”. Quindi, non appena si fa clic su una riga qualsiasi della casella di riepilogo, l’entità uomo viene aggiornata e si possono utilizzare e visualizzare i suoi attributi senza alcun codice.
Non solo i suoi attributi, ma anche tutti gli attributi delle entità correlate e gli attributi delle entità correlate delle entità correlate… così nel vostro modulo potrete visualizzare espressioni come:
man.Lastname
man.Father.Lastname
man.Father.Father.Lastame
man.Partner.Lastname
man.Partner.Father.Lastname
man.Partner.Father.Father.Lastname
Oppure espressioni più complesse come:
man.Father.Father.Lastname+" "+man.Father.Father.Firstname
Come abbiamo detto: Niente codice! Solo espressioni! Fate solo attenzione quando usate il copia-incolla… a volte potrebbe rivelarsi il vostro più grande nemico 🙂
E i bambini?
Anche loro sono abbastanza semplici. Durante l’evento On selection change, è sufficiente creare una selezione di entità di bambini (vedere l’episodio 2), quindi eseguire un ciclo attraverso questa selezione di entità per costruire i nomi e le immagini!
: (Form event=On Selection Change)
childrenPortraits :=childrenPortraits*0 // erase picture
childrenNames :="" // erase names
$_children :=GetChildren (men) // get the entity selection of children
For each ($child;$_children)
COMBINE PICTURES (childrenPortraits;childrenPortraits;Horizontal concatenation;$child.Portrait_0)
childrenNames :=childrenNames+$child.Firstname+" ("+String($child.Birthday)+") "
End for each
Conclusione (o inizio!)
Con questi tre episodi, vi abbiamo dato una piccola anteprima della potenza di ORDA. Alcuni dei risultati che abbiamo mostrato erano quasi impossibili da ottenere usando 4D in modo regolare e semplice. Per ottenere gli stessi risultati sarebbe stato necessario un numero enorme di righe di codice, array, memoria e calcoli. Non stiamo dicendo che ogni database 4D debba essere riscritto con ORDA (“Se non è rotto, non aggiustarlo” è una delle mie citazioni preferite), ma è abbastanza ovvio che per i vostri futuri database o per quelli attuali (se hanno bisogno di miglioramenti), ORDA sarà di grande aiuto e farà risparmiare tempo!