Validar el llenado de un formulario en access

Quiero ver si alguien me puede ayudar. Tengo un formulario que esta conectado a una tabla. No quiero validar en la tabla "Es requerido" sino que quiero que el formulario valide si 3 de esos campos tiene datos. Si falta alguno, mando un mensaje y después me dirijo a ese campo. Lo que no he podido hacer es que valide los 3 campos. Mi codigo sólo funciona validando un campo. ¿Alguien tiene algún método que me pueda ayudar?

2 respuestas

Respuesta
3

Supongamos que el formulario sólo tiene esos tres cuadros de texto. En el evento antes de actualizar del formulario puedes poner

For Each Control In Form.Controls
If IsNull([Control]) Then
MsgBox "Te has dejado algo en blanco"
DoCmd.CancelEvent
Control.SetFocus
End If
Next

Así, si te dejas alguno en blanco, te avisa y el foco pasa a ese campo

En el caso de que hubiera más controles, podrías poner

For Each Control In Form.Controls
If Control.ControlName = "nombrecompañia" Or Control.ControlName = "pais" And IsNull([Control]) Then
MsgBox "Te has dejado algo en blanco"
DoCmd.CancelEvent
Control.SetFocus
End If
Next

Respuesta
1

Si tienes un código para validar un campo, ya tienes el 95 % del trabajo hecho, simplemente has de repetirlo para los otros campos, y además, hacerlo todo seguido en un mismo evento.

También puedes hacer algo como lo que explico en este ejemplo: http://siliconproject.com.ar/neckkito/index.php/component/content/article/93-ejemplos-explicados/ejemplos-de-formularios/245-campos-obligatorios 

Un saludo.


¡Gracias!  Voy a probar este código. Ya lo leí y creo que se ajusta muy bien, ahora solo falta que lo pueda introducir bien.  Te estaré avisando.  Muchas gracias.

Hola, ya lo estoy probando, pero no me funciona. Yo creo que es porque no he puesto la función o el procedimiento en su lugar correcto o tengo que cambiar el nombre de MiForm al nombre de mi formulario.  Me podrías decir en donde pongo la función y el procedimiento?  Yo los puse con la ventana de VB en Insertar - Procedimiento.

Saludos

Ventana VBA->Insertar->Modulo y ahí pegas las funciones

En los eventos del formulario, pones los códigos que se indican en el ejemplo.

Te viene explicado en el pdf

Muchas gracias, ya lo pude poner, quedó muy bien. Sólo que se cierra el formulario, debería quedar abierto para llenar los registros.  Saludos

Si el formulario se cierra es porque le tienes una línea de código para eso, o haces la validación en un evento distinto a los que yo propongo en el ejemplo...

Me podrías ayudar con el código para que en un solo botón haga esta validación y si esta todo bien, ¿se guarde y se cierre? No quiero que pienses que abuso, ja ja, solo que no he podido arreglarlo. Muchísimas gracias de todas maneras porque me ayudó bastante y el código me parece excelente. Saludos

Vamos a ver, ¿quieres qué se cierre el formulario o no? Porque en un sitio dices que se te cierra y no te vale porque quieres seguir con él abierto y ahora dices que quieres validar y cerrar...

Quiero que se cierre si están todos los campos requeridos con datos. Si no están con datos, que los marque en rojo ( como ya esta en tu código) y que pregunte si quiere cerrar el formulario sin guardar o quedarse en el formulario para completar los datos.

La validación a hacer sería:

If fncControlaVacios(Me.Name) = False Then
 MsgBox "Los campos resaltados son obligatorios y debe introducir algún " _
 & "valor para continuar.", vbExclamation + vbOKOnly, "ERROR: Campos vacíos"
 If msgbox("Quieres cancelar el registro?",vbyesno)=vbYes Then
Me.Undo
DoCmd.Close acform, me.name
Else
'NO haces nada o pon Cancel=True si el evento lo admite
End if
Else
DoCmd.Close acform, me.name
End If

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas