Alerta vencimientos Access con resultados en MsgBox

A partir de varios ejemplos en este foro he desarrollado un MsgBox que lanza un aviso cuando un equipo está cerca de su fecha de vencimiento (mediante Dcount).

Lo que quería además es que dentro del mismo aviso aparezcan los nombres de todos los equipos que se encuentran en esa condición; porque en los ejemplos del foro una de las soluciones es acceder al formulario filtrando por los elementos que cumplan la condición, pero me gustaría que saliera directamente en el MsgBox

Supongo que en el MsgBox habrá que escribir:

MsgBox "Faltan menos de tres meses para que caduquen " & a & " equipos" & [Equipo], vbExclamation, "ATENCION"

Siendo [Equipo] los nombre de los equipos cuya fecha de vencimiento está cercana.

He probado varias sentencias para que filtre los nombres de los equipos según fecha de vencimiento pero no me funcionan.

Si alguien me puede ayudar.

1 Respuesta

Respuesta
1

Se puede hacer más sencillo pero creo que te liaría. Supongamos que tengo una tabla con los equipos(aunque se llame nombreproducto), con unas fechas de vencimiento.

Construyo una consulta para que sólo me muestre aquellos equipos que caduquen antes de un mes

De forma que al abrirla

No haría falta que Dif se viera pero he preferido dejarlo.

Con ella construyo otra consulta Consulta2, a la que le añado un campo Orden que puedes ver en la ventana Zoom

Al abrirla

Ese campo Orden lo voy a usar para el código.

En el evento Al cargar del formulario le pongo

Private Sub Form_Load()
Dim a As String
If DCount("*", "consulta2") >= 1 Then
Dim i As Integer
For i = 1 To DLast("orden", "consulta2")
a = Nz(a) & "," & DLookup("nombreproducto", "consulta2", "orden=" & i & "")
Next
a = Right(a, Len(a) - 1)
MsgBox "Hay " & DCount("*", "consulta2") & " equipos que caducan en menos de un mes. Son " & "" & a & "", vbOKOnly, "Que lo sepas"
End If
End Sub

De forma que cuando voy a abrir el formulario

Muchísimas gracias por la rapidez en la respuesta.

Lo he probado y funciona perfectamente, aunque quizá prefiero la opción de que abra el formulario relacionado filtrando por los valores para ahorrarme hacer dos consultas. A no ser que la otra solución que comentabas que era más liosa las ahorre.

Un saludo 

Como hacer, se puede hacer de muchas, muchas formas.

1º Vamos a suponer que tienes un formulario Principal, y en él(aunque no sería necesario) un botón llamado Comando 7 y como título Ver Próximos a caducar. En sus propiedades-evento-Al hacer clic, crea un procedimiento de evento y entre Private Sub y End Sub puedes poner

Docmd.openform"productos",,,"datediff(""d"",date(),fechacaducidad)<=1")

De forma que cuando lo pulses te abrirá el formulario Productos, sólo con aquellos registros de la tabla Productos en que su fecha de caducidad es menor que un mes, a contar del día del sistema.

2º Vamos a suponer que tienes un formulario Productos con todos los registros de la tabla Productos. Puedes colocar un botón( que tampoco sería necesario, ya que se podría colocar en otro evento) y en sus propiedades-eventos-Al hacer clic poner entre Private Sub y End Sub

me.recordsource="select * from Productos where datediff(""m"",date(),fechacaducidad)<=1"

Cuando lo pulses el origen de registros del formulario serán sólo aquellos registros de la tabla Productos que cumplan esa condición.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas