Access - Consulta que no muestre los que ya han venido este año

 
Vista:
sin imagen de perfil

Consulta que no muestre los que ya han venido este año

Publicado por Eduardo (3 intervenciones) el 01/11/2022 03:15:47
Hola no puedo obtener el resultado deseado en una consulta simple, donde tengo varios campos con uno principal como referencia que se llama CODIGO (con duplicados), en la consulta traigo los datos relacionados a CODIGO bajo el criterio para mostrar todos aquellos que tienen fecha 1 año atras pero necesito NO mostrar si alguno de esos "CODIGO" han venido también este año.
Necesito mostrar solo los que hace 1 año que no vienen (Fecha()-365 pero que no hayan venido este año, solo mostrar los que hace 1 año que no vienen.
Cualquier idea o ayuda la agradezco.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Consulta que no muestre los que ya han venido este año

Publicado por Anonimo (3316 intervenciones) el 01/11/2022 11:03:18
Si se necesita fidelidad, la condición empleada no es adecuada (no tiene en cuenta a los años de 366 días = bisiestos) será un cálculo aproximado que puede ser valido, pero no el correcto.

A una consulta de datos agrupados (agrupados por código) que devuelva la mayor de sus fechas, se le puede poner como condición que las fechas han de ser anteriores a la condición impuesta (sea fecha actual menos 365 días o la más fiel:
1
DateAdd("yyyy", -1, Date)

Si se utiliza 'fuera de VBA' (en una consulta grafica) y con la configuración regional española quedaría así:

1
DateAdd("aaaa", -1, Fecha())

En la ventana de inmediato (símil de una calculadora de mano para verificar expresiones en Access) utilizaremos como referente a verificar con respecto a la fecha actual (uno de noviembre del año 2022):

A.- La fecha actual menos un año - menos un día
1
2
3
Una_FEcha= CDate("31/10/2021")
?Una_FEcha > DateAdd("yyyy", -1, Date), Una_FEcha = DateAdd("yyyy", -1, Date), Una_FEcha < DateAdd("yyyy", -1, Date)
Falso         Falso         Verdadero

B.- La fecha actual menos un año
1
2
3
Una_FEcha= CDate("1/11/2021")
?Una_FEcha > DateAdd("yyyy", -1, Date), Una_FEcha = DateAdd("yyyy", -1, Date), Una_FEcha < DateAdd("yyyy", -1, Date)
Falso         Verdadero     Falso

C.- La fecha actual menos un año + más un día
1
2
3
Una_FEcha= CDate("2/11/2021")
?Una_FEcha > DateAdd("yyyy", -1, Date), Una_FEcha = DateAdd("yyyy", -1, Date), Una_FEcha < DateAdd("yyyy", -1, Date)
Verdadero     Falso         Falso

Se muestran los resultados con una fecha anterior a la de referencia, los que se obtienen si ambas coinciden y los que devuelve cuando la fecha es posterior (todos utilizan la misma expresión, solo cambia el comparador utilizado)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Consulta que no muestre los que ya han venido este año

Publicado por Eduardo (3 intervenciones) el 01/11/2022 20:49:00
Hola, gracias por el interés.quizás no me haya explicado bien.

No importa tanto la precisión en 1 o 2 días ( 364/365 o 366 días,), lo que necesito es poder filtrar solamente a aquellos registros "CODIGO" que representan a clientes, que hayan venido la última vez hace 12 meses ya que si han venido antes de ese periodo no serán tenidos en cuenta.
Muchos de esos registros CODIGO o clientes vienen 2 y 3 veces cada año, pero algunos quizás no han venido durante los últimos 12 meses o más...esos son los que necesito filtrar cada vez que ejecute la consulta. Formulario en access basado en una consulta.

Esto no me funciona porque aparecen registros que han venido antes de cumplir los 12 meses sin venir y también después de los 12 meses y con esta condición deberían no aparecer.

sobre el campo CODIGO en la consulta, el criterio es:
No In (SELECT tblOrdrep.CODIGO FROM tblOrdrep WHERE tblOrdrep.FechaOR < Date()-365

Desde ya Gracias por la ayuda que puedan brindar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta que no muestre los que ya han venido este año

Publicado por Anonimo (3316 intervenciones) el 01/11/2022 22:26:47
La condición se utiliza para obtener una lista de elementos con fecha de antigüedad superior a un año

Ese subconjunto ¿devuelve los datos correctos? ....

Si los devuelve y se compara con otro conjunto diferente, puede haber elementos (no existentes en el conjunto que se utilizó para obtener el listado) y estos tengan la fecha que tengan aparecerán.

Si he captado la idea, habría que añadir al conjunto de referencia (del que se obtendrá la lista) los del conjunto al que se le aplica la condición para poder añadirlos y que los resultados sean correctos.

Como obtener el dato para crear el subconjunto (sea un año, mes o día) tendrá la precisión que sea consensuada (con los meses se redondea a 30 días/mes y se 'difuminan' unos cuantos ...).

Solo se puede ver que causa ese problema si se analizan los datos incorrectos (quizás añadir un (<=) en lugar de (<) sea una opción).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Consulta que no muestre los que ya han venido este año

Publicado por Eduardo (3 intervenciones) el 01/11/2022 22:34:56
Seguiré analizando opciones. Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Consulta que no muestre los que ya han venido este año

Publicado por Sapphire (1 intervención) el 25/11/2022 03:53:25
Good topic and worth bookmarking
drift boss
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar