Datenbank-Level von dBASE Dateien ändern

Die Einstellung des Datenbank-Levels in der BDE (Borland Database Engine) von dBASE ist sehr wichtig. Das neueste Level (Stand 2013) ist 7, während die alten DOS-Versionen bis Level 5 gingen (Level 6 gab es nie). Das neue Level 7 hat ein paar Vorteile, z. B. neue Datentypen Timestamp und Zähler, doch evtl. auch gravierende Nachteile. Denn Level 7 ist leider oft eine Einbahnstrasse und viele Fremdprogramme können (oder wollen …) dBASE-Dateien nur bis zum Level 5 lesen, so auch die neueren Versionen von MS-Office.

Wenn Sie dBASE Plus oder dBASE Personal neu installieren ist evtl. Level 7 voreingestellt. Sie sollten dies prüfen und überlegen, ob es nicht sinnvoller ist diese Voreinstellung auf Level 5 zu ändern. Vorallem wenn Sie noch Dateien mit alten DOS-Programmen austauschen oder ihre Dateien von anderen Programmen verarbeitet werden. Details siehe dBASE lebt! Band 1.

Wenn Sie in der BDE das Level nachträglich von 7 auf 5 umstellen gilt das jedoch nur für alle ab dann neu erstellten dbf-Dateien. Bereits bestehende Dateien im Level 7 werden dadurch nicht geändert, sondern bleiben im Level 7. Selbst wenn Sie eine 7er Datei mit

copy to … 

in eine neue Datei kopieren wird diese neue Datei auch wieder im Level 7 sein, trotz aktivem Level 5 in der BDE! dBASE erkennt, dass die Quelle Level 7 hat und verpasst damit der neuen Datei ebenfalls Level 7, auch dann wenn Sie Level 5 in der BDE eingestellt haben.

Eine Konvertierung bestehender Dateien von Level 7 nach Level 5 geht daher nur über eine Zwischendatei. Hierzu ein Beispiel: Sie haben eine Datei namens level7.dbf im Level 7 und wollen diese in die neu zu erstellende Datei level5.dbf kopieren, die dann auch das Level 5 haben soll. Vorausgesetzt Sie haben Level 5 in der BDE aktiviert funktioniert das so:

use level7
copy structure extended to dummy
create level5 from dummy
append from level7

Der erweiterte copy … Befehl erzeugt eine Tabelle mit der Struktur der Datei (Feldnamen, Datentypen, Feldlängen etc.). Aus dieser Strukturdatei kann dann mit create … from … eine neue Datei erzeugt werden, und die bekommt dann auch das in der BDE eingestellte Level.

Diese neue Datei ist anfangs leer, und mit append from … holen Sie sich anschliessend noch die Datensätze aus der ursprünglichen Datei. Danach müssen ggf. auch noch die Indexe in der neuen Datei level5.dbf erstellt werden, da Informationen zu den Indizes auf diesem Weg nicht übertragen wurden. Sie müssen also die Tabelle exklusiv öffnen und alle Indexe neu anlegen. Lästig, doch immer noch besser als die ganze Tabelle mit allen Feldern neu anzulegen.

Vorsicht Falle: die Konvertierung funktioniert nur, wenn in der Datei mit Level 7 keine Datentypen enthalten sind, die es nur im Level 7 gibt, also z. B. keine Timestamp- oder Zähler-Felder. Ausserdem ist die Länge der Feldnamen in Level 5 wieder auf 10 Zeichen begrenzt, während sie bei Level 7 länger sein können. Ob das in der Praxis ein Manko ist hängt vom Einzelfall ab. In der Regel wohl eher nicht, schliesslich hat es über 30 Jahre lang auch so gereicht …

Und nochmal Vorsicht Falle: wenn Sie eine gültige Level-7 Tabelle haben, in der BDE jedoch Level 5 eingestellt ist, können Sie in der Level-7 Tabelle keine Feldnamen mit mehr als 10 Zeichen vergeben. Die Fehlermeldung ist dabei wenig hilfreich, sie meckert einfach ein “ungültiges Zeichen” an. Sie müssen also in diesem Fall das Datenbanklevel in der BDE auch auf 7 einstellen, um 7er Tabellenstrukturen mit Feldnamen grösser 10 Zeichen zu bearbeiten.

(Stand dieser Info: 2013)