VaxNt.Podřízené pohledy
Na desktopu můžeme v aplikaci zobrazit několik pohledů. Tyto mohou být zcela nezávislé, ale pomocí tzv.
podřízenosti je možno mezi nimi vytvářet i systematické a "živé" vazby. Předpokládejme, že v databázi existuje
tabulka oblastí a rovněž tabulka objektů, které do těchto oblastí patří. Obecně tedy jde o seznam a širší množinu,
která je tímto seznamem nějak logicky členěna. Přirozeně vzniká
požadavek snadno a rychle se dívat na data patřící jenom do jedné skupiny:
Nejsnazžím způsobem prezentace takových dat jsou dvě okénka zobrazující dva svázané seznamy. V jednom
například seznam oblastí a ve druhém seznam objektů - ovšem vždy takových, na jaké oblasti se nacházíme
v seznamu oblastí. Posouváním po oblastech (uživatelích, typech poruch, ...) se pak druhý seznam zařízení (zařízení,
poruch,...) automaticky aktualizuje a přeobrazuje. Stejně tak je možno chtít sestavit podřízený graf, který
automaticky kreslí po každém pohybu v seznamu oblastí přehled četnosti poruch podle typů ve formě
koláčového grafu.
K tomu slouží pojem podřízenosti. Podřízený pohled získáme výběrem po stisku pravého
tlačítka myši na nadřízeném, tedy původním pohledu. V našem případě nad pohledem na seznam oblastí.
Vybereme Podřízený a potom Pohled. Z menu si vybereme opět libovolný pohled - v našem případě například
pohled na databázovou tabulku Kmen. Potom v okénku SQL definujícím dotaz na databázi v podřízeném
pohledu vyplníme vazbu. Ta bude typicky zprostředkována pomocí stejnojmenné položky v obou
tabulkách, ne však nutně. Okénko bude obsahovat
standardní sql dotaz, pravděpodobně:
Nakonec oba pohledy uspořádáme vhodně na obrazovku, například jako "dlaždice svisle" a uložíme jako
konfiguraci desktopu - viz Layouts. Například pod jménem "OblastiAZarizeni"
Můžeme se pak kdykoli vrátit k takto zhotovené konfiguraci. Ukládá se tam, odkud byl spuštěn binár vaxnt.exe,
vi dialogu si ale můžete vybrat jakékoli jiné místo.
V této konfiguraci tedy můžeme "browsit" po oblastech v základním pohledu a v podřízeném pohledu
se automaticky budou objevovat odpovídající zařízení v nich.
Je jasné, že podmínku v podřízeném pohledu můžeme ještě jakkoli doplnit, například omezit datum
uvedení do provozu atd.
Zcela analogickým způsobem můžeme sestavit i podřízený graf. Ten pak může při "browsení" přes
zařízení automaticky kreslit koláčový graf rozložení typů poruch na daném zařízení.
Tato technika se hodí všude tam, kde existují vazby 1:N v datech, která je vhodné prohlížet
jako parciální seznamy. Uspoří to sáhodlouhé zadávání filtrů a rovněž se omezí i datový
tok mezi serverem a vaším PC. Takže vedle oblastí a zařízení nebo zařízení a poruch to mohou být
odběratelé a smlouvy apod.
Podřízenost může být samozřejmě řetězená a může tedy existovat ještě podřízený pohled nebo graf
k pohledu už podřízenému. Čili je možno vytvořit kaskádu Oblast -> Zařízení -> Rozložení poruch.
Vtip je v tom, že třebas i složitě zkonstruovaná kaskáda podřízenosti pak uspoří mnoho psaní a
umožní využívat data nečekaně flexibilním způsobem. Důležité je to, že "živost" a automatické
překreslování celé kaskády jsou zaručeny systémem automaticky.
Poznámka pro znalce SQL. Obrat "SELECT * FROM KMEN WHERE Zavod='$(^Zavod)'" je
rozšířením syntaxe SQL. Proměnné typu $(Zavod) jsou řešeny softwarem na konstanty těsně
před položením dotazu a to podle kontextu, parametrů a nebo dialogem s operátorem. Proměnná
^Zavod je vlastně metaproměnnou a značí totéž co "hodnota proměnné Zavod z nadřízeného pohledu
a tam z aktuálního záznamu". Stojíme-li tedy v nadřízeném pohledu na záznamu, kde Zavod je "ZC",
pak je obrat kompilován těsně před odesláním do databáze na
dotaz "SELECT * FROM KMEN WHERE Zavod='ZC'". Flexibility systému je zde
dosaženo vhodnou interpretací kontextu a kompilací dynamických sql dotazů metodou just-in-time.
Stejná technika je použita při zadávání sloupcových filtrů. To také ukazuje sílu interpretace oproti
tvrdému zadrátování aplikací do EXE souborů.
Vedle proměnných, jako byla výše $(Zavod) řeší některé proměnné systém
automaticky, takové jsou například $(Today), $(Yesterday), $(Tomorrow), $(ThisWeek) a celá
řada jiných.
Při řešení hodnot just-in-time se někdy musí rozvinout dialog nebo kalendář apod.
V tom případě se software snaží vyhnout duplicitním dotazům na to, na co už uživatel nějak odpověděl.
To se hodí hlavně tam, kde se opakuje použití stejné proměnné. Například:
Viz kapitola o gridech.
Viz kapitola o metaproměnných.
Hlavní obsahová stránka / rejstřík