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) |