Sfairadora

  • Referenční příručka

Filtr

Filtr umožňuje zahrnout do pohledu na data pouze ty řádky, které splňují určitou podmínku. Filtr se zadává v oblasti mezi titulkem tabulky a jejím obsahem. Běžně je oblast zadávání filtru skryta, zobrazí se tlačítkem u pravého horního okraje tabulky. Druhým stisknutím tlačítka se oblast filtru skryje. Skrytí filtru neznamená, že je by se filtr zrušil, pouze není zobrazena oblast pro jeho úpravu. Jestli je na tabulku aplikován filtr lze poznat podle obrázku na tlačítku pro zobrazení oblasti filtru.
Oblast filtru má podobu tabulky, kde na každém řádku jsou ovládací prvky umožňující zadat omezující podmínky pro jednotlivé sloupce. Ovládací prvek pro zadání podmínky má vlevo tlačítko, jehož stisknutím se zobrazí nabídka dostupných operací, jimiž lze podmínku určit. Po vybrání se symbol zvolené operace zobrazuje na tlačítku. Vpravo od tlačítka je políčko, do nějž lze zadat parametr blíže určující podmínku. Operace, které jsou k dispozici, závisejí na typu sloupce. Následující tabulka je shrnuje:
Operace
Popis
Sloupce všech typů
=
je rovno
Do pohledu se zahrnou jen řádky, ve kterých má daný sloupec hodnotu shodnou s hodnotou parametru.
není rovno
Do pohledu se zahrnou jen řádky, na kterých má daný sloupec hodnotu odlišnou od hodnoty parametru.
■
data jsou přítomna
Do pohledu zahrnout jen řádky, kde je daný sloupce vyplněn. V případě řetězců se za nepřítomnou položku považuje i prázdný řetězec, ačkoli jinak se prázdný řetězec odlišuje od nepřítomné hodnoty typu řetězec. Pro ostatní typy je smysluplné jen pokud jde o nepovinnou datovou položku – potom vybírá ty řádky, kde je hodnota zadána.
◻
data nejsou přítomna
Opak podmínky data jsou přítomna – zahrnuje do pohledu řádky s nezadanou nepovinnou hodnotou nebo prázdným řetězcem.
f(x)
podmínka zadaná výrazem proměnné x splněna
Umožňuje zadat libovolnou podmínku. Hodnota, pro kterou se podmínka testuje, je označována proměnnou x. Podmínka se zapisuje v jazyce Enki. Pokud je pro danou hodnotu sloupce výsledkem pravda (TRUE), řádek je zahrnut do pohledu, v opačném případě nikoli. Dojde-li při vyhodnocování výrazu k chybě, řádek je rovněž zahrnut do pohledu.
Podotýkáme, že Sfairadora v názvech dat rozlišuje velká a malý písmena, je tedy třeba použít malé písmeno x.
Příklady: x mod 2 == 0
pro celočíselný sloupec zahrne do pohledu pouze řádky se sudými hodnotami.
(mod … zbytek po dělení, == … porovnání hodnot).
Poznámka: je třeba rozlišovat operátor = (jedno rovnítko), který přiřazuje hodnotu a operátor == (dvě rovnítka), který porovnává dvě hodnoty. V podmínkách filtru je třeba pro porovnání vždy použít operátor ==.
size(x) > 10
pro sloupec typu řetězec zahrne do pohledu pouze řádky se zadaným řetězcem delším než deset znaků.
(size … počet znaků řetězce).
nefiltrovat
Hodnota sloupce je pro filtr nevýznamná.
Sloupce typů, které lze uspořádat (čísla, řetězce)
>
je větší
Řádek se zahrne do pohledu, pokud hodnota ve sloupce je ostře větší než hodnota zadaná parametrem.
je větší nebo rovno
Analogicky.
<
je menší
Analogicky.
je menší nebo rovno
Analogicky.
≤ ≤
je mezi
Jako parametr lze s touto podmínkou zadat dvě hodnoty (ovládací prvek filtru obsahuje těsně za sebou dvě políčka). Do pohledu se zahrnou řádky, jejichž hodnota leží v rozmezí hodnot zadaných ve filtru. Krajní hodnoty se berou jako součást rozmezí.
Řetězce, texty
má na začátku
Do pohledu se zahrnou řádky, jejichž hodnota na počátku obsahuje řetězec zadaný parametrem. (Např. je-li zadáno Ad, podmínce filtru odpovídá Adam, Adolf, Adéla…, ale nikoli Madla.) Zahrne se i hodnota, která je totožná s nastavenou.
obsahuje
Do pohledu se zahrnou řádky, jejichž hodnota obsahuje řetězec zadaný parametrem – může být na počátku, uvnitř i na konci. (Např. je-li zadáno ad, podmínce filtru odpovídá adresa, mladý, hrad…). Zahrne se i hodnota, která je totožná s nastavenou.
má na konci
Do pohledu se zahrnou řádky, jejichž hodnota na konci obsahuje řetězec zadaný parametrem. (Např. je-li zadáno ec, podmínce filtru odpovídá Plavec, Krkavec, Běžec…). Zahrne se i hodnota, která je totožná s nastavenou.
i
Nerozlišovat velká a malá písmena
Pokud je vybrána operace z pravého sloupce nadepsaného Nerozlišovat velká a malá písmena, je lhostejné, zda se hodnota ve filtru zadá velkými či malými písmeny.

Skládání podmínek filtru

Pokud je ve filtru vybrána podmínka jen pro jeden sloupec, odfiltrují se prostě řádky vyhovující podmínce, jak bylo výše popsáno. Mnohdy je však potřeba složit podmínku filtru z více jednoduchých podmínek. Proto lze v jednom řádku definice filtru vybrat více podmínek. Navíc lze zadat i více řádků definice filtru. Řádky se přidávají stejně jako v případě obsahu tabulky: pomocí prázdného řádku na konci definice filtru nebo klávesou Insert. K odstranění řádků slouží klávesy Ctrl+Delete nebo tlačítko na nástrojové liště . Řádky filtru lze rovněž označovat, přesouvat a kopírovat jako řádky tabulky.
Pro vyhodnocení filtru složeného z více podmínek platí tato pravidla:
1.
Podmínky uvedené na jednom řádku definice filtru musí platit současně, jinak nebude řádek tabulky zahrnut do pohledu. (Tj. podmínky na jednom řádku jsou spojeny logickou spojkou „a současně“, jsou v konjunkci.)
2.
Z podmínek uvedených na různých řádcích definice filtru musí být splněna aspoň jedna, aby byl řádek tabulky zahrnut do pohledu. Jinak řečeno, každý nový řádek definice filtru přidá do pohledu jemu odpovídající řádky tabulky. Výsledný pohled je pak jejich sjednocením. (Tj. podmínky různých řádkou jsou spojeny logickou spojkou „nebo“, jsou v disjunkci.)

Parametr filtru zadaný referencí

V nabídce operace filtru je navíc položka parametr je reference. Tuto položku lze označit nezávisle na vybrané operaci filtru. Pokud je možnost vybrána, hodnota, která se zadává jako parametr operace, není konstanta, ale interpretuje se jako reference na datovou položku, jejíž hodnota určuje podmínku filtru. Zda bude řádek zahrnut do pohledu pak nezávisí jen na hodnotách obsažených v tabulce, ale i na hodnotě této vnější datové položky. Pokud například vytvoříme v sekci dokumentu Data celočíselnou položku s názvem mez, vybereme pro nějaký sloupec operaci filtru „> je větší“, označíme volbu parametr je reference a do políčka parametru operace vepíšeme document.data.mez, budou se řádky zahrnuté do pohledu měnit podle toho, jak se bude měnit datová položka mez. Tak lze vytvořit filtr parametrizovaný proměnnou.
Jiným příkladem je tabulka s vnořenými tabulkami (tj. každá řádka vnější tabulky obsahuje tabulku vnitřní). Ve vnější tabulka má sloupec platba, vnitřní tabulka sloupec cena. Chceme ve vnitřních tabulkách zobrazit pouze ty řádky, jejichž cena je nižší než platba na řádku vnější tabulky. Tj. každou vnitřní tabulku odfiltrovat na základě jí příslušející hodnoty na řádku vnější tabulky. Pro sloupec cena tedy vybereme operaci filtru „≤ je menší nebo rovno“, označíme volbu parametr je reference a do políčka parametru operace vepíšeme parent.platba. Identifikátor parent označuje řádek nadřazené tabulky.
Dalším využitím je vytvoření filtru na základě porovnání hodnot dvou sloupců. Máme-li tabulku se sloupci příjmy a výdaje a chceme zobrazit pouze řádky, kde jsou příjmy nižší než výdaje, nastavíme např. ve sloupci příjmy podmínku na „< je menší“, označíme volbu parametr je reference a do políčka parametru operace vepíšeme výdaje (případně plnou referenci včetně jména objektu this.výdaje, jméno objektu this však není třeba uvádět). Podmínku lze samozřejmě zadat i naopak do sloupce výdaje.

Podmínka zadaná výrazem pro celý řádek

Vyjadřuje-li podmínka filtru složitější vztah mezi hodnotami sloupců, může být potřeba ji zadat pro celý řádek (záznam) a nikoli po hodnotách jednotlivých sloupců. Proto je na pravém konci každého řádku definice filtru tlačítko , jehož stisknutím se řádek definice filtru přepne do režimu výrazu pro celý záznam. Po stisknutí tlačítka obsahuje řádek definice filtru jen jedno políčko přes celou šířku tabulky, do které lze podmínku zadat. Podmínka se zapisuje v jazyce Enki.
Máme-li například tabulku se sloupci příjmy1, příjmy2 a výdaje a chceme zobrazit jen řádky, kde celkové příjmy přesahují výdaje, přepneme řádek definice filtru do režimu podmínky pro celý záznam a vepíšeme výraz příjmy1 + příjmy2 >= výdaje. (Poznámka: striktně vzato, mělo by se psát this.příjmy1 + this.příjmy2 >= this.výdaje, jméno objektu this se však předpokládá automaticky, není-li uvedeno.)

Zrušení filtru

Pro zrušení filtru je třeba označit všechny řádky filtru a stisknout klávesy Ctrl+Delete, nebo jejich opakovaným stisknutím odstranit filtr řádek po řádku.