Hm, wusste gar nicht, dass das mit dem ParamByName eine solche Performance-Bremse ist (klar, eigentlich aber logisch) - sollte man mal im Hinterkopf behalten.
Dazu habe ich vor einiger Zeit mal einen Artikel von Marco Cantu gelesen. Der dort angewendete Trick war ganz einfach: es wurde je Parameter eine lokale Variable deklariert und einmalig belegt. Innerhalb der Schleife wurde dann nur noch mit diesen Variablen gearbeitet, also ungefähr so:
Delphi-Quellcode:
var
ParamName, ParamVorname: TParameter;
begin
ParamName := Dataset.ParamByName('Name');
ParamVorname := Dataset.ParamByName('Vorname');
for i := 0 to Liste.Count - 1 do
begin
ParamName.Value := Liste[i].Name;
ParamVorname.Value := Liste[i].Vorname;
Dataset.ExecSQL;
end;