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.