Access - Problema consulta registro por fecha más reciente

 
Vista:
sin imagen de perfil

Problema consulta registro por fecha más reciente

Publicado por emiliano (23 intervenciones) el 17/05/2024 23:39:25
Estoy tratando de hacer una consulta con varias tablas todas relacionadas en una de las cuales hay un campo fecha. La tabla se llama [acciones], tiene un listado de acciones que se realizan desde un equipo de trabajo, un id de la tabla, un campo o llave externa que define metacategorías o problemas a encarar a través de esas acciones, un campo con el tipo de acciones realizadas para solucionar los problemas definidos, otro con la fecha en que se realizan esas acciones y otro de observaciones tipo texto..
En la consulta en cuestión, en la cual necesito extraer la última acción realizada en la solución de cada tipo de problema (recordar que por cada problema pueden haberse realizado varias acciones en distintas fechas formato 00/00/0000), de modo de tener un seguimiento del mismo, tomo el campo fecha y en el diseño de la consulta con el llamado de totales, en la fila de totales, le cambio el "agrupar" por y lo coloco en "último" (también hice lo mismo con el campo observaciones de esa tabla), pero sólo está respondiendo a ese criterio cuando el ID autonumerico de la tabla [acciones] es el último nro de registro.
Si tengo un ID nro 3 con campo fecha 16/05/2024 y un ID nro 2 con fecha 15/05/2024, la consulta funciona y toma todos los campos que le coloque a la misma devolviéndome los valores de campos asociados a registro ID nro 3. Pero si tengo un ID 6 con fecha 10/05/2024 y un ID 4 con fecha 30/05/2024 me devuelve los registros asociados a ID 6 que como se ve no es la fecha mas reciente. Probé colocando "max" en vez de "última" pero me toma el valor desordenando el resto de los campos.
Bueno espero que alguien pueda ayudarme con eso. 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

Problema consulta registro por fecha más reciente

Publicado por Anonimo (3369 intervenciones) el 18/05/2024 02:22:27
Un error muy común en las consultas de agrupación acostumbra a ser que se utilizan mas campos de lo necesario y se generan resultados no deseados.

Si hay campos que no intervienen en la agrupación (pero se agrupan también porque algo hay que elegir) lo adecuado es crear una consulta que devuelva (de cada agrupación) el que tenga la fecha mas alta y de ella basta que devuelva el ID que define al registro.

Se utilizara para filtrar a la consulta que aportara todos los datos 'en bruto' (sin filtrar esto es: todos los registros)

Veamos si lo simplifico:
Se crea una consulta de agrupación que (con los campos indispensables) devuelva el ID del registro con la fecha mas alta (solo nos interesara el ID para utilizarlo mas tarde)

Se crea otra consulta que devuelva los registros completos (el origen de datos para el informe o formulario).

Se cruzan ambas y se relacionan por el ID, en la combinación (doble click en la línea que las relaciona) se selecciona la opción de que los campos relacionados sean iguales.

Esta ultima consulta deberá devolver el subconjunto de datos deseado.

Nota:
Si con la consulta en modo diseño, en la opción 'Ver' se selecciona 'Vista SQL', se mostrara la SQL y (copy & Paste) se copia lo que aparece en la ventana y se publica (aportara datos consistentes).
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

Problema consulta registro por fecha más reciente

Publicado por emiliano (23 intervenciones) el 18/05/2024 18:37:58
Gracias por responder. ¿Con campos indispensables te referís al ID de esa tabla y al campo fecha obviamente? ¿hacer una consulta sobre eso solamente y luego hacer otra aparte con los campos restantes que quiero asociarle de otras tablas para finalmente unirlas a través del ID de acciones en una 3era consulta?
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

Problema consulta registro por fecha más reciente

Publicado por Anonimo (3369 intervenciones) el 19/05/2024 17:18:24
Lo que intentaba transmitir es que en muchas ocasiones las consultas complejas no permiten o simplemente complican hacer agrupaciones.

Una forma de resolver las dificultades (o de mejorar el rendimiento) consiste en hacer las agrupaciones de forma externa y posteriormente añadir los cálculos o utilizar su resultado como condición en la consulta final.

Una consulta devuelve los datos que se indiquen, si solo se selecciona el ID (la relación con la consulta final) se puede utilizar como condición o filtro y también con
1
.... Campo_0 IN ([lista de datos] o un [Select ... ] que devuelva el mismo conjunto)

Para ello solo han de devolver (además de los cálculos o resultados) un dato o mas que permita combinarlos en la consulta final (crear una relación).

Desconociendo el entorno real y la SQL que se esta creando, es una aportación que puede ser la adecuada.

Respecto a las fechas el tema es complicado porque no siempre Access interpreta 'una fecha' como un dato de tipo fecha, el mismo dato (la fecha) puede ser interpretada como un texto (dos de enero del 2030) una operación matemática (dos dividido por uno y dividido por dos mil treinta) o 'una fecha Access' (un numero que representa los días trascurridos desde finales del siglo diecinueve).

Esto ultimo es fácil de verificar solo hay que solicitar que fecha representa al numero cero, en VBA, la ventana de inmediato, se puede hacer asi:
1
? Format (0, "Long Date")
(es valido para Access, Excel y resto de aplicaciones: es un dato consensuado).

Access obtiene la fecha en base a ese dato consensuado y la guarda como un numero (en un campo de tipo DATE), la fecha mas alta será siempre la mayor (seria la ultima si el conjunto de datos se ordenase por fecha en ascendente).

Si a este dato (que es un entero y representa días) se le añade como parte decimal el tiempo trascurrido desde la hora cero (media noche) ya se dispone de mayor precision y control.
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

Problema consulta registro por fecha más reciente

Publicado por emiliano (23 intervenciones) el 19/05/2024 17:35:40
Es que precisamente tengo ordenado el campo de modo "descendente" (para que en registro o fila de más arriba me ubique la fecha más reciente), por lo menos desde el subfomulario donde se visualizan las acciones realizadas y sus distintas fechas, pero al hacer la consulta no pareciera guiarse por ello sino por el último ID que no siempre coincide con la fecha más reciente. Hay otro lugar donde podría reforzar ese ordenamiento que permita que la consulta tome la fecha más reciente? si en totales le indico fecha máxima se me parte la consulta, y el campo observaciones por ejemplo no se corresponde con el campo fecha en ese caso.
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