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", "BONANZA")
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