Filtr

Z Prirucky
Verze z 18. 5. 2012, 15:49, kterou vytvořil Petrm (diskuse | příspěvky) (Nová stránka: 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 sezna...)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)

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ů.

Filtr

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

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.


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).