Cumplir al menos dos condiciones antes de ejecutar

Antes de abrir un formulario deseo verificar que se cumplen dos condiciones por lo menos. Hasta el momento lo he logrado el problema viene que siempre me da el mismo mensaje y lo que me gustaría es que si termino la rutina por una condición me diga la razón. Ejemplo: Para abrir el formulario x debes tener un perfil valido y adicional que se encuentre en un rango de fecha hábil. Quiero que si no tienes el perfil diga que no tienes el perfil y que si estas fuera de fecha diga que estas fuera de fecha para evaluar.

Private Sub calificar_Click()
Dim vRol As String
    vRol = tipoUser()
    If vRol = "Administrador" Or vRol = "Profesor" Or vRol = "Profesor Encargado" Then
    If Date > 3 / 18 / 2018 And Date < 3 / 10 / 2018 Then
        DoCmd.Close acForm, Me.Name
        DoCmd.OpenForm "FActualizacion"
      Else
        MsgBox "No está autorizado a acceder a esta información", vbCritical, "NO AUTORIZADO"
   End If
End If
End Sub
1

1 respuesta

Respuesta
2

Tan fácil como escribirlo así:

Private Sub calificar_Click()
Dim vRol As String
    vRol = tipoUser()
    If vRol = "Administrador" Or vRol = "Profesor" Or vRol = "Profesor Encargado" Then
        MsgBox "No tienes el perfil necesario para acceder a esta información", vbCritical, "NO AUTORIZADO"
        Exit Sub
    End If
    If Date > #3 / 18 / 2018# And Date < #3 / 10 / 2018# Then
        DoCmd.Close acForm, Me.Name
        DoCmd.OpenForm "FActualizacion"
      Else
        MsgBox "Estás fuera de fecha para evaluar", vbCritical, "NO AUTORIZADO"
   End If
End Sub

Ojo que las fechas tienen que ir entre almohadillas

Un saludo.


¡Gracias! 

lo pruebo y te dejo saber

Una pregunta adicional: ¿Si mis fechas (inicio y fin) vienen de una tabla como hago la referencia para que en vez de especificar las fechas en el código busque las fechas en esos campos de la tabla?

Usa DLookUp() para recoger esos valores

Gracias por la info.

Sin embargo hay un error en el primer Then pues la persona puede tener el perfil requerido pero como la acción que se ejecuta es el msgbox siempre va a "morir" en ese paso. ¿Cómo lo puedo corregir? (Ver tu código)

Cambia los = por <> No me fijé en la condición, simplemente modifiqué tu código pensando que estaba bien... Fallo mío.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas