![]() |
Sybase SQL Anywhere SQL Problem (Datum)
Hallo,
Ich manipuliere eine SQL-Abfrage mit einem DateTimePicker. Mit MySQL hat das wunderbar funktioniert, nur mit Sybase SQL Anywhere nicht. Ich bekomme folgende Fehlermeldung beim Kompilieren: Meldung: '[Sybase][ODBC Driver]: cannot convert 01.01.2004 to a date/time.' Wenn ich mir aber mit Delphi über den ODBC-Treiber zum Test das Belegdatum eines Datensatzes anschaue (z.B. über ein DBText), erscheint es im Format 00.00.0000. Dann habe ich zum Test 'Seldate := DateToStr(DateTimePicker1.Date)' in 'Seldate := DateTimeToStr(DateTimePicker1.DateTime)' geändert. Das Ergebnis ist der gleiche Fehler. Kann es sein, daß Sybase SQL Anywhere bzw. der ODBC-Treiber das Datum auf Deutsch anzeigt, in Abfragen aber Amerikanische Schreibweise fordert? Auszug aus dem code:
Delphi-Quellcode:
procedure TForm1.Action2Execute(Sender: TObject);
var Seldate: String; Anzahl: Integer; begin Seldate := DateToStr(DateTimePicker1.Date); With ADOQuery1 do Begin SQL.Text:= 'SELECT KHKVKBelege.A0Empfaenger AS Kunde, KHKVKBelege.A1Anrede, KHKVKBelege.A1Name1, KHKVKBelege.A1Name2, KHKVKBelege.A1Strasse, KHKVKBelege.A1PLZ, KHKVKBelege.A1Ort, KHKVKBelege.Belegdatum FROM KHKVKBelege WHERE KHKVKBelege.Belegdatum >= :i_Date'; Prepared := True; ADOQuery1.Parameters.ParamByName('i_Date').Value := Seldate; end; Gruss Gregor [edit=Sharky]Delphi-Tags gesetzt. Mfg, Sharky[/edit] |
Re: Sybase SQL Anywhere SQL Problem (Datum)
Hai tuxracer78,
überlasse doch die Konvertierung des Datumsformates dem Treiber. Dadurch bist Du unabhängig von dem beim Anwender eingestellt Datumsformat.
Delphi-Quellcode:
procedure TForm1.Action2Execute(Sender: TObject);
var Seldate: String; Anzahl: Integer; begin // Seldate := DateToStr(DateTimePicker1.Date); // Das brauchen wir nicht With ADOQuery1 do Begin SQL.Text:= 'SELECT KHKVKBelege.A0Empfaenger AS Kunde, KHKVKBelege.A1Anrede, KHKVKBelege.A1Name1, KHKVKBelege.A1Name2, KHKVKBelege.A1Strasse, KHKVKBelege.A1PLZ, KHKVKBelege.A1Ort, KHKVKBelege.Belegdatum FROM KHKVKBelege WHERE KHKVKBelege.Belegdatum >= :i_Date'; Prepared := True; ADOQuery1.Parameters.ParamByName('i_Date').AsDate := DateTimePicker1.Date; // Jetzt konvertiert der Treiber. end; |
Re: Sybase SQL Anywhere SQL Problem (Datum)
Vielen Dank für die schnelle Antwort,
leider funktioniert das so noch nicht. Ich bekomme folgende Fehlermeldung: Undefinierter Bezeichner: 'AsDate'. Muss ich da noch irgendwas in die uses einbinden? Gruss Gregor |
Re: Sybase SQL Anywhere SQL Problem (Datum)
Zitat:
Delphi-Quellcode:
begin
. . ADOQuery1.Parameters.ParamByName('i_Date').DataType := ftDate; ADOQuery1.Parameters.ParamByName('i_Date').Value := DateTimePicker1.Date; . |
Re: Sybase SQL Anywhere SQL Problem (Datum)
Zitat:
Bei ADO kannst du bei einem unfähigen OLE-Provider nur hoffen, dass das reicht. :roll:
Delphi-Quellcode:
Edit: :lol: war wohl doch zu langsam.
with ADOQuery Do
begin SQL.Text := 'SELECT k.A0Empfaenger as Kunde' + #10 + ' ,k.A1Anrede' + #10 + ' ,k.A1Name1' + #10 + ' ,k.A1Name2' + #10 + ' ,k.A1Strasse' + #10 + ' ,k.A1PLZ' + #10 + ' ,k.A1Ort' + #10 + ' ,k.Belegdatum' + #10 + 'FROM KHKVKBelege k' + #10 + 'WHERE k.Belegdatum >= :i_Date'; // Parse Statement um Variablen zu erkennen Prepared := True; // Parameterzuweisung with Parameters do begin ParamByName('i_Date').DataType := ftDate; ParamByName('i_Date').Value := DateTimePicker1.Date; end; // Ausführen Open(); end; @Sharky Bitte nicht beißen :roll: |
Danke, funktioniert jetzt.
Nochmals herzlichen Dank,
jetzt ist Land in Sicht ;-) Gruss Gregor |
Re: Sybase SQL Anywhere SQL Problem (Datum)
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:31 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