Ver Mensaje Individual
  #2  
Antiguo 05-03-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Reputación: 17
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Pero eso depende de que BD estes usando y de como tengas configuradas las transacciones

Hay RDBMS que implementan bloqueo por tabla, por fila, por registro, etc

Luego esta el modo en el que trabajan las transacciones. Sobre todo la propiedad IsolationLevel (Aislamiento)

Tampoco llego a ver porque seria necesario implementar todo eso, aparentemente por el codigo que expones ahi mismo en un mismo metodo haces el edit y el post. Es decir que demoraria unos cuantos milisegundos. Luego si llegan varias peticiones es trabajo de gestor de la bd el como procesarlas (es probable que en el otro cliente te tire el error de que el ultimo valor de la fila que conocias fue modificado y debas hacer un refresh o requery)

Luego tenes la opcin de usar ClientDataSet y mandar a aplicar los deltas,y que se encarge de hacer el trabajo sucio la bd

Si lo que queres realmente es bloquear hasta que se escribe, podes poner un boton1 y en su evento poner en edicion al DataSet (.Edit) y luego tener otro boton2 para hacer el .Post. Si le dan al .edit, hasta que no hagan .post o bien un .cancel con otro boton, la tabla esta en edicion

con respecto al try..finally, se intenta ejecutar lo que esta en el bloque del try, si hay una excepcion salta directamente al except y ejecuta lo del finally; ademas, el bloque del finally se ejecuta SIEMPRE. Es decir en tu caso, si no puede poner la tabla en modo de edicion y eso genera una excepcion, entonces ejecuta el .post

Última edición por ecfisa fecha: 05-03-2015 a las 19:29:46.
Responder Con Cita