Access - Consulta para fecha más reciente

   
Vista:

Consulta para fecha más reciente

Publicado por luis (16 intervenciones) el 21/05/2016 08:52:35
Tengo una consulta con tres campos.
El primer campo es una ID única
El segundo es una ID que se puede repetir
El tercero es una fecha
De todas las filas que se generan en esta consulta, quiero seleccionar aquellas cuyo tercer campo (fecha) sea la más reciente de todas las que tenga la ID de la segunda columna.


Muchas gracias
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 para fecha más reciente

Publicado por Enrique Heliodoro (1663 intervenciones) el 21/05/2016 09:06:43
Con elementos únicos, el agrupamiento es imposible, asi que se tendrá que razonar una solución y ello dependerá de los datos reales.

.- ¿El 'ID unico' es necesario o lo creo Access por defecto?
si lo creo Access por automatismo se puede borrar, se asume que la combinación de 'id repetible' mas fecha debería ser un elemento único y asi el obstáculo desaparece, pues se agruparía por 'id' y en el campo de fecha se selecciona al mas alto.

Si ese ID (el irrepetible) tiene alguna 'relación lógica' con el campo de fecha (mayor ID, fecha mas alta) se agrupa por el ID 'repetible' y en los campos de fecha y en el de ID no repetible se selecciona al mas alto.

En cualquiera de los casos, la consulta seria de datos agrupados, con lo cual aparecería bajo cada campo un desplegable (por defecto seleccionada la opción de agrupamiento) en el cual se puede planificar el comportamiento individual (sumar, contar, mayor, menor ...)
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 para fecha más reciente

Publicado por luis (16 intervenciones) el 21/05/2016 11:47:55
Supongamos que efectivamente, suprimimos de la consulta el primer campo de ID única.
Nos quedamos entonces con una consulta de dos campos, el primero con una ID repetida, y el segundo con una fecha.
Mis conocimientos son muy básicos, así que probablemente la cuestión que voy a plantear sea una obviedad.
¿Cómo hacemos para que a cada ID seleccionemos la fecha más reciente asociada, de manera que en la consulta solamente nos aparezca una ID y la fecha más reciente?

gracias por tomarse tantas molestias.
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 para fecha más reciente

Publicado por Enrique Heliodoro (1663 intervenciones) el 21/05/2016 18:14:47
Yo (aun nadando en ese inmenso mar de dudas) me molestaría en generar esa consulta tal cual se aconseja y después de ello sacaría conclusiones.

A lo sumo admitiría 'como parte lógica' que la pregunta versara sobre como generar la consulta de agrupación (algo que también resuelve la ayuda de Access si se tiene algún interés en aprender).

En fin que me parece poco probable que si se carece de la teoría y no se hace la practica (es el desarrollo practico de la teoría) se pueda sacar alguna conclusión con futuro (porque el copy&paste es un punto y final).
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 para fecha más reciente

Publicado por luis (16 intervenciones) el 21/05/2016 20:46:29
Pues efectivamente hice mis pruebas como pude, la base real la tengo en el trabajo, por ahora no puedo hacer las pruebas en condiciones.
No me parece muy acertado el comentario sobre la actitud, máxime cuando Vd. no conoce absolutamente nada sobre mí. Cualquiera que me conozca sabe que yo no soy de "copy&paste" en absoluto.
Pero, haciendo la vista gorda, seguimos.
Como digo, he probado con una base de mentirijillas, y es cierto que con dos campos, funciona.
El problema viene cuando añado una tercera columna de campo calculado (nº de días transcurridos desde una fecha) y entonces la query ya no funciona como debería pues me salen repetidas las ID con repetición. Lo solucioné poniendo dos funciones MAX, una en fecha y otra en DATEDIFF. (Estoy utilizando en casa el LibreOffice, en el trabajo uso Access).

Nunca asistí a formación alguna sobre Access, todo lo poquito que sé lo hice por mí mismo, así como otras muchas cosas aparte de la informática de las que también puedo manejarme para conseguir mi objetivo.
Sé que con lo que he visto y lo que dispongo, seré capaz de conseguir lo que quiero porque además ya lo he hecho otras veces. Ya estoy a punto de jubilarme y creame, cualquier cosa menos "copy&paste" en general, aunque como todos, alguna vez lo hacemos para ganar tiempo.

De cualquier manera, agradezco su ayuda aunque no comparta alguno de sus comentarios.
Un saludo.
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 para fecha más reciente

Publicado por Enrique Heliodoro (1663 intervenciones) el 21/05/2016 22:33:14
El método funciona sea cual sea el origen de esos datos (inventados o reales).

Una vez que se obtiene ese conjunto de elementos, bastaría utilizarlos en una nueva consulta en la que interviniese la otra tabla, relacionando ambas por los elementos que los definen como únicos.

Sobre esa nueva consulta se puede aplicar mas filtros (algo que también se puede hacer sobre la original sin que afecte al subconjunto, si acaso lo reducirá si elimina alguno por no admitirlo la nueva condición).

El tener una determinada edad no significa que se tenga algún derecho especial, sobre todo cuando el elemento de referencia (que es desconocido) puede tener ya experiencia en ese ciclo.

Aprecio que tras el comentario, se hizo aquello que se debería hacer antes de volver a preguntar, si se hubiera hecho el comentario no hubiera tenido lugar (simplemente porque se hizo lo que se tenia que haber hecho en lugar de teorizar sobre lo desconocido).
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 para fecha más reciente

Publicado por luis (16 intervenciones) el 22/05/2016 11:47:18
Hice una prueba en Access y me lista bien con dos campos:
1) ID con repetición
2) Fecha
Agrupo por ID y pongo función MAX para la fecha.
Me lista perfectamente lo que quiero, que es una ID y la fecha más reciente.
Pero cuando intento listar el número de días transcurridos entre esa fecha y la actual no consigo poner la sintaxis correcta.

DATEDIFF("d", FECHA, HOY())

He intentado poniendo FECHA entre corchetes [], comillas "", sin nada, "d", "D", NOW(), y otras combinaciones. y no funciona.
La ayuda de Microsoft es penosa o yo soy muy torpe.

------------------------- editado ------------------

Acabo de probar con punto y coma ";" en lugar de coma "," y me ha funcionado !!
Que me aspen si en algún lugar de los que consulté aparecía ese "detalle", y eran de Microsoft.

En definitiva: ahora consigo lo que pretendía, y sin copy&paste

Expr1: DifFecha("d";[tblTabla1].[FECHA];Ahora())
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 para fecha más reciente

Publicado por Enrique Heliodoro (1663 intervenciones) el 22/05/2016 13:35:45
La ayuda de Access no es penosa, lo que ocurre es que hay que leerla desde la primera pagina: la descripción del entorno de trabajo.

En ella se expone claramente que en VBA se utiliza el lenguaje matriz (el ingles americano) de esa forma es compatible para un chino, un europeo o un ruso, FUERA del VBA se traduce (o lo intenta) al lenguaje local y como tal 'traducción' (que intenta ser amable con el usuario) utiliza las convenciones regionales (fechas y expresiones).

¿Cuál es el separador de listas que utiliza la versión de WINDOWS que se esta utilizando? ....
Si se utiliza una en ingles:
.- el separador de listas será LA COMA SIMPLE y el separador decimal EL PUNTO

En la versión española:
.- el separador de listas es EL PUNTO Y COMA y como separador decimal LA COMA SIMPLE.

En otros idiomas se adaptara a sus peculiaridades (al igual que se adapta al uso horario)

Son reglas básicas a tener en cuenta y que suelen evitar dolores de cabeza al manejar fechas (si se sabe donde se esta, se podrá utilizar la sintaxis correcta).

Un poco de teoría evita comentarios que solo afectan a los que le dedican poco tiempo a conocer las causas de los efectos.
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