ORDA – Genealogie – Folge eins

Automatisch übersetzt von Deepl

Wir sind uns alle einig, dass ORDA ein großartiges Feature von 4D V17 ist. Eine Art Revolution in der Art zu denken und zu programmieren. 4D Datenbanken werden nie wieder so gesehen werden wie bisher.

Mit ORDA können Sie fortschrittliche Anwendungen in kürzerer Zeit und mit besser lesbarem und sauberem Code entwickeln. Um Ihnen die Leistungsfähigkeit von ORDA zu zeigen, haben wir eine Reihe von Tipps für Sie vorbereitet, die in drei Episoden unterteilt sind. In dieser ersten Folge zeigen wir Ihnen, wie Links jetzt eher als Entitäten und Entitätssammlungen betrachtet werden sollten, und wir zeigen Ihnen, wie Listboxen jetzt auf Entitätsselektionen statt auf Selektionen oder Arrays basieren können.

Genealogie herunterladen – Folge eins

Rekursive Beziehungen verwenden

Um die Leistungsfähigkeit von 4D und ORDA zu demonstrieren, werden wir eine stark rekursive Datenbank mit einer einzigen Tabelle namens PEOPLE verwenden.

Diese Tabelle enthält fünf Hauptfelder: Nachname, Vorname, Geburtstag, Geschlecht und ID (die natürlich eindeutig ist).
Dann kommen drei weitere Felder: VaterID, MutterID und PartnerID, die jede Person mit drei anderen Personen verbinden, wenn sie existieren (Partner) oder wenn sie bekannt sind (Mutter und Vater).

Beziehungsdefinition

Konzentrieren wir uns nun auf die Definition der Beziehung. In beiden Richtungen (1 zu N und N zu 1) können Beziehungen benannt werden. Mit ORDA werden diese Namen sehr wichtig und nützlich. In der Many-to-One-Richtung ist der Name nicht nur eine Zeichenkette, sondern eine Entität der Tabelle PEOPLE, genau wie die Entität PEOPLE, aus der die Beziehung stammt. In der Richtung eins zu viele ist es sogar noch mehr, der Name stellt eine Entitätsauswahl dar.

Ohne zu viel vorwegzunehmen, können Sie sich denken, dass Sie mit der Objektnotation sowohl PEOPLE.Father als auch PEOPLE.ChildrenAsFather verwenden können, um entweder eine einzelne Person (den Vater) oder eine Gruppe von Personen (die Kinder) zu erreichen.

blank

Eine neue Art von Listbox

blank

Bisher waren die Inhalte von Listboxen (die Datenquelle) entweder Arrays oder Auswahlen. Von nun an kann der Inhalt auch aus einer Sammlung oder einer Entitätsauswahl stammen. Schauen wir uns also an, wie eine Entity-Auswahl in einer Listbox verwendet werden kann.

Zunächst müssen Sie die Entity-Auswahl mit der neuen Funktion ds erstellen. In diesem Beispiel erstellen wir eine einfache Entity Selection, die alle PEOPLE enthält, geordnet nach Geburtstag, Nachname und Vorname. Dies kann in einer einzigen Zeile geschehen, wie unten gezeigt. Das ist alles, was Sie im Moment über ds wissen müssen!

people:= ds.PEOPLE.all().orderBy("Geburtstag aufsteigend, Nachname aufsteigend, Vorname aufsteigend")

Sobald Sie die Entitätsauswahl people erhalten haben, setzen Sie sie einfach als Eigenschaft der Listbox und Sie sind – fast – fertig!

„THIS“ ist fantastisch

Wie bei normalen Listenfeldern muss der Inhalt jeder Spalte definiert werden. In unserem Fall, solange wir eine Entity-Auswahl verwenden, wird der Inhalt jeder Spalte als Ausdruck definiert. Zu diesem Zweck verwenden wir ein neues Schlüsselwort („This„), das sich auf das aktuelle Element der Entity-Auswahl bezieht.

Um people Namen und Geburtstage anzuzeigen, kann der Ausdruck so einfach sein wie:
Dies.Lastname
Dies.Firstname
Dies.Lastname + " " +Dies.Firstname
Dies.Birthday

Jetzt kommt der Clou: Wenn Sie den Nachnamen des Vaters, den Geburtstag der Mutter oder den Vornamen des Partners anzeigen möchten, verwenden Sie einfach die Entitätsnamen, die Sie in den Beziehungsdefinitionen angegeben haben (Vater, Mutter, Partner usw.) und schreiben Sie:

Dies.Father.Lastname
Dies.Mother.Birthday
Dies.Parter.Firstname

Natürlich können Sie noch weiter gehen, wenn Sie die Namen der vier Großeltern des Partners der aktuellen people wissen wollen, indem Sie schreiben:

Dies.Partner.Father.Father.Lastname
Dies.Partner.Father.Mother.Lastname
Dies.Partner.Mother.Father.Lastname
Dies.Partner.Mother.Mother.Lastname

Ein letzter Schritt (für heute!): Ich möchte auch die Anzahl der Kinder und Geschwister dieser Person anzeigen. Kann ich das tun?
Sicher, das ist ganz einfach. Für die Kinder verwenden Sie einfach die in der Beziehungsdefinition definierte Entitätsauswahl ChildrenAsFather. Wie bei jeder Entitätsauswahl gibt es auch hier eine Längeneigenschaft. Definieren Sie den Ausdruck einfach wie folgt:
This.ChildrenAsFather.length + This.ChildrenAsMother.length // einer von ihnen wird gleich Null sein, ChildrenAsFather.length für Frauen und andersherum.

Für die Geschwister müssen Sie bei der Mutter (oder dem Vater) „hochgehen“ und bei den Kindern „runtergehen“. Der Ausdruck würde also lauten:
Dies. Mother.ChildrenAsMother.length - 1 // minus 1 to remove the current people from the number of his/her siblings :-)

blank

Und hier ist das Ergebnis… ohne eine einzige Zeile Code!

blank

Fortsetzung folgt, bleiben Sie dran!

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.