if not (DataModule.IBTransaction1.InTransaction) then DataModule.IBTransaction1.StartTransaction;
try
DataModule.IBTransaction1.CommitRetaining;
except
on E: Exception do
begin
DataModule.IBTransaction1.RollbackRetaining;
Application.MessageBox( PCHAR('Ocurrio un error.'+#13+E.MESSAGE), 'Error',MB_ICONERROR );
exit;
end;
END;