Como impedir que el usuario introduzca un valor de fecha superior a la actual

En el encabezado de un formulario continuo tengo dos cuadros de texto independientes y del tipo fecha "Inicio" y " Final" respectivamente. También tengo un botón "BtnCalcular" que en el evento "al hacer clic", me abre un informe.

Lo que necesito es que el usuario no pueda introducir en el rango de fechas un valor superior a la fecha actual..

Supongo que habrá que codificar los controles fecha en el evento "Después de actualizar" pero no se como hacerlo lo he intentando con

If  Me.Inicio.value > DAte() then

Msgbox  "Debe introduir una fecha inferior a la actual"

Md.Inicio=Null

Me.Inicio.setfocus

End Sub

else....

Pero no consigo que funcione

¿Alguna Sugerencia?

Respuesta
1

Aceptando que la de inicio no debiera ser superior a la fecha actual ¿qué problema puede haber si la final lo es?.

Si no hay datos superiores a la fecha actual, mostrara hasta la mayor de las que tenga (que superen a la fecha inicial).

Para ser estrictos de debería impedir que ambas fechas fueran:

La inicial: igual o superior a la menor de las fechas existentes en la base
La final: menor o igual a la mayor de las existentes

Y para que el usuario se atenga a estas, basta proponerlas como valor por defecto (en bastantes ocasiones suele ser el periodo que se desea obtener).

2 respuestas más de otros expertos

Respuesta
2

Tienes que ponerlo en el evento Antes de actualizar del control. Por ejemplo, supongamos que está escribiendo en el cuadro de texto FechaInicio. Entonces sería

If fechainicio>Date() then

Msgbox"De eso nada monada, la fecha no puede ser mayor que la actual", vbokonly,"En los viajes en el tiempo quizá posible"

Cancel=true

end if

Así, cuando la escribas y pulses Enter o te vayas del cuadro de texto te aparece el mensaje y el cursor se vuelve a ese cuadro de texto

Respuesta
1

EL código debe ir en el evento Antes de actualizar de cada campo de texto, los campos deben tener en propiedades el formato fecha corta.

Le dejo la validación para un control, debe hacer lo mismo con el otro control

If IsDate(Me.Inicio) Then
   If Me.Inicio > Date Then
       MsgBox "Debe introduir una fecha inferior a la actual", vbInformation, "Cuidado"
       Cancel = True
 End If
Else
  Cancel = True
End If
End If

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas