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.
'program DBF_5.BPR
ConsoleClear
ConsoleShow
If DbfUse("CENIK") then 'pokud se otev°ela databßze
If DbfSetOrder("NAZ") = 0 then
'pokud neexistuje index NAZEV, tak jej vytvo°φme
call DbfIndexTag("NAZ", "UPPER(NAZEV)")
end if
DbfSetOrder("NAZ") 'nastavφme index podle nßzvu
DbfSeek("FAX") 'hledßme text FAX
IF DbfFound then 'pokud je nalezen
Writeln(DbfReadStr("NAZEV"))
Else
Writeln("Zßznam nebyl nalezen")
End If
Else
ShowMessage("Databßzi 'CENIK.DBF' nebylo mo₧nΘé otev°φt !")
End If
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) |