![]() |
Datenbank: sqlite • Version: 3 • Zugriff über: firedac
select mit ' läuft nicht
Hallo zusammen,
mein Problem ist, dass ich mit einen Select direkt in der DB auch ein richtiges Ergebnis bekomme. select * from fam_check where DATE(verfall, + '1 year') <= CURRENT_DATE AND (DATE(p_datum, + '5 years') <= CURRENT_DATE) übertrage ich den Select in Delphi bekomme ich kein Ergebnis
Delphi-Quellcode:
die Ausgabe im Logfile kann ich 1:1 in die DB kopieren und es geht. Woran ligt es? Hoffe ihr könnt mir helfen thx.main.qryproducts.FetchOptions.AutoClose := False; main.qryproducts.SQL.Clear; // erster Versuch so: main.qryproducts.SQL.Add('SELECT * '); main.qryproducts.SQL.Add('FROM fam_check '); main.qryproducts.SQL.Add('WHERE DATE(verfall, + '+ quotedstr('1 year')+ ' ) <= CURRENT_DATE' ); main.qryproducts.SQL.Add('AND (DATE(p_datum, + ' + quotedstr('5 years') +') <= CURRENT_DATE) ' ); // zweite Versuch mit Parametern main.qryproducts.SQL.Add('SELECT * '); main.qryproducts.SQL.Add('FROM fam_check ') ; main.qryproducts.SQL.Add('WHERE DATE(verfall, + :jahr_begin ) <= CURRENT_DATE' ); main.qryproducts.SQL.Add('AND (DATE(p_datum, + :jahr_end ) <= CURRENT_DATE) ' ); main.qryproducts.ParamByName('jahr_begin').AsString := '1 year'; main.qryproducts.ParamByName('jahr_end').AsString := '5 years'; main.qryproducts.SQL.SaveToFile('S:\log.txt'); main.qryproducts.Open; while not main.qryproducts.Eof do begin loeschfristen_apbetro_fam_insert_lv(main.qryproducts.FieldByName('ID').AsString, main.qryproducts.FieldByName('name').AsString,main.qryproducts.FieldByName('dafo_kurz').AsString); main.qryproducts.Next; end; |
AW: select mit ' läuft nicht
Was ist am zweiten Versuch verkehrt,
bzw. warum verwendest du das nicht? Stimmt die Syntax so überhaupt? Ich bin mir fast sicher, dass das + in den String gehört, und nicht davor.
SQL-Code:
DATE(verfall, '+1 year')
QuotedStr ist ausschließlich für die Pascal-Syntax, also aus ' wird ''. Du brauchst aber eine Quote/Escape-Funktion für die SQL-Syntax, welche also aus ' ein \' machen, sowie aus \ ein \\ usw. Hier wird es damit zufällig "funktionieren", so lange keine ' oder \ im String vorkommen. Fazit: Such in deiner DB-Komponente, bzw. in deren Units nach einer passenden Funktion. Und ja, daß in vielen Beispielen, Tutorials usw. QuoteStr genommen wird, ist grauenhaft und es war schon immer falsch, aber immer wieder wird dieser Mist kopiert. |
AW: select mit ' läuft nicht
Wie genau lautet denn die Fehlermeldung? Es fehlt ein kleines bisschen Exceptionhandling an der Stelle, die vielleicht Wunder wirken könnte. Oder zumindest Licht ins Dunkel bringen kann ;-)
Sherlock |
AW: select mit ' läuft nicht
Zitat:
|
AW: select mit ' läuft nicht
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:
Habe mal Bilder angehängt. 01 liefert kein Ergebnis mit der vollen Query. 02 ist auf select * from fam_check reduziert |
AW: select mit ' läuft nicht
Siehe mein "Edit" da oben ... das bezüglich dem "+" :angle:
|
AW: select mit ' läuft nicht
Zitat:
Zitat:
|
AW: select mit ' läuft nicht
Korrekte Syntax siehe:
![]() |
AW: select mit ' läuft nicht
Zitat:
|
AW: select mit ' läuft nicht
Der Unterschied ist aber immer noch da, oder hast Du den behoben?
SQL: SELECT DATE('2018-11-01','+1 year'); Delphi: SELECT DATE('2018-11-01', + '1 year'); Sherlock |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:56 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