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