Eigentlich sollte es egal sein, ob mit oder ohne Zeilenumbruch.
Das Statement wird ja eigentlich auch erst in der
DB und nicht in Delphi verarbeitet.
Zitat:
ohne quotedstr gehts nicht
Natürlich nicht ... obwohl, eigentlich doch.
Delphi-Quellcode:
main.qryproducts.SQL.Add('WHERE verfall <= ''' + jahr_begin + '''');
main.qryproducts.SQL.Add(' AND p_datum <= ''' + jahr_end + '''');
Aber nochmal ... QuoteStr ist falsch.
Du kannst Milch auch in einer Papiertüte transportieren, aber sehr lange wird es nicht gut gehen, auch wenn es erstmal funktionieren mag.
QuoteStr ist für Pascal ... nicht für
SQL.
Das ' ist hier zwar zufällig das Gleiche, jedenfalls zu Beginn und am Ende des Strings, aber
innerhalb eines Strings ist das nicht kompatibel, was QuoteStr hier produziert, und somit falsch,
vorallem wenn es um andere Zeichen geht, speziell ' oder \
Insgesamt ist es hier eben immer besser mit Parametern zu arbeiten, da die
DB-Komponente bzw. Datenbankengine das dann intern behandelt und du dich um Nichts kümmern musst.
Tipp: bei uns waren Kunden mal auf die geile Idee gekommen, in Artikelbezeichnern ein ' zu verwenden, was an einigen Stellen dann knallte, vor allem dort, wo die Übergabestellen zwischen Delphi, Python und
SQL stattfanden, da die alle ihre eigene Syntax nutzen.