Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Probleme mit Delphi, ADO und Oracle (https://www.delphipraxis.net/85405-probleme-mit-delphi-ado-und-oracle.html)

greenmile 30. Jan 2007 14:01

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?

shmia 30. Jan 2007 14:10

Re: Probleme mit Delphi, ADO und Oracle
 
Welchen OLE-DB Provider verwendest du?
Es gibt 2 davon:
Code:
Provider=msdaora        Hersteller=Microsoft
Provider=OraOLEDB.Oracle Hersteller=Oracle
Der OLE DB Provider von Oracle ist spürbar besser als der von Microsoft.
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.

greenmile 30. Jan 2007 14:13

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.

rwachtel 30. Jan 2007 14:39

Re: Probleme mit Delphi, ADO und Oracle
 
Oracle kennt weder Integer noch Boolean.

http://download-uk.oracle.com/docs/c...4/c13datyp.htm

Irgendwie habe ich gerade ein Deja-vu:

http://groups.google.com/group/de.co...65c17c8f1f915f

;)

shmia 30. Jan 2007 14:41

Re: Probleme mit Delphi, ADO und Oracle
 
Zitat:

Zitat von greenmile
Wie gesagt wird ja alles von Delphi erkannt, also TDateTimeField, Blob's, Strings. Nur halt Integer und Bool nicht.

Sind das "echte" Integerfelder (mit 16 oder 32 Bit Speicherbedarf) oder sind das Ableger des NUMERIC-Datentyps?
Ich glaube Oracle bildet den Datentyp "INTEGER" auf NUMERIC(x,0) ab.
Und Delphi bildet Numeric-Felder auf TFloatField oder TBCDField ab.

rwachtel 30. Jan 2007 14:45

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... ;)

greenmile 30. Jan 2007 15:18

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.

rwachtel 30. Jan 2007 15:23

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?

greenmile 30. Jan 2007 15:28

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 ...

rwachtel 30. Jan 2007 15:54

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 15:18 Uhr.
Seite 1 von 2  1 2      

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