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Θ.
Unit Dbf_2;
interface
implementation
begin
ConsoleClear;
ConsoleShow;
IF DbfUse('CENIK') then {pokud se otev°ela databßze}
begin
DbfSetFilter('(CENA/100*(100+DPH))<1000');
{nastavit filtr pokud cena s danφ menÜφ ne₧ 1000 KΦ}
DbfGoTop; {skok na zaΦßtek databßze}
While not DbfEof do {dokud nenφ konec databßze}
begin
DbfWriteNum('CENA',DbfReadNum('CENA')*1.1);
{zv²Üenφ ceny o 10 %}
Writeln(DbfReadNum('CENA'));
DbfSkip(1); {skok na dalÜφ zßznam}
end;
DbfSetFilter(''); {zruÜit nastaven² filtr}
DbfUse('); {databßzi uzav°eme}
end else
ShowMessage('Databßzi nebylo mo₧nΘ otev°φt !');
end;
end;
end.
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) |