QuotedStr ist nicht für
SQL (ja, ich weiß, dass es alle verwenden.
QuotedStr ist für die Syntax der Delphi-Strings, im Quellcode und kennt auch nur dessen Escaping.
Für die Datenbanken sollten/müssten
Query-Komponenten eigentlich eine
passende Funktion irgendwo besitzen, welche die Syntax des jeweiligen
SQL-Textes versteht.
Also erstmal vermute ich nicht, dass er etwas "Neues" meint, was jetzt endlich geht.
MultiLine-Strings
Ob Clear und Add oder nur "ein" Text:= ist Geschmackssache.
PS:
'SELECT format(bstlyn__.vrz__dat, ''dd.MM.yyyy'' AS Lieferdatum, '+
Und seit Delphi 12 geht nun sowas:
Code:
MsQuery.SQL.Add('''
SELECT format(bstlyn__.vrz__dat, 'dd.MM.yyyy') AS Lieferdatum,
bstlyn__.bsbn_kla AS Bestellnummer,
concat(knp__vnm, ' ', knp__nam) AS Besteller,
bstlyn__.zynrefkl AS ArtNr,
bstlyn__.afg_oms1 AS Bezeichnung,
bstlyn__.l_aantal AS Liefermenge,
bstlyn__.lbn__ref AS Lieferschein,
konper__.straat__ AS Strasse,
konper__.post_ref AS PLZ,
konper__.postnaam AS Ort,
konper__.land_ref AS Land
FROM bstlyn__
LEFT JOIN konper__ ON konper__.lok__ref = bstlyn__.lok__ref
AND konper__.knp__ref = bstlyn__.knplkref
LEFT JOIN bstext__ ON bstext__.lyn__ref = bstlyn__.lyn__ref
LEFT JOIN wafgfl__ ON wafgfl__.lyn__ref = bstlyn__.lyn__ref
WHERE l_aantal > 0
AND bstlyn__.kla__ref = :KundenNr
AND bstlyn__.afg__ref not IN (&VArtikel)
AND vrz__dat >= :Von
AND vrz__dat <= :Bis
''');
MsQuery.ParamByName('Von').AsDate := Von;
MsQuery.ParamByName('Bis').AsDate := Bis;
MsQuery.ParamByName('KundenNr').AsString := Kunde;
MsQuery.MacroByName('VArtikel').Value := VArtikel;
(nicht als [DELPHI], da das Forum mit sowas noch Probleme hat und alle führenden Leerzeichen vergisst)
Vermutlich will er aber mehr darauf hinaus, dass es auch andere Möglichkeiten gibt, als "statische" SQLs im Code zu verwenden.
* einmal kann man SQLs auch in andere Dateien (Ressourcen) auslagern, wo es (früher) bessere Möglichkeiten des Schreibens gibt
* oder garkeine Texte, sondern etwas objektorientiertes Selbstgenerierendes
* oder ...