Aviso de que faltan x días para la fecha grabada

Tengo una tabla con un campo llamado [FECHAITV] de la tabla [TABLA VEHÍCULOS], donde introduzco la fecha de caducidad de la itv de un vehículo concreto. Quisiera que al pulsar un botón de un formulario, el sistema me arrojara un mensaje en el caso de que quedaran menos de 10 días para que se cumpla esa FECHAITV. He encontrado un módulo con el siguiente código personalizado, pero me avisa de que quedan menos de 10 días cuando no es cierto. ¿Dónde está el fallo?. Gracias.

______________________________________________

Public Function Alarmas()
Dim rstMaquinas As DAO.Recordset

Set rstMaquinas = CurrentDb.OpenRecordset("Select * from [TABLA VEHÍCULOS]")

While Not rstMaquinas.EOF
If DateDiff("d", rstMaquinas!FECHAITV, Date) < 10 Then
MsgBox "Faltan menos de 10 días para el vencimiento de la ITV del vehículo matrícula " & rstMaquinas!MATRÍCULA, vbExclamation, "MENSAJE DE MANTENIMIENTO DE ITV VEHÍCULO"
End If
RstMaquinas. MoveNext
Wend

RstMaquinas. Close

End Function

1 Respuesta

Respuesta
1

El código que utilizas recorre toda la tabla. Una manera es filtrar el recordset que utilizas, algo así:

Dim rstMaquinas As DAO.Recordset
Set rstMaquinas = CurrentDb.OpenRecordset("Select * from [TABLA VEHÍCULOS] WHERE MATRÍCULA= """ & Me.MATRÍCULA & """")
If DateDiff("d", rstMaquinas!FECHAITV, Date) < 10 Then
MsgBox "Faltan menos de 10 días para el vencimiento de la ITV del vehículo matrícula " & rstMaquinas!MATRÍCULA, vbExclamation, "MENSAJE DE MANTENIMIENTO DE ITV VEHÍCULO"
End If
RstMaquinas. Close

Buenas, Víctor. La verdad es que me interesa que recorra toda la tabla buscando los criterios filtrados. En este sentido lo hace bien, pero a la hora de hacer la diferencia entre la fecha del ordenador y la introducida en el campo FECHAITV no lo interpreta bien, devolviendo siempre que quedan menos de 10 días, cuando en realidad quedan más de 10.

Ok ya te entiendo.. prueba así:

Set rstMaquinas = CurrentDb.OpenRecordset("Select * from [TABLA VEHÍCULOS]")
While Not rstMaquinas.EOF
If rstMaquinas!FECHAITV - Date < 10 Then
MsgBox "Faltan menos de 10 días para el vencimiento de la ITV del vehículo matrícula " & rstMaquinas!MATRÍCULA, vbExclamation, "MENSAJE DE MANTENIMIENTO DE ITV VEHÍCULO"
End If
RstMaquinas. MoveNext
Wend
RstMaquinas. Close

Hola de nuevo, Víctor. He dejado mi código tal y como está, tan sólo cambiando el inicio de la condición mía por la tuya, y solucionado. Muchas gracias y saludos.

If DateDiff("d", rstMaquinas!FECHAITV, Date) < 10 Then
If rstMaquinas!FECHAITV - Date < 10 Then

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas