Dans le premier et le deuxième épisode de cette trilogie, nous avons démontré les bases de l’ORDA en utilisant des boîtes de liste, des entités et des sélections d’entités. Nous avons également montré comment utiliser des boîtes de liste similaires avec des sources de données distinctes et comment utiliser l’expression Meta info pour améliorer les graphiques des boîtes de liste.
Aujourd’hui, nous allons nous amuser encore plus, avec moins de code !
Télécharger Généalogie – Episode 3
Moins de code, plus de plaisir !
Sur la base de la structure récursive dont nous avons parlé précédemment, notre objectif aujourd’hui est d’afficher un arbre généalogique (comme indiqué ci-dessous).
Pour chaque couple, nous voulons afficher leurs parents, grands-parents, et leurs enfants (s’ils en ont).
La liste de gauche affichera tous les couples pour lesquels nous trouverons quatre parents et huit grands-parents. Ceci va être le principal défi.
Pour afficher les couples sur la gauche, nous pouvons limiter la recherche aux hommes ayant des partenaires :
Gender=false // boolean field
et partenaire # null
Mais nous devrons aussi nous assurer qu’ils ont tous deux des parents :
et Père # null
et Mère # null
Et ensuite nous devrons vérifier les grands-parents, etc., etc.
Magie et logique
Si 4D (et ORDA) peut être interrogé pour trouver quatre grands-parents du partenaire de X, cela signifie également que X a un partenaire et que son partenaire a également un père et une mère. Donc finalement, c’est assez simple ! Il suffit de vérifier que chaque membre du couple a quatre grands-parents !
Gender=false // search for men only (his partner's name will be displayed next to his)
and Father.Father # null // check for the man's grandparents
and Father.Mother # null
and Mother.Father # null
and Mother.Mother # null
and Partner.Father.Father # null // check for his partner's grandparents
and Partner.Father.Mother # null
and Partner.Mother.Father # null
and Partner.Mother.Mother # null
C’est fait ! Il s’agit de la sélection d’entités qui sera utilisée dans la partie gauche du formulaire.
Plus de code ?
Presque. A part pour les enfants que nous gérerons plus tard, plus besoin de code !
Rappelez-vous simplement que dans les propriétés de la boîte de liste, il y a une propriété appelée current item. Il suffit de la nommer … puis de l’utiliser ! Dans ce cas, l’élément actuel est « homme ». Ainsi, dès que vous cliquez sur une ligne de la boîte de liste, l’entité » man » est mise à jour et vous pouvez utiliser et afficher ses attributs sans aucun codage.
Pas seulement ses attributs, mais aussi tous les attributs des entités liées, et les attributs des entités liées des entités liées … ainsi dans votre formulaire vous pouvez afficher des expressions comme :
man.Lastname
man.Father.Lastname
man.Father.Father.Lastame
man.Partner.Lastname
man.Partner.Father.Lastname
man.Partner.Father.Father.Lastname
Ou des expressions plus complexes comme :
man.Father.Father.Lastname+" "+man.Father.Father.Firstname
Comme nous l’avons dit : Pas de code ! Seulement des expressions ! Faites juste attention lorsque vous utilisez le copier-coller … il peut s’avérer être votre plus grand ennemi parfois 🙂
Et les enfants ?
C’est assez simple, aussi. Pendant l’événement On selection change, créez simplement une sélection d’entités d’enfants (voir l’épisode 2), puis bouclez à travers cette sélection d’entités pour construire les noms et les images !
(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
Conclusion (ou début !)
Avec ces trois épisodes, nous vous avons donné un petit aperçu de la puissance d’ORDA. Certains des résultats que nous avons montrés étaient presque impossibles à obtenir en utilisant 4D d’une manière simple et régulière. Un nombre considérable de lignes de code, de tableaux, de mémoire et de calculs aurait été nécessaire pour obtenir les mêmes résultats. Nous ne disons pas que chaque base de données 4D devrait être réécrite avec ORDA (« Si ce n’est pas cassé, ne le réparez pas » est l’une de mes citations préférées), mais il est évident que pour vos bases de données futures ou actuelles (si elles ont besoin d’être améliorées), ORDA sera d’une grande aide et vous fera gagner du temps !