DBEs
Vom RDD zur DBE
Mit Clipper 5.x kam ein neues Konzept auf, um auf Daten zuzugreifen: RDD (Replaceable Database Driver). Und auf einmal konnte man neben den Standard-Formaten DBF und NTX auch FoxPro-Formate nutzen. Der bekannteste, alternative RDD was der SixDriver.
Seitens Alaska Software wurde die RDD Architektur als zu "monolithisch" angesehen und durch DBEs ersetzt.
DBE steht für DataBase Engine. Eine DBE kann verschiedene Funktionen haben, wie z.B.
- Data-Komponente
- Order-Komponente
Data Components
beschreiben die Art und Weise, wie Daten gespeichert werden.
DBFDBE
ist die Data-Komponente, welche die klassische DBF-Struktur abbildet. Memo-Felder werden in DBT-Dateien abgelegt und sich auf reine CHAR-Werte beschränkt.
FOXDBE
erlaubt den Zugriff auf FoxPro-spezifische Erweiterung, wie Memo-Felder, die mit binären Daten umgehen können.
SDFDBE
erlaubt den Zugriff auf Standard Delimited Format Dateien, also z.B. Text-Dateien. Dass diese Dateien einen entsprechenden Aufbau besitzen müssen, versteht sich von selbst. Das erwartete Layout ist streng spaltenorientiert, es werden keine Trennzeichen erwartet oder verwendet.
DELDBE
erlaubt den Zugriff auf CSV-Dateien, als handele es sich um eine "normale" DBF-Datei.
Zu beiden DBEs ist anzumerken, dass einige Anweisungen bei diesen DBEs nicht unterstützt werden, sie dienen eher dazu, Datenimporte durchzuführen.
Order Components
NTXDBE
Diese DBE stellt alle Funktionalitäten zur Verfügung, die eine Clipper NTX-Datei auszeichnen. Um die Kompatibilität mit Clipper aufrecht zu erhalten, unterstütz die NTXDBE nur den OEM Zeichensatz.
CDXDBE
erlaubt den Zugriff auf FoxPro spezifische Erweiterungen wie Tags. Die CDXDBE verwendet den ANSI Zeichensatz. Darüber hinaus wird eine Collation Table, die bei der Erstellung einer CDX-Datei angegeben wird, in der Index-Datei gespeichert. Diese Festlegung kann nach der Erstellung der Datei nicht mehr geändert werden.
Mehr über die Auswirkungen von SetCollation().
Compound DBE
Aus einer Data und einer Order Component wird eine Compound DBE erzeugt. Hierzu dient beispielsweise die DbeSys.prg, die standardmässig eine Kombination aus DBFDBE und NTXDBE unter dem Namen DBFNTX bereitstellt.
Bei der Entscheidung, welche DBEs genutzt werden sollen, spielt es auch eine wichtige Rolle, ob Daten mit alten Clipper-Anwendungen gemeinsam genutzt werden sollen. Hierdurch kann es zu Einschränkungen in Bezug auf die auswählbaren DBEs kommen.
Es ist möglich, mehrere Compound DBEs zu erzeugen. Eine davon sollte als Standard dienen, und man kann als Programmierer beim Öffnen einer Datei festlegen, ob die Standard-DBE verwendet wird, oder ob man eine andere DBE verwenden will.