Fecha de vencimiento en access y visual basic

No puedo encontrar la forma correcta de calcular si algo esta vencido o no...

Es decir, quiero saber si la fecha "Fecha Vencimiento" es mayor a la "Fecha actual" me devuelva que esta vencido:

If [Fecha x] > [Fecha actual] Then

[Estado] = "Vencido"

End if

Probe tambien con Diffdate pero no hace nada, devuelve vacio.

¿Cuál es la forma correcta con codigo Visual Basic para Access?

2

2 respuestas

Respuesta
1

Si tienes en tu formulario tres cuadros de texto que se llaman como indicas ("Fecha Vencimiento", "Fecha actual" y "Estado" -> Propiedades->Pestaña Otros->Nombre), el código sería así:

If Me.Fecha_Vencimiento>Me.Fecha_Actual Then

Me.Estado = "Vencido"

End if

Si así no te va, prueba a formatear las fechas al estilo americano:

If Format(Me.Fecha_Vencimiento, "mm/dd/yyyy")>Format(Me.Fecha_actual, "mm/dd/yyyy")Then

Me.Estado = "Vencido"

End if

Si quieres usar DateDiff, sería así:

If DateDiff("d",Me.Fecha_actual,Me.Fecha_Vencimiento)<0 Then 'Si es negativo es que Fecha_actual es mayor que Fecha_Vencimiento

Me.Estado = "Vencido"

End if

Debo decir que te Odio!! jaja siempre encontras la solución muy simple !! muy bien explicado! q increible! 
Tengo una sola consulta q es una duda sencilla
¿Es exactamente lo mismo?¿Es necesario siempre agregar ese "Me"?

  • Me.Fecha_actual
  • Me.[Fecha actual]
  • [Fecha actual]

¿Tengo que llamar un campo de un subformulario desde un Formulario? O viceversa, Desde un Subformulario llamar a un campo de el Formulario? ¿ Y funciona igual en los informes y subinformes esta mecanica?

Son dudas simples que me molestan el dia a dia.. Si quieres las puedes contestar desde ya igual que la respuesta va a estar puntada por "Excelente" por como acertaste con la solucion!!

Las tres notaciones que ponen son equivalentes entre sí, por lo que dará lo mismo que uses una u otra. Yo, por costumbre, siempre uso la del Me.

Para llamar a un campo de un subform desde el form, tienes que usar esta sintaxis:

Me.NombreFormulario.NombreSubformulario.Form.NombreControl

Para hacerlo a la inversa:

Me. Parent. NombreControl.

Aquí tienes casi toda la casuística: http://www.llodax.com/Tutoriales/SintaxisSubForms.htm 

Y sí, en los informes es exactamente igual.

Respuesta
1

Si quieres ver si algo está vencido debes de compararlo con la fecha actual, que en código se invoca como Date()

Estás usando en tu comparación dos campos [Fecha x] y [Fecha actual]. En lugar de usar la notación de campo para la fecha actual compara el campo [Fecha x] con la fecha actual invocada como Date(). Te debería quedar así:

If [Fecha actual] > Date() Then

...

Cordiales saludos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas