Hi zusammen
Vielen Dank für eure aufschlussreichen Antworten!
Zitat:
Die Parameter werden erzeugt in FireDAC.Phys.SQLPreprocessor.TFDPhysPreprocessor.E xecute
Danke,Sir Rufo! Schau ich mir mal an. Kein Wunder, dass ich unter
C:\Program Files (x86)\Embarcadero\Studio\16.0\source\data\firedac\stan\param
nichts gefunden habe...
@DeddyH:
Zitat:
Query.ExecSQL('INSERT INTO Tabelle(Feld1, Feld2, Feld3) VALUES(:Wert1, :Wert2, :Wert3)', [1, 2, 3], [ftInteger, ftInteger, ftInteger]);
Das wirkt jetzt auf den ersten Blick etwas gewöhnungsbedürftig. Aber soweit ich sehe, ist das mit meinem Monster identisch.
Und wenn ich mehrere Zeilen draus mache, gehts übersichtlicher wirklich nicht mehr, ist aber immer noch viel kleiner:
Delphi-Quellcode:
Query.ExecSQL('
INSERT INTO Tabelle(Feld1, Feld2, Feld3),'+
'
VALUES(:Wert1, :Wert2, :Wert3)',
[1, 2, 3],
[ftInteger, ftInteger, ftInteger]);
Wobei Gruppe 3 offenbar die Indexes enthält. Ich werde das gleich hier mal umsetzen und auch die andern Prozeduren anpassen. Auch wenn das Ding genau(?) das getan hat, was es soll: die "Createparams" von DBExpress sind nicht nur überflüssig, sondern auch zuviel des Guten.
Zitat:
Fast alle DBZugriffskomponenten sollten die Parameter selber ertstellen, anhand des übergebenen
SQL.
Außer man hat diese Funktion deaktiviert, wo die Komponente das
SQL parst, nachdem es zugewiesen/geändert wurde.
@ himitsu:
Das FDQuery (Unter anderen) hat ein entsprechendes Boolean-Property - dessen Name hab ich inzwischen vergessen. Aber irgendwie ist es mir och lieber, ich übergebe die Parameter selber. Ist vielleicht etwas mehr Typarbeit, dafür ist klar, was abläuft.
Gruss
Delbor