¿Cómo evitar que se siga ejecutando el código?

Tengo un formulario en el que, entre otros, existen dos campos lógicos: hombre y mujer. El caso es que no quiero que el operador deje los dos vacíos. He conseguido que en ese caso aparezca un cuadro de texto con el mensaje "No puede dejar vacíos los dos campos". Eso lo he conseguido con el siguiente código situado en "al hacer click":

If hombre = falso And mujer = falso Then
MsgBox "Debe introducir si es hombre o mujer", vbCritical, "Atención"
End If

El problema es que después de mostrar ese mensaje, el programa continua ejecutándose y permite salir sin rellenar uno de los dos campos.

1 respuesta

Respuesta
1

Ya ví tu pregunta anterior sobre este mismo tema, y creo que estás planteando mal tu BD. Me explico ¿por qué tener dos campos lógicos cuando es mucho más sencillo un único campo que tome los dos estados "hombre/mujer"?

Para hacer eso, en tu tabla añades un campo "Sexo", de tipo texto. En la parte inferior, en la pestaña "General", le pones longitud del campo 6 y Requerido en sí.

Cambias a la pestaña "Búsqueda" y seleccionas Cuadro combinado (o cuadro de lista, el que más te guste), en la segunda fila elijes "Lista de valores", en la tercera escribes:

"Hombre";"Mujer"

Y le cambias "limitar a la lista" a Sí, y "permitir ediciones de la lista" a No.

De esta forma, si no seleccionas uno de los dos estados, access te avisará de que es obligatorio y no te dejará continuar.

Saludos!


Se que esa seria una buena solución que tendría que haber hecho al principio pero a estas alturas, hay muchos formularios, consultas, etc que dependen de esos dos campos y cambiarlos supondría un lio tremendo, por eso no he querido hacer un cuadro combinado que insisto, sería lo ideal pero como no lo hice al principio....

Gracias por tu interes y amabilidad

Dime un par de cosas:

¿Tienes un botón para guardar los datos?

¿Tienes botones de navegación propios (no los que trae access en la parte inferior del formulario?

¿tu formulario tiene habilitado el botón cerrar (el botón con la [X]) en la esquina superior izquierda?

Dependiendo de tus respuestas, te indicaré alguna forma o te diré que lo que pides es sino imposible, casi, casi...

pues si, tengo botones que yo he puesto: uno para volver al menú principal de la aplicación, otro para ir al registro siguiente, otro para el anterior, etc. Esos son los tres que abandonan el registro actual que es el que quiero controlar. Si me dices como ponerlo en el botón que accede al menu, ya lo pondré en el resto. De nuevo, gracias por tu amabilidad

Pues casi lo tenías con el código del enunciado, sólo te falta añadir un "exit Sub" para que salga del procedimiento sin hacer nada más:

Private Sub ..._Click()
'Compruebas que se haya elegido
If hombre = falso And mujer = falso Then 'Si no se eligió, avisas y sales
     MsgBox "Debe introducir si es hombre o mujer", vbCritical, "Atención"
     Exit Sub
End If
'Aquí iría el resto del código: volver al menu...
End Sub

Gracias. Lo probaré 

Si no necesitas ninguna aclaración más, te agradecería que valorases la respuesta, para que quede finalizada la pregunta y salga de "preguntas pendientes".

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas