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.
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!