Como puedo seleccionar varios cuadros de texto y ver si alguno esta en blanco

Tengo el siguiente formulario en cual cual tengo varios cuadros de texto y quiero que vea cual es el que esta vacío para preguntar si desea dejarlo en blanco o así quiere registrarlo, intente con un if pero si pongo varios campos si me pregunta que si desea guardar los datos pero a la hora de ponerle que no aun así me guarda el registro

Dim resp As Integer
If IsNull(Me.Rack) Or Me.Rack = "0" Then
resp = MsgBox("Alguno de los espacios esta en blanco ¿Desea guardar el registro?", vbYesNo + vbInformation, "Confirmar")

elseIf IsNull(Me.Seccion) Or Me.Seccion = "0" Then
resp = MsgBox("Alguno de los espacios esta en blanco ¿Desea guardar el registro?", vbYesNo + vbInformation, "Confirmar")

If resp = vbYes Then
DoCmd.RunCommand acCmdSaveRecord
Else
DoCmd.SetWarnings False
DoCmd.RunCommand acCmdDeleteRecord
End If
End If

Ese es el codigo pero cuando quiero agregar los demás campos me registra los datos aunque le ponga en no

1 Respuesta

Respuesta
1

Arturo, veo que se está complicando, he respondido está pregunta en otras oportunidades, para evitar errores por campos vacíos en formularios dependientes como independientes, elaboré una función que me ha sido bastante útil, la utilizo en mis programas. Para esto me apoyo en la "Información adicional" del campo (TAG). Observe este ejemplo:

Formulario para ingresar datos

Observe cuando hago clic en "Guardar", si hay campos requeridos sin información obtengo el mensaje (se puede obviar) y los controles cambian de color. Esto lo hago con una función a nivel de módulo, la cual recorre todos los controles del formulario y determina aquellos que tengan en la información adicional (Tag en VBA) y sean nulos, para marcarlos.

Código del boton guardar

Private Sub btnObligatorios_Click()
 If validar_campo = True Then
    MsgBox "Hay campos obligatorios", vbInformation, "Cuidado !!!"
    Exit Sub
 End If
 CurrentDb.Execute "INSERT INTO tblprueba (campo1,campo2) values(" & Me.Texto46 & "," & Me.Texto52 & ")"
End Sub

 Llamo la función "validar_campo" si retorna True es porque existe al menos un campo que viola la restricción.

CÓDIGO DE LA FUNCIÓN VALIDA_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

Puede llamar esta función desde otros eventos.

Si quiere el ejemplo lo puede solicitar a [email protected] favor en el asunto hacer referencia a la consulta.

Si, nada más que quizá no me explique muy bien más bien lo que necesito es mostrar un mensaje de alerta de que el campo esta vacío pero que mi campo no sea obligatorio, y que cuando mande un mensaje este pregunte si desea guardar los datos o no

Muy sencillo cambie el código de botón Guardar por:

Private Sub btnObligatorios_Click()
 If validar_campo = True Then
  If MsgBox("Hay campos obligatorios" & vbCrLf & _
  "¿Es correcto?", vbQuestion + vbYesNo, "Cuidado !!!") = vbNo Then
    Exit Sub
  Else
    'Guardo
    CurrentDb.Execute "INSERT INTO tblprueba (campo1,campo2) values(" & Me.Texto46 & "," & Me.Texto52 & ")"
  End If
Else
 CurrentDb.Execute "INSERT INTO tblprueba (campo1,campo2) values(" & Me.Texto46 & "," & Me.Texto52 & ")"
End If
End Sub

Este código le da la opción de grabar, así los campos que considera obligatorios NO tengan información (algo que yo no haría).

ya lo probé pero quizá tengo algo mal, como le digo soy novato en este tema,  entonces me surgió una duda en un if se pueden concatenar los cuadros de texto para que ahí mismo vea si alguno esta vacío?? 

Si claro, la ventaja de la función es que sirve para cualquier formulario y se utilizan menos líneas de programación. Envíeme la base de datos a [email protected] y le hago la validación con IF

Ya le envíe la base de datos a su correo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas