ORDA – Genealogie – Folge drei

Automatisch übersetzt von Deepl

In der ersten und zweiten Folge dieser Trilogie haben wir die Grundlagen von ORDA anhand von Listenfeldern, Entitäten und Entitätsauswahlen demonstriert. Wir haben auch gezeigt, wie man ähnliche Listboxen mit unterschiedlichen Datenquellen verwenden kann und wie man Meta-Info-Ausdrücke verwendet, um die Grafik der Listboxen zu verbessern.

Heute werden wir noch mehr Spaß haben, mit weniger Code!

Genealogie herunterladen – Folge drei

Weniger Code, mehr Spaß!

Basierend auf der rekursiven Struktur, die wir zuvor besprochen haben, besteht unser heutiges Ziel darin, einen Familienstammbaum anzuzeigen (wie unten dargestellt).

Für jedes Paar wollen wir die Eltern, die Großeltern und die Kinder (falls sie welche haben) anzeigen.

In der Liste auf der linken Seite werden alle Paare angezeigt, für die wir vier Eltern und acht Großeltern finden. Dies wird die größte Herausforderung sein.

Um die Paare auf der linken Seite anzuzeigen, können wir die Suche auf Männer mit Partnerinnen beschränken:

Gender=false // boolean field
und Partner # null

Aber wir müssen auch sicher sein, dass sie beide Eltern haben:

und Vater # null
und Mutter # null

Und dann müssen wir nach Großeltern usw. usw. suchen.

Magie und Logik

Wenn 4D (und ORDA) abgefragt werden kann, um vier Großeltern für den Partner von X zu finden, bedeutet das auch, dass X einen Partner hat und dass sein Partner auch einen Vater und eine Mutter hat. Im Grunde ist es also ganz einfach! Wir müssen nur prüfen, ob jedes Mitglied des Paares vier Großeltern hat!

Gender=false // search for men only (his partner's name will be displayed next to his)
und Vater.Vater # null // check for the man's grandparents
und Vater.Mutter # null
und Mutter.Vater # null
und Mutter.Mutter # null
und Partner.Vater.Vater # null // check for his partner's grandparents
und Partner.Vater.Mutter # null
und Partner.Mutter.Vater # null
und Partner.Mutter.Mutter # null

Geschafft! Dies ist die Entitätsauswahl, die auf der linken Seite des Formulars verwendet wird.

Kein Code mehr?

Fast. Außer für die Kinder, die wir später verwalten werden, ist kein weiterer Code erforderlich!

Denken Sie einfach daran, dass es in den Eigenschaften der Listbox eine Eigenschaft namens current item gibt. Benennen Sie sie einfach … und verwenden Sie sie! In diesem Fall ist das aktuelle Element „man“. Sobald Sie also auf eine beliebige Zeile der Listbox klicken, wird die Entität „man“ aktualisiert und Sie können seine Attribute ohne jeglichen Code verwenden und anzeigen.

blank

Nicht nur seine Attribute, sondern auch alle Attribute verwandter Entitäten und die Attribute verwandter Entitäten verwandter Entitäten … so können Sie in Ihrem Formular Ausdrücke wie „man“ anzeigen:

man.Lastname
man.Father.Lastname
man.Father.Father.Lastame
man.Partner.Lastname
man.Partner.Father.Lastname
man.Partner.Father.Father.Lastname

Oder komplexere Ausdrücke wie:

man.Father.Father.Lastname+" "+man.Father.Father.Firstname

Wie wir gesagt haben: Kein Code! Nur Ausdrücke! Seien Sie nur vorsichtig, wenn Sie Copy-Paste verwenden … es könnte sich manchmal als Ihr größter Feind erweisen 🙂

Was ist mit Kindern?

Die sind auch ganz einfach. Erstellen Sie während des On selection change -Ereignisses einfach eine Entity-Auswahl von Kindern (siehe Folge 2), und durchlaufen Sie dann diese Entity-Auswahl in einer Schleife, um die Namen und Bilder zu erstellen!

: (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

Fazit (oder Anfang!)

Mit diesen drei Episoden haben wir Ihnen einen kleinen Einblick in die Leistungsfähigkeit von ORDA gegeben. Einige der Ergebnisse, die wir gezeigt haben, wären mit 4D auf normale und einfache Weise kaum zu erreichen gewesen. Um die gleichen Ergebnisse zu erzielen, wären sehr viele Codezeilen, Arrays, Speicher und Berechnungen erforderlich gewesen. Wir sagen nicht, dass jede 4D-Datenbank mit ORDA umgeschrieben werden sollte („Wenn es nicht kaputt ist, repariere es nicht“ ist eines meiner Lieblingszitate), aber es ist ziemlich offensichtlich, dass ORDA für Ihre zukünftigen Datenbanken oder Ihre aktuellen Datenbanken (wenn sie verbessert werden müssen) eine große Hilfe und Zeitersparnis sein wird!

Roland Lannuzel
- Product Owner & 4D Experte - Nach seinem Studium der Elektronik arbeitete Roland als Entwickler und Berater in der industriellen IT-Branche, wo er Lösungen für Kunden mit einer Vielzahl von Datenbanken und Technologien entwickelte. In den späten 80er Jahren verliebte er sich in 4D und setzte es bei der Entwicklung von Geschäftsanwendungen wie Buchhaltungs-, Abrechnungs- und E-Mail-Systemen ein. 1997 trat er schließlich in das Unternehmen ein und leistete einen wertvollen Beitrag, indem er Spezifikationen, Testtools und Demos entwarf, Schulungen durchführte und auf vielen Konferenzen für die 4D Community sprach. Er gestaltet die Zukunft von 4D aktiv mit, indem er neue Funktionen und Datenbankentwicklungstools definiert.