Lekce 3.11
Metody DataTable pro navigaci


předchozí lekce (3.10) obsah kurzu následující lekce (3.12)

Pokud budete zpracovávat data přímo na formuláři, vystačíte se pro navigaci v databázi s komponentou DataNavigator. Pokud však budete chtít zpracovávat data v celém rozsahu databáze, můžete použít příslušné metody komponenty DataTable (uvedeno v syntaxi jazyka KLONDAIK):

DataTable.First; {skok na první záznam databáze}
DataTable.Next;  {skok na následující záznam databáze}
DataTable.Prior; {skok na předchozí záznam databáze}
DataTable.Last;  {skok na poslední záznam databáze}
Pro navigaci v databázi můžete použít také metody, které vycházejí ve svém názvosloví z již známých příkazů pro obsluhu databází v databázovém okně (uvedeno v syntaxi jazyka KLONDAIK):

DataTable.GoTop;    {skok na první záznam databáze}
DataTable.Skip(1);  {skok na následující záznam databáze}
DataTable.Skip(-1); {skok na předchozí záznam databáze}
DataTable.GoBottom; {skok na poslední záznam databáze}
Jak jste si jistě všimli, první způsob je výhodnější zejména pokud budete procházet databázi po jednotlivém záznamu, kdy se použije metoda DataTable.Skip. Podobná metoda je DataTable.MoveBy, která navíc vrací skutečný počet provedeného skoku. To můžete využít například pro zjištění konce databáze. Pokud stojíte na posledním záznamu a dáte DataTable.MoveBy(1), bude vrácena nulová hodnota.

Při procházení databáze v cyklu můžete použít metody DataTable.Bof (indikuje začátek databáze) a DataTable.Eof (indikuje konec databáze). Pokud budete procházet celou databází, můžete dočasně vypnout zobrazování dat komponentou DataGrid. Pro vypnutí zobrazení použijte metodu DataTable.DisableControls, zobrazení se po ukončení cyklu znovu aktivuje metodou DataTable.EnableControls:


Jazyk KLONDAIK: procedure TForm.Button1Click(Sender: TObject); Var rec: integer; begin rec := dataTable1.Recno; {uložíme číslo záznamu} ConsoleClear; {vymažeme textový výstup} DataTable1.DisableControls; {zakážeme zobrazování} DataTable1.First; {skok na první záznam} While not DataTable1.Eof do {do konce souboru} begin Writeln(DataTable1.ReadStr('NAZEV')); DataTable1.Next; {skok na další záznam} end; DataTable1.Go(rec); {vrátíme se na původní záznam} DataTable1.EnableControls; {povolíme zobrazování} end;

Jazyk BONANZA: Sub Button1Click(Sender) rec = dataTable1.Recno 'uložíme číslo záznamu ConsoleClear 'vymažeme textový výstup DataTable1.DisableControls 'zakážeme zobrazování DataTable1.First 'skok na první záznam Do While not DataTable1.Eof 'do konce souboru Writeln(DataTable1.ReadStr("NAZEV")) DataTable1.Next 'skok na další záznam Loop DataTable1.Go(rec) 'vrátíme se na původní záznam DataTable1.EnableControls 'povolíme zobrazování End Sub

Jazyk JUKON: function Button1Click(Sender) { rec = dataTable1.Recno; //uložíme číslo záznamu ConsoleClear; //vymažeme textový výstup DataTable1.DisableControls; //zakážeme zobrazování DataTable1.First; //skok na první záznam while (!DataTable1.Eof) //do konce souboru { Writeln(DataTable1.ReadStr('NAZEV')); DataTable1.Next; //skok na další záznam } DataTable1.Go(rec); //vrátíme se na původní záznam DataTable1.EnableControls; //povolíme zobrazování }

V uvedeném příkladě jsme si nejprve uložili aktuální pozici v databázi a provedli skok na první záznam. V cyklu až do posledního záznamu jsme potom prováděli akce s každým záznamem. Na konci jsme provedli skok na původní pozici v databázi.
předchozí lekce (3.10) obsah kurzu následující lekce (3.12)

OZOGAN, 1 Máje 97, 460 01 Liberec
tel.,fax: (048) 52 28 338, e-mail: info@ozogan.cz