Ver Mensaje Individual
  #11  
Antiguo 19-08-2003
Avatar de Voutarks
Voutarks Voutarks is offline
Miembro
 
Registrado: jul 2003
Ubicación: Islas Canarias
Posts: 118
Reputación: 21
Voutarks Va por buen camino
A ver si lo entiendo, tienes un primer formulario que se abre y desde este se puede abrir un segundo formulario.

Lo que quieres entonces es que si después de que el usuario ha aceptado los cambios en el segundo formulario, si le da al botón cancelar en el primer formulario se deshagan los cambios que hizo en ese segundo formulario. Y también quieres dejar la opción, como comentaste al principio de este hilo, de que si el usuario modifica datos en el primer formulario, luego abre el segundo y cancela los cambios en el segundo form. se mantenga lo que escribió en el primero ¿correcto?

Pues entonces efectivamente tienes que utilizar dos transacciones y no tienes que hacer el commit de la transacción del segundo formulario cuando se le da al botón aceptar de este formulario, sino:

En el segundo formulario:
-> En el botón cancelar, haces un rollback de la segunda transacción.
-> En el botón aceptar simplemente cierras el formulario, sin más.

En el primer formulario:
-> En el botón cancelar, primero miras si la segunda transacción está activa y si es así haces un rollback de la segunda. Después un rollback de la primera.
-> En el botón aceptar, primero miras si la segunda trans. está activa y si es así haces un commit de esta. Finalmente haces un commit de la primera.

Lo malo es que desde el primer formulario no se van a poder ver los cambios que se hacen con el segundo, si es que tienen que verse. Si es necesario que sea así entonces podrías utilizar sólo una transacción pero tendrías que guardar los valores del registro o registros que modifica el segundo en algún lado, como en una matriz y luego si el usuario cancela en el primer form coger los datos de ahí y deshacer el cambio con una instruccion UPDATE. Además tendrías que hacer lo que dije en un mensaje anterior, lo de cargar los controles y cerrar la transacción y todo eso.
Responder Con Cita