Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Oracle TIMESTAMP und DATE (https://www.delphipraxis.net/191499-oracle-timestamp-und-date.html)

Keflock 21. Jan 2017 20:56

Datenbank: ORACLE • Version: 11g XE • Zugriff über: ohne ODBC, direkt TNS und TADO-Komponenten

Oracle TIMESTAMP und DATE
 
Hallo zusammen,

ich beginne mit einem neuen Projekt und möchte gerne Daten in einer ORACLE DB verwalten. Ich gehe über TADO-Connection direkt auf den Provider "Microsoft OLE DB Provider for Oracle", wo ich aus TNSNAMES die Datenbank direkt anspreche. Also kein ODBC Umweg.

Basierend auf früheren Projekten (mit MySQL) wollte ich in der ORACLE DB eine Tabelle mit Spalten vom Typ TIMESTAMP(6) anlegen und über TADO-Query darauf zugreifen.

Leider bekomme ich eine Fehlermeldung "Der Datentyp wird nicht unterstützt."

Wechsle ich in der Tabelle die Spalte zu DATE, so funktioniert die TADO-Query problemlos, aber ich kann so nur das Datum abspeichern.

Wie gehe ich damit um? Ich könnte VARCHAR2 einsetzten und den String mit TO_DATE immer wieder konvertieren. Aber es ist nicht das Optimum.

Oder soll ich eine andere Komponente einsetzten?

Dankend
Keflock

nahpets 21. Jan 2017 21:02

AW: Oracle TIMESTAMP und DATE
 
In Delphi ist TDateTime ein Floatwert. Kann den Oracle?

Abgesehen davon enthält Date bei Oracle hiernach http://www.datenbank-sql.de/oracle-datentypen.htm auch die Uhrzeit.

Wie greifts Du mit Deiner TAdoQuery auf die Date-Spalte zu?
Zeig' mal bitte den Quelltext dazu.

Bernhard Geyer 21. Jan 2017 21:27

AW: Oracle TIMESTAMP und DATE
 
Die Verwendung von ADO und des MS-Providers ist genauso ein Umweg wie über ODBC zu gehen.
Ich kann dir nur empfehlen Komponenten wie von Devart zu nehmen um entweder direkt auf den Oracle-Treiber zu gehen oder gleich ohne jegliche Treiber direkt auf die DB zuzugreifen.


Übrigens ist der MS-Provider für Oracle seit jahren von MS abgekündigt und ist nicht mehr als eine Machbarkeitsstudie

Keflock 21. Jan 2017 21:54

AW: Oracle TIMESTAMP und DATE
 
Hallo,

es gibt noch kein Quellcode, ich habe nur die Komponenten platziert.

Aber, es geht doch, denn auch wenn die Spalte als DATE definiert ist, wird die Uhrzeit mitabgespeichert und mit

to_char(AB_SCHLUESSEL_VON,'DD.MM.RRRR HH24:MM:SS')

bekomme ich es richtig angezeigt/ausgewertet.

Danke
Keflock

Keflock 21. Jan 2017 22:00

AW: Oracle TIMESTAMP und DATE
 
und als Quellcode in Delphi reicht es aus, wenn ich mit

select * from Tabelle

und

datatimetostr(ADOQuery1ADSCHLUESSEL_VON.Value)

arbeite!

KEflock

nahpets 21. Jan 2017 22:10

AW: Oracle TIMESTAMP und DATE
 
Wie wäre es denn einfach mal mit
Delphi-Quellcode:
ADOQuery1ADSCHLUESSEL_VON.AsDateTime
oder ganz banal
Delphi-Quellcode:
ADOQuery1ADSCHLUESSEL_VON.AsString

p80286 21. Jan 2017 22:34

AW: Oracle TIMESTAMP und DATE
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1359560)
Die Verwendung von ADO und des MS-Providers ist genauso ein Umweg wie über ODBC zu gehen.
Ich kann dir nur empfehlen Komponenten wie von Devart zu nehmen um entweder direkt auf den Oracle-Treiber zu gehen oder gleich ohne jegliche Treiber direkt auf die DB zuzugreifen.

z.Zt. ist ODBC bei MS ganz aktuell. Aber das kann morgen ja schon wieder Schnee von gestern sein.

Zitat:

Zitat von Bernhard Geyer (Beitrag 1359560)
Übrigens ist der MS-Provider für Oracle seit jahren von MS abgekündigt und ist nicht mehr als eine Machbarkeitsstudie

Anders ausgedrückt, wenn Du keinen Wert auf korrekte Daten legst, ist der MS-Provider genau richtig. Wenn schon ADO, dann den Oracle-Provider.

Gruß
K-H

jobo 22. Jan 2017 12:24

AW: Oracle TIMESTAMP und DATE
 
@p80286
Genau, wenn dann den OLEDB Provider von Oracle (ODAC Installation bspw.)

@Timestamp
Wenn Genauigkeit im groben Millisekundenbereich ausreichend ist, kann ganz normal der Oracle Date Typ verwendet werden. Keine Probleme.

Ein guter Client / gute Clientcomponenten sind aber auch nicht zu verachten.
Denke da an die Komponenten von Allroundautomation, hab aber wenig Erfahrung damit gesammelt. Devart ist ja bereits emmpfohlen worden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz