Announcement

Collapse
No announcement yet.

Probleme beim Zugriff mittels TTable auf eine Access-DB

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Probleme beim Zugriff mittels TTable auf eine Access-DB

    Hai.

    Ich versuche in einem C++ Builder-Projekt mittels dem Objekt TTable auf eine Access-DB zuzugreifen. Allerdings habe ich dabei das Problem, wenn ich im Programm in einem DB-Editier-Feld den Inhalt lösche, das Attribut in der DB nicht „richtig“ leer ist. Hört sich sicher komisch an. Ich habe danach mit einer Abfrage geprüft, ob das Attribut „NULL“ ist. Das ist nicht so. Eine weitere Abfrage mit den Längen der Inhalte brachte die Erkenntnis, des die Länge des Inhaltes mit der DB-Funktion Länge(Feldname) 0 ist. Und nicht Null, wie das bei den Feldern der Fall ist, die ich direkt in der DB lösche. Die TTable hängt an einem TdataSource-Objekt, der wiederum über eine Navigator-Leiste gesteuert wird.

    Woran liegt das?

    Vielen Dank im voraus für Eure Hilfe

    Dirk

  • #2
    Hallo,

    >Woran liegt das?

    oh - das wird eine lange Geschichte ;-)

    Eine Datenbank unterscheidet penibel zwischen dem Zustand NULL und dem Wert einer leeren Zeichenkette. Allerdings ist das für manche Zielgruppen zu "unbequem", so dass einige Datenbanken (wie zum Beispiel ACCESS) eine Abkürzung erlauben:
    <pre>
    Properties['Jet OLEDB:Allow Zero Length'].Value := True;
    </pre>
    Dazu kommt, dass die BDE in Wirklichkeit gar keinen Treiber für das MDB-Datenbankformat von ACCESS zur Verfügung stellt, sondern einfach nur je MDB-Version verschiedene Wrapper-DLLs auf die alten DAO-Objekte von Microsoft installiert. Somit ist das Verhalten der Anwendung von der folgenden Kette abhängig: <br>
    1. Verhalten des genutzten TDataSet-Nachfolgers<br>
    2. Verwendete Wrapper-DLL (siehe BDE-Administrator) <br>
    3. Versionsnummer des vorgefundenen DAO-Objekts <br>
    4. Konfiguration der Tabellenstruktur der ACCESS-Datenbank (siehe Jet OLEDB-Eigenschaften).

    Seit Delphi 5 ist daher der Zugriff über die ADO-Objekte bzw. die ADO Express-Komponenten (alias dbGo) üblich.

    Comment


    • #3
      Vielen Dank für Deine Antwort.

      Eine Umstellung auf die ADO-Komponenten lohnt in diesem Fall nicht. Daher habe ich meine Abfragen an die Situation angepasst.

      Dir

      Comment

      Working...
      X