Das
Datamodule1.ADOQuery3.SQL.Add(query);
solltest Du besser durch
Datamodule1.ADOQuery3.SQL.Text:=query;
ersetzen.
Falls bei Deiner Lösung der
SQL.ext nicht leer ist, könntest Du böse Überraschungen erleben.
Und vorher ein
Datamodule1.ADOQuery3.Close;
ist auch nicht falsch.
Gruß
K-H
Am Anfang steht ein
datamodule1.ADOQuery3.SQL.Clear;
, so dass ein Add unkritisch ist.