Lekce 1.28
Nastavení filtru, podmínky xBase


předchozí lekce (1.27) obsah kurzu následující lekce (1.29)

Pokud budete potřebovat omezit počet záznamů zobrazených v databázi, máte možnost nastavit filtr na zobrazení dat. To znamená, že určíte podmínky, za kterých mají být záznamy databáze přístupné. Můžete například nastavit, že mají být z ceníku přístupné pouze záznamy, u nichž je cena menší než 100. Lze také nastavit sloučení několika podmínek. Například cena je větší než 100 a zároveň menší než 200. S takto filtrovanou databází můžete provádět další akce, například tisknout sestavu, do které však budou zahrnuty pouze záznamy vyhovující zadanému filtru. Databáze zůstává přitom beze stále beze změny a nevyhovující záznamy jsou stále v databázi obsaženy. Po zrušení filtru budou dále běžně přístupné.

Filtr na databázi můžete nastavit voláním procedury DbfSetFilter, kdy se zadává přímo podmínka filtru v syntaxi jazyků xBase. Příklad zadání výše uvedené podmínky:


DbfSetFilter("CENA>100.AND.CENA<200")
Pokud byste chtěli nastavit filtr pro cenu menší než 100 nebo větší než 200, museli byste zadat:

DbfSetFilter("CENA<100.OR.CENA>200")
V podmínce filtru se používají přímo funkce v syntaxi jazyků xBase (databázové jazyky Dbase, FoxPro, Clipper), se kterými jsme se již seznámili v předchozích lekcích kurzu.

Další možností nastavení filtru je použití dialogového okna, který vyvoláte volbou 'Nastavit filtr' z PopUp menu zobrazeného po kliknutí pravým tlačítkem myši na ploše databázového okna. Zobrazí se dialogové okno, ve kterém je v levé části zobrazena struktura databáze s uvedením typu položek a jejich délek. Okno slouží ke snadnému zadání podmínky filtru bez nutnosti vypisování všech údajů. To je nahrazeno kliknutím myší na nabízenou variantu.

Ve střední části okna je uveden seznam funkcí v syntaxi xBase použitelných k zadání podmínky filtru. V pravé části okna jsou nahoře zobrazeny tlačítka s možnými operacemi s daty (rovná se, menší, větší, menší nebo rovno, větší nebo rovno, nerovná se apod.). V pravé střední části obrazovky jsou zobrazena tlačítka pro spojování podmínek (.AND., .OR.,.NOT.). Ve spodní části okna je zobrazována podmínka filtru s možností její editace z klávesnice. V pravé dolní části obrazovky jsou umístěna tlačítka pro uzavření okna se zadáním požadované akce. Kliknete-li na tlačítko zrušit, nebude filtr nastaven. Kliknitím na tlačítko 'Nastavit filtr' aktivujete v případě jeho správného sestavení zadaný filtr, data budou omezena dle zadané podmínky.

Požadovaný výraz pro nastavení filtru máte možnost zadat přímo z klávesnice ve spodní části dialogového okna. Máte také možnost použít tlačítek pro pohodlné zadávání jednotlivých elementů výrazu pro nastavení filtru. V případě požadavku zadání výše uvedeného filtru by jsme postupovali následujícím způsobem:

1) Po kliknutí myší na položku CENA v levé části okna se zobrazí položka ve spodní části okna, kde je podmínka sestavována.

2) Klikneme myší na symbol > který je umístěn v pravé horní části okna. Symbol se zobrazí i v sestavované podmínce.

3) Z klávesnice dopíšete hodnotu 100.

4) Kliknete v pravé střední části obrazovky na tlačítko .AND. symbolizující spojení podmínky.

5) Obdobným způsobem doplníte druhou část filtru, to je CENA<200

6) Filtr aktivujete kliknutím na tlačítko Nastavit.

Po aktivaci filtru se zadaná podmínka zobrazí v horní části databázového okna. V takovém případě se zobrazují pouze data vyhovující zadané podmínce. Pokud chcete podmínku deaktivovat, vyvolejte opět okno pro zadání filtru a uzavřete jej tlačítkem Zrušit. Filtr bude deaktivován a budou opět zobrazována všechna data.

Filtr máte samozřejmě možnost nastavit i přímo z programu. Pokud například potřebujete zvýšit v ceníku ceny, které jsou včetně DPH větší než 1000,- Kč můžete použít následující program využívající následující program. Pro ty z vás, kteří neví co je to DPH bude stačit, vysvětlení, že se jedná o zvýšení ceny v procentech, jehož hodnota je uvedena v položce DPH. Jedná se o daň z přidané hodnoty. V programu nejprve nastavíme filtr a následně již zpracujeme každý záznam. Nevyhovující záznamy jsou díky nastavenému filtru nepřístupné.


'program DBF_2.BPR

ConsoleClear
ConsoleShow
IF DbfUse("CENIK") then     'pokud se otevřela databáze
   DbfSetFilter("(CENA/100*(100+DPH))<1000")
   'nastavit filtr pokud cena s daňí menší než 1000 Kč
   DbfGoTop                 'skok na začá tek databáze
   Do Until DbfEof          'dokud není konec databáze
      call DbfWriteNum("CENA",DbfReadNum("CENA")*1.1)
      'zvýšení ceny o 10 %
      Writeln(DbfReadNum("CENA"))
      DbfSkip(1)           'skok na další záznam
   Loop
   DbfSetFilter("")        'zrušit nastavený filtr
   DbfUse("")
Else
    ShowMessage("Databázi 'CENIK.DBF' nebylo možné‚ otevřít !")
End If
V následující lekci se seznámíme i s dalšími možnostmi řešení výše uvedeného úkolu.
předchozí lekce (1.27) obsah kurzu následující lekce (1.29)

OZOGAN, 1 Máje 97, 460 01 Liberec
tel.,fax: (048) 52 28 338, e-mail: info@ozogan.cz