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