ORDA – Généalogie – Episode 3

Traduit automatiquement de Deepl

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.

blank

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 !

Roland Lannuzel
- Product Owner & 4D Expert - Après avoir étudié l'électronique, Roland s'est lancé dans l'informatique industrielle en tant que développeur et consultant, créant des solutions pour les clients avec une variété de bases de données et de technologies. À la fin des années 80, il est tombé amoureux de 4D et l'a utilisé pour écrire des applications commerciales, notamment des systèmes de comptabilité, de facturation et de messagerie électronique. Il a rejoint la société en 1997 et a contribué à la conception de spécifications, d'outils de test et de démonstrations, ainsi qu'à la formation et à la présentation de la communauté 4D lors de nombreuses conférences. Il continue à façonner activement l'avenir de 4D en définissant de nouvelles fonctionnalités et des outils de développement de bases de données.