Programování v Pascalu: databázové formáty DBF
23. července 1998 skrivan@fi.muni.cz


  1. Slovo úvodem
  2. Struktura souboru .dbf
  3. Globální údaje
  4. Popis položky
  5. Jak manipulovat se záznamy
  6. Závěrem




1. Úvod

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 velikánů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.

2. 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í


3. 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í


4. 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:



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é


5. 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 .



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.)

6.Závěrem

Na závěr bych chtěl říct, že jsem vynechal práci s Memo položkami (ty jsou uloženy v souborech typu DBT), s nimi je práce už trochu složitější. Jinak, kdo má zájem, mohu mu poskytnout celkem fungující jednoduchý prográmek: klikněte zde.


[Zpět] [Změna kódování] [Domovská stránka]