Supongo que el error se debe a que no inicias una nueva transacción.
Luego de un Commit o de un Rollback, la transacción queda "cerrada" y si quieres volver a hacer algo debes iniciar una nueva.
Yo utilizo algo como lo que sigue (con otros componentes)
Código Delphi
[-]
var
Q : TQuery;
begin
Q := TQuery.Create(nil);
with Q do
begin
DataBase := BaseDeDatos;
Transaction := TransaccionLocal;
if not Transaction.InTransaction then
Transaction.StartTransaction;
try
ExecQuery;
Transaction.Commit;
except
Transaction.Rollback;
end;
Free;
end
end;