ORDA – Genealogia – Episodio tre

Tradotto automaticamente da Deepl

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.

blank

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!

Roland Lannuzel
- Product Owner ed esperto di 4D - Dopo aver studiato elettronica, Roland è passato all'IT industriale come sviluppatore e consulente, realizzando soluzioni per i clienti con una varietà di database e tecnologie. Alla fine degli anni '80 si è innamorato di 4D e lo ha utilizzato per scrivere applicazioni aziendali che includono sistemi di contabilità, fatturazione e posta elettronica. Entrato a far parte dell'azienda nel 1997, Roland ha dato il suo prezioso contributo progettando specifiche, strumenti di test e demo, oltre a formare e parlare alla comunità 4D in occasione di numerose conferenze. Continua a plasmare attivamente il futuro di 4D definendo nuove funzionalità e strumenti di sviluppo di database.