Filtr

Z Prirucky

Filtrace údajů označuje možnost stanovení výběrového kritéria (tzv.filtru) pro seznam údajů nebo položek v sestavě. Tímto způsobem lze omezit vybrané položky v seznamu či sestavě pouze na určitou požadovanou skupinu údajů.

Otevření okna

Vyvolání okna pro definici filtru můžete provést třemi způsoby:

  • ikona - stisk tlačítka Filtr v nástrojové liště
  • menu - Údaje/Filtr , položkou Filtr v menu Údaje nebo stiskem Hot-key CTRL-F.
  • klávesová zkratka - Ctrl+F

Existují dvě varianty

Varianta se nastavuje v menu: Nastavení/Třídění, filtrace, hledání.

Ovládání

O-filtr-jednoduchy.png

Okno pro jednoduchý filtr zobrazuje seznam sloupců, přípustných výběrových podmínek (logických operátorů), pole pro vstup kritéria a pole pro přidání další výběrové podmínky (‚and‘ nebo ‚or‘ – „a zároveň“ – „nebo“).

Výsledný výraz, podle něhož se provede výběr, je průběžně zobrazován v horní části okna, lze jej kopírovat či jej upravovat „ručně“ (pro správnost takto opraveného filtru je možné jej otestovat stiskem tlačítka Test).

Speciální nastavení filtru umožňují zatrhávací pole:

  • Jen akt. poměr k - po zatrhnutí pole a zadání data budou vybráni pouze zaměstnanci ve stavu bez rozdílu typu pracovního poměru k aktuálně nastavenému datu.
  • Jen akt. HPP k - po zatrhnutí pole a zadání data budou vybráni pouze zaměstnanci s platným hlavním pracovním poměrem k danému datu
  • Bez mimoev. k – ze seznamu budou vypuštěni zaměstnanci, kteří jsou mimo evidenci (v mimoevidenčním stavu) k danému datu.

Uložení filtru

Filtrovací výraz jednou vytvořený je možné uložit tlačítkem ‚Uložit výraz’; je potřeba zadat název (pojmenování) filtrovacího výrazu. Filtrovací výraz pak načtete pomocí tlačítka ‚Načíst výraz‘. Objeví se ovšem jen ty výrazy, které byly předtím uloženy nad danou sestavou či seznamem.


Křížový filtr

Účelem křížového filtru je zmenšit sestavu nebo seznam zaměstnanců (zmenšit počet řádků) podle kritéria aplikovaného na sloupec, jenž ovšem není přímo viditelný v dotyčné sestavě či seznamu zaměstnanců.

Princip je následující.
1. Nalezněte sestavu, která obsahuje požadovaný sloupec, a použijte filtr na tento sloupec (sloupce).
2. Vytvořte cílovou sestavu.
3. Vyvolejte okno filtru a stiskněte tlačítko pro "křížový filtr". 4. Vyhledejte řádek, který odpovídá sestavě z bodu 1. 5. Zvolte akci, tj. změňte hodnotu z "žádná" na "ponechat společné" nebo "vymazat společné".


Křížové filtry se nacházejí v jednoduchém filtru pod tlačítkem ‚Křížové filtry‘. V seznamu ‚Definice křížového filtru‘ se zobrazí seznam všech otevřených seznamů mimo ten, na kterém byl filtr vyvolán. Křížové filtry umožňují mimo rámec standardního filtrování popsaného výše dodatečně odfiltrovat pracovníky kteří jsou/nejsou v jiném otevřeném seznamu. Takovýto seznam musí obsahovat sloupec osobní číslo, pomocí kterého je možné pracovníky provázat.

Ve sloupci ‚Akce‘ je možné zvolit variantu filtrace, buď ponechat jen pracovníky společné v obou seznamech, nebo pracovníky, kteří jsou v zadaném seznamu odfiltrovat ze seznamu, na kterém byl filtr vyvolán. Křížové filtry jsou aplikovány společně se standardními filtry po volbě tlačítka.

Tlačítko „Zapamatovat zaměstnance“ také souvisí s křížovými filtry. Po stisku tlačítka se daný seznam osobních čísel uloží (zapamatuje, a to až do dalšího stisku tohoto tlačítka na jiném místě). Na jiném místě je možno vyvolat křížové filtry a zapamatovaný seznam zaměstnanců nechat aplikovat.

Použití je i v místech, kde jinak filtrace není. Například kopírování účastníků školicí akce – chcete na akci hromadně přihlásit stejné účastníky, kteří se již účastnili nějaké jiné akce. Tedy na původní akci kliknete na seznam účastníků, filtraci a tlačítko „Zapamatovat zaměstnance“. Na novém místě (v nové školicí akci) použijete křížový filtr na seznam zaměstnanců a následně zaměstnance přihlásíte.


Identifikátor filtru Ikonou ‚param tab‘ nebo nastavením v menu: Nastavení-Třídění, filtrace, hledání; můžete určit (zvolením ‚Tisknout žlutý identifikátor zapnutého filtru‘), zda chcete tisknout výrazné pole s nápisem FILTR na filtrovanou sestavu - např. za účelem jasné identifikace v budoucnosti, že se nejedná o kompletní data, pouze o výběr z dat.






Funkcionalita tlačítka ‚Křížové filtry‘ je popsána níže.

Pozn. Pokud potřebujete filtrovat záznamy, tak, že chcete buď ty, které mají nějakou hodnotu, nebo naopak nejsou vyplněny, volíte operátory Je vyplněno (IsNotNull) / Není vyplněno (IsNull).



Filtr – množina hodnot z celkového výčtu

Varianta a/ - jednotlivé řádky oddělené klauzulí „nebo“

Varianta b/ - využití operátoru „in“ - zapisujte do horního okna "Filtrovací výraz"

Příklad:

  • os_cislo in (1,2,3,10,214, 3427)
  • prac_pom_praxe in (1,2,4)
  • pracovnici_kmen_str in (seznam středisek v apostrofech oddělených čárkou)

Protože střediska jsou na více míst, bylo by vhodné je uvádět bez počátečních nul, tj.

trim (pracovnici_kmen_str) in ('1000', '2000', '3000')

  • Muži – odvození z rodného čísla: mid(rodne_cislo, 3,1) = '0' Or mid(rodne_cislo,3,1) = '1'
  • Ženy – odvození z rodného čísla mid(rodne_cislo, 3,1) = '5' Or mid(rodne_cislo,3,1) = '6'


Filtr – funkce 1.den aktuálně zpracovávaného měsíce a 1.den následujícího měsíce

Globální funkce gf_aktdatum_string a gf_nasldatum_string lze využít při zadávání filtračních podmínek v sestavách. Použítí je nutno vepsat přímo do textové definice filtru, například u sestavy MN 002 (nepřítomnosti za posl.půlrok):

absence_dat_od >= Date(gf_aktdatum_string()) And ( absence_dat_do < Date(gf_nasldatum_string()) or isnull(absence_dat_do)).


Tuto definici filtru je pak možno uložit pod názvem např. "Absence jen aktuální měsíc" a uživatelé už nemusí každý měsíc přepisovat fitrační podmínky.


Zaměstnanci ve stavu v určitém období

Požadavkem je zobrazit zaměstnance, kteří ve firmě pracovali v roce 2009, buď celý rok, nebo i jen po část roku. Protože ve filtru je standardně jenom podmínka "zaměstnanci ve stavu ke konkrétnimu dni", je nutno filtr složit následovně:
- hledají se zaměstnanci, jejichž datum zahájení je dříve (nebo rovno) než 31.12.2009 (ti, co přišli do společnosti v roce 2010, nás nezajímají)
- a zároveň jejich datum ukončení je větší (nebo rovno) než 1.1.2009 (ti, co odešli v r.2008 nebo dříve, nás nezajímají) nebo datum vyplnění není vyplněn

datum_nastupu <= Date('31.12.2009') And (datum_ukonc >= Date('1.1.2009') Or (isnull(datum_ukonc)))

Výraz s "or" (nebo) bylo potřeba vložit do závorek, aby se zpracoval první, a teprve potom výraz "and".

Filtr vložte do horního pole určeného pro vytvoření filtru, můžete si jej také uložit pod nějakým názvem. Filtr je možno upravit pro jiné hranice období; v tomto příkladě byla použita hranice 1.1.2009 a 31.12.2009.


Filtr nad pracovním postupem (Evidence/Pracovní poměry/Pracovní postup) prac_postup_mzd_stup <> prac_postup_mzd_stup[-1] prac_postup_typ_kal <> prac_postup_typ_kal[-1] prac_postup_tarif <> prac_postup_tarif[-1]

Použití – např. Pracovní poměry, záložka Prac.postup, režim Pohled. Toto vložit do filtru. Funguje, ale s výhradou – neukáže první záznam.

Filtr nad složeným údajem Některý sloupec (v seznamu nebo v sestavě) číselníkového typu se může v sestavě objevit složeným výrazem: číslo - název (1 - Generální ředitel, tzn. číslo pracovního místa - název pracovního místa). Filtr v takovém případě může být funkční na číslo (v uvedeném případě číslo pracovního místa ) a není funkční na název. Změnou filtrovací podmínky je možno dosáhnout, aby se podmínka nevztahovala k číslu (interně uložená hodnota v db tabulce), ale k celému výrazu. Toho dosáhnete přidáním klauzule:

  • lookupdisplay()

Příklad použití: Menu: Evidence/MaPExpress, záložka Seznam zaměstnanců. Nebo sestava SI015/A (sestava pracovních míst zaměstnanců) match(lookupdisplay(pov_funkce),'dělník') Hledají se všechna pracovní místa, která v názvu mají obsaženo slovo "dělník" (psáno s malými písmeny).