ORDA – Genealogie – třetí díl

Automaticky přeloženo z Deepl

V prvním a druhém díle této trilogie jsme si ukázali základy ORDA pomocí seznamů, entit a výběrů entit. Ukázali jsme si také způsob, jak používat podobné seznamové boxy s odlišnými zdroji dat a jak pomocí výrazu Meta info vylepšit grafiku seznamových boxů.

Dnes si užijeme ještě více zábavy, a to s menším množstvím kódu!

Stáhnout Genealogie – třetí díl

Méně kódu, více zábavy!

Na základě rekurzivní struktury, kterou jsme probrali dříve, je naším dnešním cílem zobrazit rodokmen (jak je znázorněno níže).

U každého páru chceme zobrazit jeho rodiče, prarodiče a jejich děti (pokud nějaké mají).

Seznam vlevo zobrazí všechny páry, pro které najdeme čtyři rodiče a osm prarodičů. To bude hlavní úkol.

Pro zobrazení párů vlevo můžeme omezit vyhledávání na muže s partnerkami:

Pohlaví=false // boolean field
a partner # null

Budeme však také potřebovat mít jistotu, že oba mají rodiče:

a Otec # null
a Matka # null

A pak bude třeba zkontrolovat prarodiče atd. atd.

Kouzlo a logika

Pokud lze dotazem 4D (a ORDA) najít čtyři prarodiče partnera X, znamená to také, že X má partnera a že jeho partner má také otce a matku. Takže nakonec je to docela jednoduché! Stačí jen zkontrolovat, že každý člen páru jako čtyři prarodiče !

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

Hotovo! Toto je výběr entit, který bude použit na levé straně formuláře.

Žádný další kód?

Téměř. Kromě dětí, které zvládneme později, už žádný kód není potřeba!

Jen nezapomeňte, že ve vlastnostech pole seznamu je vlastnost nazvaná aktuální položka. Stačí ji pojmenovat … a pak ji použít! V tomto případě je aktuální položka „člověk“. Jakmile tedy kliknete na libovolný řádek seznamboxu, entita man se aktualizuje a vy můžete bez jakéhokoli kódování používat a zobrazovat její atributy.

blank

Nejen jeho atributy, ale také všechny atributy příbuzných entit a atributy příbuzných entit příbuzných entit … takže ve formuláři můžete zobrazit výrazy jako např:

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

Nebo složitější výrazy jako např:

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

Jak jsme si řekli: Žádný kód! Pouze výrazy! Jen si dávejte pozor při používání funkce copy-paste … někdy by se mohla ukázat jako váš největší nepřítel 🙂

A co děti?

Ty jsou také docela jednoduché. Během události On selection change jednoduše vytvořte výběr entit dětí (viz díl 2) a pak ve smyčce projděte tento výběr entit a sestavte jména a obrázky !

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

Závěr (nebo začátek!)

Těmito třemi díly jsme vám poskytli malou ukázku síly systému ORDA. Některé z výsledků, které jsme si ukázali, bylo téměř nemožné získat pomocí 4D běžným a jednoduchým způsobem. K dosažení stejných výsledků by bylo zapotřebí obrovské množství řádků kódu, polí, paměti a výpočtů. Netvrdíme, že by se každá databáze 4D měla přepsat pomocí ORDA („Když to není rozbité, neopravuj to“ je jeden z mých oblíbených citátů), ale je zcela zřejmé, že pro vaše budoucí databáze nebo ty stávající (pokud potřebují vylepšit) bude ORDA velkým pomocníkem a úsporou času!

Roland Lannuzel
- Product Owner & 4D Expert - Po studiu elektroniky se Roland věnoval průmyslovým IT jako vývojář a konzultant, který vytvářel řešení pro zákazníky s různými databázemi a technologiemi. Koncem 80. let se zamiloval do 4D a používal jej při psaní podnikových aplikací, které zahrnovaly účetní, fakturační a e-mailové systémy. nakonec se připojil ke společnosti v roce 1997 a Rolandův cenný přínos zahrnuje návrh specifikací, testovacích nástrojů, demoverzí a také školení a přednášky pro komunitu 4D na mnoha konferencích. Nadále aktivně utváří budoucnost 4D definováním nových funkcí a nástrojů pro vývoj databází.