Lo ideal es mantener las transacciones abiertas el menor tiempo posible. Claro que, como dice el refrán: "Del dicho al hecho hay un gran trecho".
El problema está en que, si haces Commit cada vez que guardas, modificas ó borras algún registro, los componentes DataSet se te cierran y tienes que volver a abrirlos uno a uno, con los consiguientes inconvenientes. Con los IBX no es posible mostrar los datos teniendo la transacción cerrada, pero sí podemos reducir a unas milésimas de segundo el tiempo que permanecen los cambios a la BBDD en el limbo, forzando a que éstos se guarden nada más hacer un Post ó un Delete.
Para evitar que se cierren los DataSets cada vez que hacemos
Commit ó
RollBack, se crearon los métodos
"...Retaining", que hacen lo mismo que sus análogos, pero manteniendo los DataSets abiertos y los registros mostrados en su posición original en los DataSources y controles enlazados a éstos.
Yo lo haría de la siguiente forma:
Código Delphi
[-]
tTabla.Edit;
tTabla.FieldByName('NOMBRE').AsString := 'Pepito Grillo';
tTabla.Post;
try
CommitRetaining
except
RollBackRetaining
end;
__________________
Óscar Salvador Páez Aprendiendo a aprehender de quienes aprehenden, sin cerciorarse de sus edades, culturas, sexos, razas, creencias u orígenes, es la forma más sabia de aprehender.