Lo que sucede es que en realidad tengo creado un tipo de framework para trabajar con objetos en lugar de registros...
Entonces, en lugar de hacer DataSet.Post, en realidad hago algo como Objeto.Store, entonces, internamente el método mencionado hace el manejo de las transacciones...
Ahora, cuando quiero manejar inserciones masivas, vamos a decirle así, por ejemplo tipo master-detail, lo que hago es iniciar una transacción, realizar el ciclo de inserciones (Objeto.Store) y al final el Commit o Rollback dependiendo de si todo estuvo bien u ocurrió un error.
Mi código es más o menos ásí:
Código Delphi
[-]
var
Objeto: TObjetoFrameWork;
begin
Connection.StartTransaction;
try
for I := 0 to ListaObjetos.Count - 1 do begin
Objeto := TObjetoFrameWork(ListaObjetos[i]);
repeat
Stored := True;
try
Objeto.Store
except
on E: EIBInterBaseError do
begin
Stored := not E.SQLCode = -901;
if Stored then raise
end
end
until
Stored
end;
Connection.CommitTransaction
except
Connection.RollbackTransaction
end
end;
Espero que con esto te aclare mejor las cosas...
Saludos...