A ver si te sirve esta "plantilla":
Código Delphi
[-]
try
Q1.Close;
Q1.SQL.Text := 'select ...';
Q2.Close;
Q2.SQL.Text := 'insert into ...';
Q1.Open;
while not Q1.Eof do
begin
Q2.Close;
Q2.ParamByName('campo1').AsInteger := Q1.FieldByName('campo1').AsInteger;
Q2.ParamByName('campo2').AsString := Q1.FieldByName('campo2').AsString;
etc.
Q2.Execquery;
Q1.Next;
end;
finally
Q2.Transaction.CommitRetaining;
end;