|
Hola,
lo que yo haría en un caso de conflicto de actualización es:
1.- Guardar la información del registro que quiero actualizar en una zona intermedia (variables, un Record, o un objeto diseñado para el caso).
2.- Refrescaría los datos en el DataSet, ésto puede obligar a cerrar y reabrir la transacción; depende del nivel de aislamiento, si es muy alto (p. ej. Snapshot) es inevitable.
3.- Una vez refrescados los datos, localizaría el registro, editaría los datos del mismo con la información que almacené anteriormente y aplicaría los cambios.
Todo puede llegar a hacerse de manera transparente al usuario o pidiendo las autorizaciones (mendiante cuadros de diálogo) oportunas. Por cierto, estoy suponiendo que no se utilizan actualizaciones en caché.
Respecto a información adicional devuelta por el servidor, hasta la versión 1.0 (Firebird) no, pero en la versión 1.5 (o la 2, ahora no recuerdo bien) se han añadido nuevas variables: un identificador de sesión (conexión) y un identificador de transacción si no recuerdo mal, que tal vez pudiesen ser recuperados en el lado cliente.
Saludos.
|