Tienen razón para que utilizar tantos ISNULL(). Cuando todos los controles del formulario son obligatorios se puede hacer como lo explican, pero ¿Qué pasa si uno o más controles no son obligatorios? O el control ¿Es un grupo de opciones?. Nos quedamos en bucle sin salida. Diseñé hace un tiempo una función a nivel de módulo que se puede llamar desde cualquier formulario, si el campo es REQUERIDO utilizo la propiedad "Información adicional" (TAG) y le asignó cualquier texto, por ejemplo, "validar" o "requerido" etc.
Observe este formulario
Si haga clic en el botón Agregar y no se cumple con la información requerida los campos toman un fondo diferente y se muestro el mensaje. Esto aplica para formularios dependiente e independientes. Si es un formulario dependiente y me desplazo con las teclas RePág o Av Pág también se hace la validación. Utilizo el "formato condicional" para hace que el control cambie el color al recibir el enfoque.
DISEÑO DEL FORMULARIO
Observe que en la "Información adicional" anote la palabra "validar", esto indica que la función utilizará esta información y validará que en campo no sea nulo.
FUNCIÓN VALIDAR_CAMPO
Public Function validar_campo() As Boolean
'Función para marcar y validar los campos que no
'cumplen un valor
'Elaborada por: EDUARDO PEREZ FERNANEZ
'Fecha: 12/04/2021
'La función se puede llamar desde cualquier formulario
'Trabaja con base a "Información adicional" (Tag)
On Error Resume Next
Dim ctl As Control
For Each ctl In Screen.ActiveForm.Controls
With ctl
If (.ControlType = acTextBox Or .ControlType = acComboBox Or _
.ControlType = acOptionGroup) And .Tag <> "" Then
If IsNull(ctl) Or ctl = "" Then
.BackColor = RGB(246, 110, 96)
validar_campo = True
Else
.BackColor = vbWhite
End If
End If
End With
Next
End Function
La ventaja es que esta función sirve para todos los formularios, lo que hace que disminuya el código. Ahora ¿Cómo hago la validación con la función?. Hay varios procedimientos a validar, principalmente en formularios dependientes.
PROCEDIMENTO ANTES DE ACTUALIZAR
Private Sub Form_BeforeUpdate(Cancel As Integer)
If validar_campo = True Then
MsgBox "Faltan datos obligatorios", vbInformation, "Clientes"
Cancel = True
End If
End Sub
PROCEDIMIENTO AL ACTIVAR REGISTRO
Private Sub Form_Current()
If Me.Dirty Then
If Me.NewRecord Then
If validar_campo = True Then
MsgBox "Faltan datos obligatorios", vbInformation, "Clientes"
End If
End If
End If
End Sub
CÓDIGO BOTON AGREGAR
Private Sub btnAgregar_Click()
If validar_campo = True Then
MsgBox "No puede adicionar, faltan datos obligatorios", vbInformation, "Cuidado"
Exit Sub
End If
DoCmd.GoToRecord , , acNewRec
End Sub
Puede utilizar esta función para todos los formularios dependientes e independientes.
Una cosa es validar que los campos requeridos tengan información y otra es hacer la validación del contenido del campo, por ejemplo, si una fecha está dentro de un rango o si campo numérico es mayor que cero etc. Le recomiendo aprender VBA definitivamente usted no sabe para donde va, camina porque ve a otros caminar. - Eduardo Pérez Fernández
Creo que de programación conoce muy poco pero eso no es mi problema.Creo sinceramente que su problema es que tiene el síndrome del principito, busque ayuda. - Enrique Feijóo
Entonces piense o asesórese de alguien que sepa VBA antes de hacer comentarios o responder en este foro, como le indique este no es su foro. - Eduardo Pérez Fernández
Siento no haberle pedido permiso para incorporarme, desconocía que fuera el propietario legitimo del foro y con derechos de veto (o de inyectar SPAM).Desde esta atalaya su presencia es insignificante. (tampoco lo entenderá). - Enrique Feijóo
Y sigue respindiendo burradas. - Eduardo Pérez Fernández