![]() |
Datenbank: Oracle • Version: 9i • Zugriff über: ADO
Probleme mit Delphi, ADO und Oracle
Wir setzen Delphi 5 Enterprise zusammen mit Oracle 9i Datenbankserver ein. Bisher kommunizierte unsere Software nur via ADO (2.8, alle Delphi Updates geladen) mit einem SQL-Server 2000, was problemlos funktioniere. Nun muß die Software mit Oracle 9i zusammenarbeiten. Wir verwenden persistente Felder. Das Problem ist, dass Delphi keine bool'schen Felder und keine Integer Felder von Oracle erkennt und diese stattdessen als TFloatField ausgibt. Diese Probleme haben wir nicht nur mit den ADO-Komponenten (TAdoTable), sondern auch mit anderen (z.B. SQL-Direct). Ich konnte leider nicht herausfinden, wieso Delphi den Datentyp "Boolean" bzw "Integer" nicht als solchen erkennt. Kennt hier jemand eine Lösung? Ich kann nicht so recht rausfinden, an wem es nun eigentlich liegt. An Delphi? An ADO? An Oracle? Oder einfach nur ein Konfigurationsproblem?
|
Re: Probleme mit Delphi, ADO und Oracle
Welchen OLE-DB Provider verwendest du?
Es gibt 2 davon:
Code:
Der OLE DB Provider von Oracle ist spürbar besser als der von Microsoft.
Provider=msdaora Hersteller=Microsoft
Provider=OraOLEDB.Oracle Hersteller=Oracle Jede Oracle Version hat auch 1.) die passende Oracle Client Software 2.) den passenden OLE-DB Provider Nur wenn 1.) & 2.) auf dem Rechner installiert sind, sind die Vorraussetzungen für korrekte DB-Verbindung vorhanden. |
Re: Probleme mit Delphi, ADO und Oracle
Wow das ging ja schnell :) Wir verwenden OraOLEDB.Oracle sowie den aktuellsten Client. Wie gesagt wird ja alles von Delphi erkannt, also TDateTimeField, Blob's, Strings. Nur halt Integer und Bool nicht.
|
Re: Probleme mit Delphi, ADO und Oracle
Oracle kennt weder Integer noch Boolean.
![]() Irgendwie habe ich gerade ein Deja-vu: ![]() ;) |
Re: Probleme mit Delphi, ADO und Oracle
Zitat:
Ich glaube Oracle bildet den Datentyp "INTEGER" auf NUMERIC(x,0) ab. Und Delphi bildet Numeric-Felder auf TFloatField oder TBCDField ab. |
Re: Probleme mit Delphi, ADO und Oracle
Ebend. Interessant wäre auch eine Beantwortung der in der entsprechenden Newsgroup schon gestellten Frage (s.o.), wie denn das Boolean-Feld in die Oracle-Datenbank gekommen ist... ;)
|
Re: Probleme mit Delphi, ADO und Oracle
Versuche natürlich überall, Hilfe zu bekommen ;)
Bool'sche Felder (vom Oracle Migrationsassistenten) werden als NUMERIC (0,1) (oder war es 1,0?) abgebildet. |
Re: Probleme mit Delphi, ADO und Oracle
Es war (1,0). ;)
Dann hast Du ja die Antwort für das Verhalten. Woher soll Delphi denn wissen, ob NUMERIC (1,0) ein Boolean ist oder ein numerisches Feld der Länge 1? |
Re: Probleme mit Delphi, ADO und Oracle
Boolean wird doch immer so ausgedrückt. Schon Delphi 1 konnte mit Oracle umgehen; ich kann mir nicht vorstellen, dass Oracle damals Bool'sche Werte anders ausgegeben hat als jetzt. Das ist der Punkt den ich nicht verstehe.
Nachtrag: Ich habe mal testhalber eine Tabelle von Oracle und eine vom SQL-Server in Access importiert. Vom SQL-Server import werden logische Felder als Ja/Nein Feld importiert, von Oracle kommen nur Zahlenfelder mit "Genauigkeit 1, Dezimalstellen 0". Ich denke mal, irgendwas läuft da im ADO, Oracle Client oder Oracle Server schief ... |
Re: Probleme mit Delphi, ADO und Oracle
Nein, da läuft gar nichts schief. Das ist einfach per Definition so. Der SQL Server kann halt auch mit Bitfeldern umgehen, was Oracle nicht kann.
Aber wo ist denn das eigentliche Problem? Ich kann doch - wenn ich denn unbedingt mit Feldpersistenz arbeiten will - auch ein TBCDField z.B. an eine DBCheckbox binden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz