AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Sybase SQL Anywhere SQL Problem (Datum)
Thema durchsuchen
Ansicht
Themen-Optionen

Sybase SQL Anywhere SQL Problem (Datum)

Ein Thema von tuxracer78 · begonnen am 11. Aug 2004 · letzter Beitrag vom 11. Aug 2004
Antwort Antwort
tuxracer78

Registriert seit: 19. Jul 2004
Ort: Halle (Westf.)
31 Beiträge
 
Delphi XE5 Professional
 
#1

Sybase SQL Anywhere SQL Problem (Datum)

  Alt 11. Aug 2004, 09:51
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]
Gregor
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Sybase SQL Anywhere SQL Problem (Datum)

  Alt 11. Aug 2004, 10:05
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;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
tuxracer78

Registriert seit: 19. Jul 2004
Ort: Halle (Westf.)
31 Beiträge
 
Delphi XE5 Professional
 
#3

Re: Sybase SQL Anywhere SQL Problem (Datum)

  Alt 11. Aug 2004, 10:33
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
Gregor
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Sybase SQL Anywhere SQL Problem (Datum)

  Alt 11. Aug 2004, 10:37
Zitat von tuxracer78:
...Undefinierter Bezeichner: 'AsDate'...
Ups, hast recht. ADOQuery kennt das nicht. Versuche es mal so:
Delphi-Quellcode:
begin
.
.
  ADOQuery1.Parameters.ParamByName('i_Date').DataType := ftDate;
  ADOQuery1.Parameters.ParamByName('i_Date').Value := DateTimePicker1.Date;
.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#5

Re: Sybase SQL Anywhere SQL Problem (Datum)

  Alt 11. Aug 2004, 10:42
Zitat von tuxracer78:
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?
Nö, unser Goldfischlein hatte wieder nur seine ZEOS im Kopf.

Bei ADO kannst du bei einem unfähigen OLE-Provider nur hoffen, dass das reicht.
Delphi-Quellcode:
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;
Edit: war wohl doch zu langsam.
@Sharky Bitte nicht beißen
  Mit Zitat antworten Zitat
tuxracer78

Registriert seit: 19. Jul 2004
Ort: Halle (Westf.)
31 Beiträge
 
Delphi XE5 Professional
 
#6

Danke, funktioniert jetzt.

  Alt 11. Aug 2004, 10:46
Nochmals herzlichen Dank,

jetzt ist Land in Sicht

Gruss

Gregor
Gregor
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Sybase SQL Anywhere SQL Problem (Datum)

  Alt 11. Aug 2004, 10:48
Zitat von Robert_G:
...Nö, unser Goldfischlein hatte wieder nur seine ZEOS im Kopf.
.
.@Sharky Bitte nicht beißen
*schnapp*
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:57 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