Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL - Conversion Error (https://www.delphipraxis.net/115871-sql-conversion-error.html)

Borschti 19. Jun 2008 09:45

Datenbank: ADS • Version: 8.1 • Zugriff über: Query

SQL - Conversion Error
 
Hallo,

ich habe ein kleines Problem mit einem SQL Statment, und zwar bekomme ich einen Conversion Error angezeigt und ich habe keine Ahnung woran das liegen könnte.

Hier mal mein Code:

Delphi-Quellcode:

sql := 'SELECT adress.VB ,adress.AdrNr, adress.Name1, adress.Name2, adress.PLZ, adress.Ort, adress.Strasse, adress.Tour,aufkpf.VKNETTO, aufkpf._anzpos, aufkpf.Liefertermin ';
sql := sql + 'FROM adress inner join aufkpf on adress.adrNr = aufkpf.adrnr ';
sql := sql + 'where Sperrvermerk = '+ quotedstr('F') +' and aufkpf.Liefertermin <= convert('+quotedstr(DateTimeToStr (VisiDateTimePicker1.DateTime))+', sql_timestamp) ';
sql := sql + 'order by adress.VB, adress.AdrNr, aufkpf.liefertermin desc';
Das Problem muss irgendwo hier liegen:
Delphi-Quellcode:
convert('+quotedstr(DateTimeToStr(VisiDateTimePicker1.DateTime))+', sql_timestamp)
Nur ich weiß nicht wie ich das anders schreiben könnte.

Was muss ich beachten damit der Conversion Error verschwindet?
Schonmal danke für alle Antworten.

mfg
Alex

mkinzler 19. Jun 2008 09:47

Re: SQL - Conversion Error
 
Wenn ADS (SQL-)Paramter unterstützt, würde ich diese verwenden

Borschti 19. Jun 2008 09:54

Re: SQL - Conversion Error
 
Wie kann ich das überprüfen ob ADS SQL Parameter unterstützt und worin besteht der Vorteil?

soulies 19. Jun 2008 09:58

Re: SQL - Conversion Error
 
[OT]
vor 'sperrvermerk' fehlt noch die tabelle
[/OT]

mkinzler 19. Jun 2008 10:07

Re: SQL - Conversion Error
 
Zitat:

Wie kann ich das überprüfen ob ADS SQL Parameter unterstützt
Doku lesen oder Ausprobieren
Zitat:

und worin besteht der Vorteil?
1. Wird prepared, ist also bei mehrmaliger Anwendung schneller
2. es wird gesorgt das die Inhalte richtig interpretiert werden ( z.B. bei Datumswerten, Dezimaltrenner usw.)

joachimd 19. Jun 2008 10:21

Re: SQL - Conversion Error
 
Zitat:

Zitat von Borschti
Das Problem muss irgendwo hier liegen:
Delphi-Quellcode:
convert('+quotedstr(DateTimeToStr(VisiDateTimePicker1.DateTime))+', sql_timestamp)

Ich vermute mal, dass Dein Datumsformat nicht ANSI-konform ist und auch nicht dem ADS mitgeteilt wurde (AdsSetDateFormat bzw eine AdsSettings Komponente mit drauf und richtig vorbelegen).
Parameter werden unterstützt, das Convert kannst Du ganz rauslassen:

Delphi-Quellcode:
SQL:=SQL+' and aufkpf.Liefertermin <= :liefertermin ';
//...
Query.ParamByName('liefertermin').AsDateTime:=VisiDateTimePicker1.DateTime;

Borschti 19. Jun 2008 11:16

Re: SQL - Conversion Error
 
Erstmal danke für eure Antworten.

Habe das Problem jetzt gefunden, es lag an dem Format wie der DateTimePicker das Datum zurückgegeben hat, TIMESTAMP ordnet das Datum so an | Monat/Tag/Jahr Uhrzeit | der DateTimePicker aber so | Tag.Monat.Jahr Uhrzeit| Ich habe dann das Datum des DateTimePickers auseinandergenommen und richtig zusammengesetzt, jetzt klappt es so wie es sollte.

Aus reiner neugier nochmal eine kleine Frage ob ich das mit den SQL-Parametern jetzt richtig verstanden habe, der Parameter würde in Joachims Beispiel "liefertermin" heisen oder?

Und wie kann ich diesen dann ansprechen, muss ich da irgendwelche besonderheiten beachten?

Habe noch nie mit SQL-Parametern gearbeitet und google will auf die schnelle auch nichts wirklich brauchbares ausspucken :(

mfg
Alex

DeddyH 19. Jun 2008 11:18

Re: SQL - Conversion Error
 
Hier im Forum suchenSQL-Parameter sollte eine hübsche Auswahl liefern ;)

mkinzler 19. Jun 2008 11:25

Re: SQL - Conversion Error
 
Zitat:

Aus reiner neugier nochmal eine kleine Frage ob ich das mit den SQL-Parametern jetzt richtig verstanden habe, der Parameter würde in Joachims Beispiel "liefertermin" heisen oder?
Ja
Zitat:

Und wie kann ich diesen dann ansprechen,
In Delphi mit
Delphi-Quellcode:
Query.ParamByName('liefertermin').Value
in SQL
SQL-Code:
:<Paramname>
Zitat:

Muss ich da irgendwelche besonderheiten beachten?
Name muss eindeutig sein und kann nur einmal pro Abfrage verwendet werden. zudem gelten die Namenskonventionen des DBMS.

Borschti 19. Jun 2008 12:11

Re: SQL - Conversion Error
 
Ok, danke euch nochmals :D

mfg
Alex


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:21 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