p°edchozφ lekce (1.30) | obsah kurzu | nßsledujφcφ lekce (1.32) |
Pokud budete chtφt vyhledat nap°φklad v adresß°i konkrΘtnφ jmΘno, musφte si nejprve nastavit index podle jmΘna. Nßsledn∞ m∙₧ete vyhledat po₧adovanΘ jmΘno bu∩ volßnφm funkce DbfSeek, p°φpadn∞ PopUp volbou z databßzovΘho okna. Bude-li zadanΘ jmΘno v databßzi existovat, p°esune se ukazatel databßze na zßznam s uveden²m jmΘnem. Pokud zadanΘ jmΘno v databßzi neexistuje, p°esune se ukazatel databßze automaticky na nejbli₧Üφ nßsledujφcφ zßznam. Tedy na nßsledujφcφ v °azenφ dle abecedy, p°φpadn∞ podle velikosti Φφsla.
P°i vyhledßvßnφ podle index∙ nemusφte zadßvat cel² klφΦ, staΦφ pouze jeho zaΦßtek. V takovΘm p°φpad∞ systΘm hledß podle zadanΘho °et∞zce a nastavφ databßzov² ukazatel na prvnφ vyhovujφcφ zßznam. Pokud tedy zadßte pro vyhledßvßnφ nap°φklad pφsmeno "H", bude nalezen a zobrazen prvnφ zßznam zaΦφnajφcφ uveden²m pφsmenem.
Funkce DbfSeek vracφ logickou informaci o tom zda bylo hledßnφ dle klφΦe ·sp∞ÜnΘ. Navφc je p°i ka₧dΘm hledßnφ v databßzi do p°φznaku DbfFound nastavena informace o ·sp∞Ünosti hledßnφ. P°φznak lze testovat volßnφm funkce DbfFound pro provedenφ libovoln²ch nßsledn²ch akcφ.
Vyhledßvßnφ v databßzi se provßdφ p°esn∞ podle zadanΘho klφΦe vΦetn∞ respektovßnφ
velk²ch a mal²ch pφsmen v databßzi i vyhledßvacφm klφΦi. Proto je mo₧nΘ zadat p°i
tvorb∞ indexu jeho p°evod na velkß pφsmena jak bylo uvedeno v p°edchozφ lekci. Pokud
potom p°i zadßvßnφ klφΦe provedete takΘ jeho konverzi na velkß pφsmena, bude
odpovφdajφcφ zßznam nalezen v₧dy bez ohledu na zadßnφ mal²ch a velk²ch pφsmen.
Unit Dbf_5;
interface
implementation
begin
ConsoleClear;
ConsoleShow;
If DbfUse('CENIK') then {pokud se otev°ela databßze}
begin
If DbfSetOrder("NAZ") = 0 then
{pokud neexistuje index NAZEV, tak jej vytvo°φme}
DbfIndexTag('NAZ', 'UPPER(NAZEV)');
DbfSetOrder('NAZ'); {nastavφme index podle nßzvu}
DbfSeek('FAX'); {hledßme text FAX}
IF DbfFound then {pokud nenφ nalezen}
begin
Writeln(DbfReadStr('NAZEV'));
end else
Writeln('Zßznam nebyl nalezen');
DbfUse(''); {databßzi uzav°eme}
end else
ShowMessage('Databßzi nebylo mo₧nΘ otev°φt !');
end;
end;
end.
Pou₧φvßnφ indexovßnφ databßzφ mß mnoho v²hod a p°ednostφ. Bohu₧el, existujφ i
n∞kterΘ zßpornΘ vlasti, se kter²mi vßs nynφ seznßmφme. Pokud byste vytvo°ili v databßzi
mnoho index∙, mohlo by b²t jejich zpracovßnφ pomalejÜφ. Nev²hodou je souΦasn∞ i
prostor, kter² zabφrajφ indexy v souborech na disku poΦφtaΦe.
Pokud nenφ nutnΘ pou₧φvat databßzi se°azenou podle index∙, vypn∞te jejich nastavenφ funkcφ DbfSetOrder. Zpracovßnφ bude probφhat rychleji. N∞kdy se mohou indexy (soubor na disku) poruÜit a v takovΘm p°φpad∞ je vhodnΘ provΘst procedurou DbfReindex jejich obnovu.
Nenφ mo₧nΘ zruÜit pouze jeden index z databßze. Lze zruÜit pouze vÜechny indexy najednou. To je mo₧nΘ provΘst zruÜenφm souboru, kter² mß jmΘno shodnΘ s databßzφ, p°φponu mß *.CDX.
p°edchozφ lekce (1.30) | obsah kurzu | nßsledujφcφ lekce (1.32) |