Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi To_Date wird nicht erkannt (https://www.delphipraxis.net/163576-to_date-wird-nicht-erkannt.html)

fanavity 5. Okt 2011 09:11

Datenbank: Oracle • Version: 9 • Zugriff über: BDE/ODBC

To_Date wird nicht erkannt
 
Hallo,

ich habe ein SQL-Statement, welches ich in Delphi ausführen will. Dort möchte ich ein Datum abgleichen. Doch ich bekomme eine Exception, die aussagt das die Funktion To_Date nicht bekannt sei.. Woran kann das liegen?

Delphi-Quellcode:
     Query.Close;
     Query.Sql.Clear;
     Query.Sql.Add('SELECT *');
     Query.Sql.Add('FROM DATA_Test');
     Query.Sql.Add('WHERE DATUM = TO_Date(":Datum", "DD-MM-YYYY") ');
     Query.Params.ParamByName('DATUM').Value := Datum;
     Query.open;
Vielleicht hat ja jemand eine Idee?

angos 5. Okt 2011 09:17

AW: To_Date wird nicht erkannt
 
Hallo,

habe eigentlich keine Erfahrung mit Orcale, aber ggf. könnte es sein, dass der FUnktionsname casesensitive ist? Nur so als Idee.

Gruß

Bernhard Geyer 5. Okt 2011 09:18

AW: To_Date wird nicht erkannt
 
Wieso so umständlich?
Es müsste doch gehen wenn du den Parameter schon auf Delphi-Ebene als Datumswert mittels
Delphi-Quellcode:
Query.Params.ParamByName('DATUM').AsDate := Datum;
übergibst.

Und was soll diese bescheuderte DD-MM-YYYY - Formatierung? Entweder ISO-Format (YYYY-MM-DD) oder "normales" Format (DD.MM.YYYY).

jobo 5. Okt 2011 09:18

AW: To_Date wird nicht erkannt
 
Ich glaube, Du sprichst an der Stelle mit der BDE/ODBC und kannst kein produktspzifisches, natives SQL absetzen.

fanavity 5. Okt 2011 09:25

AW: To_Date wird nicht erkannt
 
Delphi-Quellcode:
Query.Params.ParamByName('DATUM').AsDate := StrToDate(Datum);
Bei dieser Variante sagt er mir:

Zitat:

Im Projekt Test.EXE ist eine Exception der Klasse EConvertError aufgetreten. Meldung: "2011-10-04" ist kein Gültiges Datum.
Okay.. Wenn ich also mit BDE/ODBC kommuniziere, denke ich kaum das er die Befehle von Oracle kennt.. Also muss das vorher umgewandelt werden..

jaevencooler 5. Okt 2011 09:36

AW: To_Date wird nicht erkannt
 
Moin, Moin,


also wenn Du die BDE nutzt, dann kannst Du irgendwo einstellen wie die BDE das SQL behandeln soll, also auf dem Client ausführen oder auf dem Server ausführen. Ist schon lange !!!!!!!! her das ich mit BDE gearbeitet habe, aber ich bin mir sicher das Du die BDE auf sowas wie Pass Through stellen kannst, damit Dein SQL direkt auf dem Server ausgeführt wird.

Nutzt Du ODBC, dann ist die Frage welchen ODBC Treiber benutzt Du ? Grundsätzlich kannst Du aber auch hier natives PL/SQL absetzen.

Beide Alternativen sind eher schlecht, besser wären native Treiber wie von Allround Automation oder DevArt, die kosten Geld ich weiß, aber es gibt hier auch gute Freeware Komponenten (siehe mal bei Torry nach)

Was Deine letzte Fehlermeldung angibt, da sind die Literate falsch, würde ich mal sagen, sprich Dein Datumformat ist irgendwie nicht so wie es erwartet wird. Hierbei musst Du bedenken das auch die Einstellungen auf dem Oracle Server wichtig sind !


Beste Grüße
Michael

Sir Rufo 5. Okt 2011 09:46

AW: To_Date wird nicht erkannt
 
In welchem Format liegt dein Datum in selbiger Variablen denn jetzt vor?
Code:
YYYY-MM-DD
oder
Code:
DD-MM-YYYY
Dein Select erwartet auf jeden Fall
Code:
DD-MM-YYYY
Zitat:

Zitat von fanavity (Beitrag 1128504)
Delphi-Quellcode:
     Query.Close;
     Query.Sql.Clear;
     Query.Sql.Add('SELECT *');
     Query.Sql.Add('FROM DATA_Test');
     Query.Sql.Add('WHERE DATUM = TO_Date(":Datum", "DD-MM-YYYY") ');
     Query.Params.ParamByName('DATUM').Value := Datum;
     Query.open;

Zitat:

Zitat von fanavity (Beitrag 1128509)
Delphi-Quellcode:
Query.Params.ParamByName('DATUM').AsDate := StrToDate(Datum);
Bei dieser Variante sagt er mir:

Zitat:

Im Projekt Test.EXE ist eine Exception der Klasse EConvertError aufgetreten. Meldung: "2011-10-04" ist kein Gültiges Datum.
Okay.. Wenn ich also mit BDE/ODBC kommuniziere, denke ich kaum das er die Befehle von Oracle kennt.. Also muss das vorher umgewandelt werden..

Wie wäre es damit:
Delphi-Quellcode:
     Query.Close;
     Query.Sql.Clear;
     Query.Sql.Add('SELECT *');
     Query.Sql.Add('FROM DATA_Test');
     Query.Sql.Add('WHERE DATUM = TO_Date( :Datum, "YYYY-MM-DD") '); // Die " um :Datum müssten eigentlich überflüssig sein
     Query.Params.ParamByName('DATUM').Value := Datum;
     Query.open;

fanavity 5. Okt 2011 09:47

AW: To_Date wird nicht erkannt
 
Danke für die Antwort..

Leider muss ich vorrerst mit dieser Lösung weiter arbeiten.. Also muss ich sehen wie ich das Problem löse.

Auf der DB ist das Datum so abgespeichert: DD.MM.YYYY
Wenn ich mein Datum genauso Formatiere und übergeben will, bekomme ich keine Fehlermeldung. Aber auch keine Ausgabe.

Wenn ich den Parameter in Anführungszeichen setzte:

Delphi-Quellcode:
     Query.Close;
     Query.Sql.Clear;
     Query.Sql.Add('SELECT *');
     Query.Sql.Add('FROM DATA_Test');
     Query.Sql.Add('WHERE DATUM = ":Datum"');
     Query.Params.ParamByName('DATUM').Value := StrToDate(Datum);
     Query.open;
Dann sagt er mir, dass es den Parameter Datum nicht gibt.

DeddyH 5. Okt 2011 09:49

AW: To_Date wird nicht erkannt
 
Welchen Datentyp hat das Datum eigentlich in der DB? Date oder String?

fanavity 5. Okt 2011 09:51

AW: To_Date wird nicht erkannt
 
Zitat:

Zitat von DeddyH (Beitrag 1128515)
Welchen Datentyp hat das Datum eigentlich in der DB? Date oder String?

Das Feld Datum ist vom Typ Date


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:43 Uhr.
Seite 1 von 4  1 23     Letzte »    

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