A ver si alguna idea te sirve:
Código Delphi
[-]
const strSql = 'INSERT INTO %s (campo1, campo2, campo3) values (:uno, :dos, :tres)';
var Tablas : array [1..3] of string = ('Tabla1', 'Tabla2', 'Tabla3');
begin
for i:= low(Tablas) to high(Tablas) do
begin
query1.sql.text := format(strSql, tablas[i]);
query1.paramsbyname('uno').AsString := Edit1.text;
query1.paramsbyname('dos').AsString := Edit2.text;
query1.paramsbyname('tres').AsInteger := strToIntDef(Edit4.text, 0);
query1.ExecSql;
end;
Si los nombres de campos son distintos en las 3 tablas, pues usa otro Array o un Array de Registros.. en fins, hay muchas formas.
Saludos