Cerrar formulario de entrada de datos en Ms access

Hace poco que he empezado con esto del Ms access.
Lo que digo a continuación es suponiendo que tengo un formulario de entrada de datos a una tabla donde algunos de sus campos tienen la propiedad "Required" a Si:
Dice la documentación On-Line que el método Close del comando DoCmd de Visual Access, es lo mismo que hacer click sobre el botón de cierre, o elegir la opción cerrar en el cuadro de control, o teclear Alt-F4.
¿Puedes confirmar o desmentir esta afirmación de la documentación?
Yo, por lo que he comprobado, observo que ocurren cosas distintas:
1 Si cierro con DoCmd. Close y tengo todos los campos "Required" llenos, entonces se guarda el registro, si no están llenos todos los campos "required", entonces no se guarda el registro, ademas no dice absolutamente nada y se cierra el formulario.
2 Sin embargo si uso cualquier otro método para el cierre del formulario (p.e. Hacer click en el botón cerrar), si los campos "Required" están llenos se guarda el registro igual que en el punto 1, pero si alguno de ellos no esta lleno entonces no se guarda el registro pero produce un mensaje típico de que no se puede guardar un registro con campos "required" vacíos o nulos, generando ademas eventos de error en el formulario.
Parece un poco rollo pero espero que entiendas por donde voy con la pregunta.
Es importante saber esto porque si quiero cancelar una entrada/modificacion de datos en un formulario y las distintas maneras de hacerlo, aunque al final produzcan el mismo resultado, van por caminos diferentes, pues entonces me gustaría controlar esos caminos o simplemente no permitir algunos de los métodos para cerrar el formulario.

1 respuesta

Respuesta
1
Debes añadir este código para que te muestre un menaje cuando cierras mediante el método Close:
If IsNull(Me![Campo1]) Then
If MsgBox("'Campo1' debe contener un valor." _
& Chr(13) & Chr(10) _
& "Presione 'Aceptar' para incluir un valor." _
& Chr(13) & Chr(10) _
& "Presione 'Cancelar' para anular el registro.", _
vbOKCancel, "Un campo Requerido es Null") = _
vbCancel Then
DoCmd.Cerrar
End If
End If
Respecto a mi pregunta te solicite una aclaración, pero al enviarla no se que pasó, pero me volvió a pedir el usuario y la clave para acceder.
¿Entonces no se si todo lo que escribí sobre la aclaración te llegó o no?
No me ha llegado la aclaración, ¿vuélvela a mandar ok?
Creo que no expresé con claridad mi pregunta.
Lo que me respondes es correcto, pero no es eso lo que busco.
La pregunta sobre la documentación no me la respondes.
Yo lo que estoy codificando es una cancelación de la entrada de datos.
Diseño mi botón de comando cancelar y en su evento " Al hacer click" codifico la cancelación: compruebo si esta "Dirty" el formulario, en cuyo caso se avisa de que hay datos que se pueden perder si acepta la cancelación, o si por el contrario desea continuar con la entrada de datos. Si el usuario decide continuar con la cancelación entonces se hace un Me.Undo y se ejecuta el Docmd.Close.
Sin embargo un usuario de la aplicación podría decidir hacer click en el botón estándar de cerrado de ventanas (arriba a la derecha) o teclear ALT-F4 para salir/cancelar la entrada de datos (en vez de usar el que se ha diseñado expresamente para ello), por lo que habría que capturar estos eventos (no se si se puede detectar que se ha hecho click sobre el botón estándar de cerrado de ventanas), o no permitirlos.
Me parece que Docmd.Close comprueba si se puede guardar el registro, si es así lo guarda, pero si no entonces hace un UNDO del formulario y lo cierra. Por eso en cualquier caso no muestra mensajes de campos requeridos, mientras que los otros métodos, ALT-F4 y hacer click en botón estándar de cerrado de ventanas, no hacen el UNDO.
Lo que me fastidia es que la documentación no se ajuste a la realidad y uno pierde muchísimo tiempo pensando que has hecho algo mal, cuando en realidad lo que ocurre es que no te han documentado todos los detalles sobre este u otros comandos.
Esto ya no parece una pregunta ni una aclaración, más bien una declaración de conclusiones.
Agradezco tu interés en responderme.
Un saludo de Glopez
Siento no haber pillao la pregunta a la primera, pero a ver si esto te puede ayudar
(Quizá ya lo hayas hecho así), en las propiedades del formulario, hay una propiedad que es Botón Cerrar, está establecida a SI pero que si estableces a NO, el botón de cerrado estándar está desactivado, así que para cerrar el formulario, lo normal es que usen el botón que tu pongas en el, si se utiliza Alt + F4, también en las propiedades de formulario
puedes codificar una respuesta en el evento Al cerrar, o utilizar un formulario Modal en el que no te permite cerrar con esa combinación

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas