¿Se pueden hacer cambios si el registro de un formulario se ha guardado en Microsoft Access?

¿Al salir de un formulario es posible deshacer los cambios si el registro se ha guardado previamente?

1 respuesta

Respuesta
1
Si se ha guardado... poco vas a hacer ya.
ES lo mejor si explicas un poco mejor el "problema"...
El problema es que tengo un formulario para modificar un registro, y en algún campo necesito guardar el registro, pero al salir quiero que el usuario tenga la opción de no guardar los cambios, pero como ya se ha guardado el registro en otro paso con los cambios realizados hasta allí, quiero saber si es posible dejar el registro como estaba antes de entrar al formulario.
Gracias
Access siempre guarda los registros al cambiar de registro o al cerrar el formulario; es una de sus ventajas (que el usuario no debe preocuparse de salvar) pero tiene la desventaja de que, para otras formas, requiere algo de imaginación.
En estos casos lo que se suele hacer es trabajar con un formulario desconectado (independiente) dónde obligas al usuario a guardar los datos.
Hola Xavi,
No me refiero a cambiar de registro ni a salir del formulario, yo entro al registro mediante un formulario y voy haciendo cambios, si al salir no quiero guardar esos cambios uso me.undo, el problema es que cuando modifico un campo concreto necesito guardar el registro para comprobar que no está duplicado, lo hago con docmd.runcommand accmdsaverecord, pero al salir del formulario quiero dejar la opción de poder deshacer todos los cambios pero me parece que no se puede. Mi pregunta es si hay alguna forma de hacerlo, si no se puede ya pensaré otra solución.
Saludos y gracias
Si el problema radica en que en un determinado campo deben hacerse unas validaciones, prueba a utilizar el evento Antes de actualizar del propio campo dónde verificas la duplicidad (un DCount con los criterios adecuados). En caso de estar duplicado, cancelas la actualización.
¿Te sirve?
Xavi
El dcount lo tengo en ese campo, pero si modifico el campo sin querer y luego quiero dejar el mismo valor el dcount me dice que ya existe, en ese caso puedo usar el me.undo y salir del campo, pero busco otra alternativa porque el me.undo me deshace los cambios que he realizado en otros campos también.
El comando Undo se puede aplicar a otras cosas aparte de un formulario... por ejemplo:
Me. ElCampo. Undo
¿Te vale?
Me.ElCampo.Undo lo probé ayer y lo estoy probando ahora y no me hace nada, yo pensé que no era correcto su uso pero ahora no sé porqué no me funciona!
Ya sé porqué no me funciona:
Si el método Undo se aplica a un control, sólo se verá afectado el propio control.
Este método debe ser aplicado antes de que se actualice el formulario o control. Puede que desee incluir este método en un evento BeforeUpdate del formulario o en un evento Change de un control.
El método Undo ofrece una alternativa a la utilización de la instrucción SendKeys para enviar el valor de la tecla ESC en un procedimiento de evento.
Sólo funciona en el evento 'al cambiar'
Según lo que has escrito debería funciona en el BeforeUpdate... por lo que no entiendo como es que no te funciona.
Lo que yo probaría (recuerda que yo solo se lo que tu has conatado) es el BeforeUpdate. Haría un DCount para la verificación y, caso de fallar, cancelaría el evento (Cancel = True). También intentaría ponerle el Me! ElControl. Undo dentro del código. Eso haría que el resto de campos no recuperaran el valor previo pero si el "problematico"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas