Lekce 1.27
╚tenφ a zßpis dat databßze


p°edchozφ lekce (1.26) obsah kurzu nßsledujφcφ lekce (1.28)

V p°edchozφch lekcφ kurzu jsme se seznßmili s tφm, co je to databßze a jak se pohybovat v zßznamech databßze. Umφme ji₧ takΘ editovat polo₧ky databßze, avÜak pouze za pou₧itφ databßzovΘho okna. Nynφ si proto ukß₧eme, jak lze p°φmo z programu nejen m∞nit obsah polo₧ek databßze, ale jak je takΘ Φφst a dßle zpracovßvat.

Jak jsme se ji₧ d°φve seznßmili, mohou b²t polo₧ky v databßzi °et∞zcovΘ, numerickΘ, logickΘ a datumovΘ. S ka₧d²m typem polo₧ky se p°itom musφ v programu pracovat odliÜn²m zp∙sobem. Specißlnφm typem polo₧ky je typ Memo, co₧ je poznßmka libovolnΘ dΘlky, se kterou systΘm KLONDAIK dokß₧e pracovat pouze p°i zobrazenφ na formulß°i. NejjednoduÜÜφ zp∙sob jak zjistit typ polo₧ky je zobrazit si z databßzovΘho okna dialog pro nastavenφ filtru databßze, ve kterΘm je p°esn² popis databßze zobrazen.

S jednou mo₧nostφ Φtenφ obsahu polo₧ek databßze jsme se ji₧ seznßmili v p°edchozφ lekci kurzu. Je to pou₧itφ vyhodnocovßnφ v²raz∙, kdy zadßme jako v²raz nap°φklad pouze jmΘno po₧adovanΘ prom∞nnΘ. DalÜφ mo₧nostφ je pou₧itφ funkce DbfReadDat pro Φtenφ datov²ch polo₧ek, DbfReadLog pro Φtenφ logick²ch polo₧ek, DbfReadNum pro Φtenφ numerick²ch polo₧ek a DbfReadStr pro Φtenφ °et∞zcov²ch polo₧ek. Jako parametr volßnφ funkce se pou₧ije jmΘno ΦtenΘ polo₧ky databßze. Pro Φtenφ memopol₧ky se pou₧φvß funkce bu∩ DbfReadBin, nebo DbfReadMem v zßvislosti na obsahu a dΘlky memopol₧ky. Platφ p°itom, ₧e pokud zadßte chybnΘ jmΘno polo₧ky, p°φpadn∞ pou₧ijete pro Φtenφ polo₧ky funkci jinΘho typu, bude vrßcena implicitnφ prßzdnß hodnota.


P°φklad Φtenφ polo₧ek databßze:
Writeln(DbfReadDat('DATUM'));
Writeln(DbfReadNum('CENA'));
Writeln(DbfReadStr('NAZEV'));
JeÜt∞ d°φve, ne₧ se seznßmφme s mo₧nostφ zßpisu hodnot do polo₧ek databßze, ukß₧eme si, jak vytvo°it v databßzi nov², prßzdn² zßznam. Pou₧φvß se k tomu procedura DbfAppendBlank, kterß doplnφ do databßze jeden nov², prßzdn² zßznam a nastavφ na n∞j ukazatel databßze. Nßsledn∞ potom mßme mo₧nost naplnit jednotlivΘ polo₧ky databßze po₧adovan²mi hodnotami.

Pro zßpis do databßze se pou₧φvajφ op∞t procedury rozd∞lenΘ podle typu polo₧ek databßze. Pro zßpis do datov²ch polo₧ek se pou₧ije procedura DbfWriteDat, pro zßpis do logick²ch polo₧ek se pou₧ije procedura DbfWriteLog, pro zßpis do numerick²ch polo₧ek se pou₧ije procedura DbfWriteNum a pro zßpis do °et∞zcov²ch polo₧ek se pou₧ije procedura DbfWriteStr. Do memopolo₧ek m∙₧ete zapisovat podle obsahu procedurou bu∩ DbfWriteMem, nebo DbfWriteBin.

P°φklad zßpisu do polo₧ek databßze:


DbfWriteDat('DATUM', '24/12/1997');
DbfWriteDat('DATUM', DbfEvalStr('DTOC(DAY())'));
DbfWriteNum('CENA',  100);
DbfWriteNum('CENA',  DbfReadNum('CENA')*1.1);
DbfWriteStr('NAZEV', 'KLONDAIK');
DbfWriteStr('NAZEV', DbfEvalStr('SUBSTR(NAZEV,1,10) '));
Jak ji₧ bylo n∞kolikrßt uvedeno, dosti specifickou polo₧kou databßze je memopolo₧ka dovolujφcφ zßpis tΘm∞° neomezenΘho obsahu. KonkrΘtn∞ji se jednß o maximßln∞ 64 Kb textu, pokud mß b²t zobrazen v okn∞, p°φpadn∞ do 16 Mb, pokud s memopolo₧kou budeme pouze pracovat p°φmo z programu. Pro p°evod souboru do memopolo₧ky pou₧ijte proceduru DbfFileToBin, pro p°evod memopolo₧ky do souboru slou₧φ procedura DbfBinToFile.

P°i zßpisu do databßze musφte dßvat pozor na to, ₧e ztratφte nenßvratn∞ p°edchozφ obsah polo₧ek a pokud pou₧ijete k experiment∙m p°φmo databßze pou₧φvanΘ nap°φklad vßmi pou₧φvan²m ekonomick²m programem, m∙₧ete ztratit i mnohem vφce. Nepou₧φvejte proto ve vlastnφm zßjmu v systΘmu KLONDAIK databßze vyu₧φvanΘ jin²mi systΘmy.


p°edchozφ lekce (1.26) obsah kurzu nßsledujφcφ lekce (1.28)

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