Pascal a formát DBF

Ti, co programujete v jazyce Pascal již nějakou chvíli, tak jistě víte, že tento jazyk nabízí programátorům celkem solidní práci s datovými soubory. Datový soubor definujete v hlavičce programu, má nějakou pevně danou strukturu a s takto deklarovaným souborem můžete ve vašem programu pracovat celkem pěkně.
Problém by asi mohl nastat tehdy, jestliže byste chtěli, aby váš datový soubor byl v nějakém známém formátu, tedy aby data byla čitelná takovým databázovým programům, jako je FoxBase, dBase, WinBase, apod. Téměř každý databázový program umožňuje nějakým způsobem načíst datový soubor formátu DBF. Na následujících řádcích vás seznámím, jak je datový soubor ve formátu DBF organizován, a jak s ním v Pascalu pracovat, neboť, Pascal datové soubory (bohužel) neukládá v tomto standardním formátu.

Struktura souboru .dbf

Datový soubor typu .dbf má přesně definovanou strukturu. Skládá se z hlavičky a bloku dat. Samotná hlavička se skládá z globálních údajů popisující dbf soubor a ze seznamu, ve kterém je zahrnuty popisy jednotlivých položek v databázovém souboru. Za tímto seznamem (a tedy už koncem hlavičky) následuje datová oblast, kde jsou za sebou 1. záznam, 2. záznam, ... až poslední záznam v databázovém souboru. Všechny záznamy mají stejnou délku.
Strukturu přehledně zobrazuje následující tabulka:

Hlavička
  • Globální údaje
  • Popis 1. položky
  • popis 2. položky
  • ...
  • popis poslední položky
Datová oblast
  • Záznam 1 (1. položka, 2. položka, ... posl.položka)
  • Záznam 2 (1. položka, 2. položka, ... posl.položka)
  • ...
  • Záznam poslední

Globální údaje

V těchto údajích naleznete informace o souboru: existencích Memo položek, datum poslední aktualizace, počet záznamů, velikost hlavičky, atd. Tyto údaje jsou obsaženy v prvních 32 bajtech databázového souboru. Přesný popis obsahuje následující tabulka:

Začátek Počet bytes Poznámka
1 1 Značka DBF souboru+ existence Memo položek (#3 - ne, #131 - ano)
2 1 Rok poslední aktualizace souboru
3 1 Měsíc poslední aktualizace souboru
4 1 Den poslední aktualizace souboru
5 4 Celkový počet záznamů v souboru
9 2 Velikost hlavičky databázového souboru
11 2 Velikost jednoho záznamu
13 20 Rezervováno pro nestandardní údaje různých aplikací

Popis položky

V této části najdete informace týkající se jedné položky záznamu: např. typ položky, délka položky, její poloha, aj. Popis každé položky zabírá právě 32 bajtů. Základní typy položek jsou:

  • Char - řetězec
  • Date - datum
  • Logical - pro zápis ano/ne
  • Memo - poznámka
  • Numeric - číslo

Blok popisu položek:

Začátek Počet bytes poznámka
1 11 Název položky
12 1 Typ položky - C (Char), D (Date), L (Logical), M (Memo), N (Numeric)
13 4 poloha položky
17 1 Délka položky
18 1 Počet deset. míst (pro typ N)
19 14 rezervované

Jak manipulovat se záznamy

V první řadě je potřeba načíst hlavičku databázového souboru a zpracovat jednotlivé údaje. Nejjednodušší je asi načíst hlavičku do pole záznamů. Typ záznamu by měl mít strukturu popisu položky v záznamu. (viz předchozí tabulka) Tím máme potřebné údaje o položkách záznamu. Z velikosti hlavičky můžeme snadno odvodit polohu prvního záznamu. Vzhledem k tomu, že záznamy mají stejnou velikost, lze pak jakýkoliv záznam v souboru nalézt pomocí jednoduché "adresy": Velikost_hlavička + N x Velikost_záznamu.
Pro načítání nebo zápis souvislého počtu bajtů používejte procedur BlockRead, BlockWrite . Dále proceduru Seek pro nastavení na dané místo v souboru.
Důležité je, že všechny typy položek se zapisují ve formě řetězce, tj. string .

  • Char - zapisuje se jako posloupnost ASCII, o maximální délce 256 znaků
  • Date - zapisuje se ve formátu RRRRMMDD, rok je udáván i s letopočtem
  • Logical - zapisuje se jako "T" true, "F" false, délka tohoto pole je vždy 1
  • Numeric - zapisuje se jako real, délku čísla a počet desetinných míst zjístíte z popisu položky v hlavičce souboru
  • Memo - vynechávám

Pokud chcete nějaký záznam označit za zrušený, provedete to tak, že první bajt záznamu přepíšete znakem #42. Tento záznam lze obnovit opěrovným přepsáním prvního bajtu znakem #32. Nové záznamy se zapisují na konec souboru, přičemž je nutné dodržet psaní značky konce souboru za poslední záznam. Při ukončení práce s databázovým souborem je vhodné aktualizovat hlavičku soubotu (posl. modifikace, počet záznamů, aj.)


WEBovský počítadlo spočítalo, že si číslo počitadlo, které navštívilo od 17.října 1999 tyto stránky uložené na serveru Volny.cz
Tato stránka byla autorem naposledy editována 07.08.2007 13:27:24,
automatický update proveden 03.09.2007 22:23:44