Datenbanken

Borland Database Engine

Probleme mit BDE und C++ Builder bzw. BC++ 4.5/5.x

Wie setzt man einen Filter in einem TDataSet, wenn das Feld einen speziellen Buchstaben im Namen hat, wie beispielsweise „/“ in der BDE Beispiel-Tabelle DIVCUST.DB?

Frage

Der Name des Felds muß von eckigen Klammern umschlossen werden, wie der nachfolgende Beispielaufruf zeigt:

Table1->Filtered = true;
Table1->Filter   = "[State/Prov] = 'CA'";
Table1->Refresh();

Lösung

Wie löst man Konflikte, die durch Mehrfachinstallation der BDE entstehen, wenn C++ Builder, Delphi oder IntraBuilder unterschiedliche BDE-Versionen installieren?

Frage

Zunächst sollte man mittels RegEdit nachsehen, welcher Pfad für DLLPATH im Schlüssel

Lösung

HKEY_LOCAL_MACHINE\software\Borland\Database Engine

angegeben ist. Hier sollte es nur genau einen Pfad geben. Existieren mehrere Angaben, sind Probleme vorprogrammiert. Des weiteren sollte der Schlüssel CONFIGFILE01 auf die jeweils zuletzt installierte Konfigurationsdatei verweisen.

Ein Weg zur Auflösung eines Konflikts besteht darin, die Database Engine des Borlandprodukts (oder Dritt-Anbieter-Tools) neu zu installieren, das die neueste Version der BDE enthält. Anschließend muß der Eintrag DLLPATH in der Registry editiert werden, so daß die neu installierte BDE per Default verwendet wird.

Da die BDE jeweils abwärts kompatibel ist, besteht kein Grund zur Sorge, daß ältere Versionen nicht mehr mit den vorhandenen Anwendungen laufen (sofern es sich nicht um alte 16-Bit-Anwendungen handelt!).

Wie kann man ODBC-Treiber löschen? Wird ein Treiber über das IDAPI Konfigurations-Tool entfernt und anschließend die Konfiguration gespeichert und das Tool verlassen, so ist der Treiber beim nächsten Aufruf wieder da.

Frage

Hier hilft nur das Entfernen des 'Database Engine' Registry-Eintrags und das anschließende Ausführen der BDE-Installation.

Lösung

Wenn ein neuer ODBC-Treiber unter der BCB 1.0 Installation hinzugefügt wird, resultiert die Fehlermeldung, daß ODBC entweder nicht installiert oder beschädigt ist. Was ist passiert?

Frage

Diese Fehlersituation tritt auf, wenn von der BDE aus ein neuer ODBC-Treiber installiert werden soll und auf dem System noch kein 32-Bit ODBC-Treiber installiert ist. Ob ein 32-Bit ODBC-Treiber installiert ist, läßt sich recht einfach ermitteln: Wenn die Systemsteuerung kein Symbol mit der Beschriftung „32-Bit ODBC“ enthält, ist im System kein 32-Bit ODBC-Treiber installiert. In einem solchen Fall sollte der erste 32-Bit ODBC-Treiber über die Systemsteuerung installiert werden.

BCB 1.0 enthält keine ODBC-Treiber. Diese müssen separat erworben werden.

Lösung

Wie werden Visual dBASE Tabellen aus einer Anwendung heraus gepackt?

Frage

Die BDE kennt die Funktion DbiPackTable, die wie folgt definiert ist:

DBIResult DBIFN DbiPackTable(
    hDb, hCursor, pszTableName, 
    [pszDriverType], bRegenIdxs);

hDB ist das Handle auf die Datenbank, während hCursor das Handle auf den Tabellen-Cursor übergibt. Über den Parameter bRegenIdxs ist zu spezifizieren, ob die BDE die Indexdateien regenerieren soll (TRUE) oder nicht (FALSE).

Diese Call ist nur über die BDE direkt erreichbar, da die VCL keine entsprechende Methode anbietet.

Lösung

Was läuft schief, wenn das Property RecordCount einen definitiv falschen Wert liefert?

Frage

RecordCount sollte eigentlich sofort nach dem Öffnen der Tabelle einen korrekten Wert liefern. Um sicherzustellen, daß alles korrekt abläuft, kann man zunächst die Methode Last() aufrufen. Diese bewegt den Datensatzzeiger auf den letzten Datensatz, was dem Property RecordCount ein korrektes Arbeiten ermöglicht.

Lösung

Sollte die BDE des C++ Builder in ein separates Verzeichnis installiert werden, wenn bereits eine BDE auf dem System vorhanden ist oder soll die vorhandene Installation überschrieben werden?

Frage

Die BDE DLLs in C++Builder 1.0 haben die Version BDE 3.5 und sind Bestandteil des IntraBuilder 1.01. Sie sollten mit Delphi 2.x korrekt funktionieren, so daß eine gegebenenfalls von Delphi 2.x oder IntraBuilder 1.01 bestehende BDE-Installation überschrieben werden kann.

Die BDE, die mit Delphi 3.x ausgeliefert wird, ist neuer als die von C++ Builder und wird beschädigt, wenn die C++ Builder Installation die vorhandene Installation überschreibt. Gleiches gilt im übrigen für Drittanbieter-Tools. Eines der prominentesten Opfer des C++ Builders ist die D-Info 97, die mit neueren BDE-DLLs ausgeliefert wird.

Grundsätzlich ist es natürlich immer möglich, mehrere BDE-Versionen in unterschiedlichen Verzeichnissen zu installieren. Allerdings muß man dann in der Lage sein, die Einstellungen der BDE in der Registry anzupassen. Um zwischen den verschiedenen Versionen wechseln zu können.

Lösung





Sachgebiet


© 2009-2012 by Alojado Publishing. Alle Rechte vorbehalten. Ausgewiesene Marken gehören ihren jeweiligen Eigentümern.
Mit der Benutzung dieser Seite erkennen Sie die Nutzungsbedingungen und die Datenschutzerklärung an. Der Betreiber übernimmt keine Haftung für den Inhalt verlinkter externer Internetseiten.
Seite erzeugt 2012-05-20 02:59:02 von textarchiv.alojado.de