Condición para un registro en un campo

Que aun no encuentro como solucionarlo.

Tengo un formulario con el nombre "BITACORA", y en el tengo varios campos a llenar, sin embargo necesito que cuando se intente escribir la palabra "SI" en el campo de nombre "DISPONIBLE" se valide que el campo "FEC_SALIDA" y el campo "HORA_SALIDA" no estén vacíos y mande el mensaje de "resgistra la fecha y hora de salida del autobús", y en caso de no llenar esos dos campo solo permita escribir la palabra "NO". Y deje continuar registrando datos.

Debe enfatizar que soy nueva con esto de access.

Respuesta
2

Honestamente, no entiendo la pregunta. Verás, es como si le dices a un niño: Si no te tomas la sopa te castigo y la alternativa es si no te tomas la sopa te perdono. Eso es lo que pretendes. El cuadro de texto Disponible solo sabe que vas a poner Si una vez que lo hayas escrito. Para eso está el evento Antes de actualizar. Por tanto, en el evento Antes de actualizar del cuadro de texto Disponible, crea un procedimiento y entre Private Sub y End Sub pon

If disponible = "si" And IsNull([Fec_salida]) Or IsNull([Hora_salida]) Then
MsgBox "Rellena las fechas", vbokonly, "No te aviso más"
DoCmd.CancelEvent
End If

Entonces, si escribes SI, pero si algún cuadro está vacío te aparece el mensaje par que lo rellenes y hasta que no estén rellenos te seguirá apareciendo.

Por el contrario, si escribes No, aunque haya algún cuadro vacío, como no interviene la condición anterior, te deja "pasar"

1 respuesta más de otro experto

Respuesta
2

Virginia: En el evento Antes de actualizar del Control DISPONIBLE, pones éste Código

Private Sub DISPONIBLE_BeforeUpdate(Cancel As Integer)
'Sondeo si alguno de los dos Controles Fecha u Hora está vacío
If IsNull(Me.FECHA_SALIDA) Or IsNull(Me.HORA_SALIDA) Then
        'Si hay alguno vacío saltará aquí y miro si he puesto SI
        If Me.DISPONIBLE = "SI" Then
                MsgBox "No puedes poner SI en éste control salvo que FECHA_SALIDA y HORA_SALIDA rengan un valor", vbCritical, "ERROR EN LA ENTRADA"
                DoCmd.CancelEvent
                Me!DISPONIBLE.Undo
        End If
End If
End Sub

Con ese cádigo solo evita que pongas "SI", pero puedes pone "AYER" y lo aceptará.

Si quieres forzar un NO, has de cambiar la Línea de sondeo, poniendo <> "NO" y lógicamente adecuando el Mensaje. Un saludo >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas