předchozí lekce (1.27) | obsah kurzu | následující lekce (1.29) |
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) |