No sé como insertas los datos, si es con un método propio o mediante componentes, pero cuando quieras hacer una insercción en la que los datos procedan de múltiples sitios o se vuelva complejo yo te recomendaría usar una query. Algo así:
Código Delphi
[-]procedure insertarTabla1;
var
insertar: TQuery;
begin
insertar := TQuery.Create(Self);
with insertar do
try
DatabaseName := miBD;
sql.Text := 'insert into '+ nombreTabla1;
SQL.Add('(dato1, dato2, dato3)');
SQL.Add('values (:dato1, :dato2, :dato3)');
ParamByName('dato1').AsInteger := numero; ParamByName('dato2').AsString := grid1.cells[i, j]; ParamByName('dato3').AsString := grid2.cells[n, m]; ExecSQL;
finally
free;
end;
end;
Aquí tienes el código en una query que se crea y destruye para cada vez que haces la inserción. Si es algo que se va a hacer siempre yo lo incluiría como un componente fijo con la consulta incorporada y solo cargaría los parámetros concretos en cada caso.
De todos modos si aportas un ejemplo concreto o parte del código que usas te podría dar una mejor aproximación a tu problema.