Datos que veo en tabla de access pero no al consultar (último)

Tengo una tabla en access donde cada día cargo, desde Excel, los registros del día. Estos registros tienen un código de ID (cada día es un número superior al del día anterior). La carga la realizo en ocasiones importando los datos de Excel o simplemente copiándolos desde Excel y pegando datos anexados en acces. Estos registros se incorporan a la tabla sin problema (puedo verlos) pero tengo una consulta que pide el último id y esta consulta no siempre muestra todos los registros recién cargados. Si los filtro por fecha, los veo, pero la instrucción ultimo parece fallar a veces. Existe alguna manera de actualizar, ¿o validar o lo que sea para que esta consulta funcione siempre tras la carga de datos?

2 respuestas

Respuesta
1

Debe hacer un Requery sobre la consulta para que refresque los registros. Ahora sea conveniente subiera una imagen del diseño de la consulta. Por ejemplo:

Me. CboConsulta. Requery

Hola Eduardo,

La verdad es que no sé cómo se hace un requery. He hecho algunos pantallazos de mi tabla y consultas a ver si puede ayudar...

Esta es el diseño de la tabla:

Cargué los datos de ayer. He hecho una consulta para que veas que están cargados:

Como verás, los IDs de ayer, en general, terminan todos en 483:

Mi consulta original, la que falla, lo que hace es pedir el último registro cargado para cada acción. Es decir, debería mostrarme los ids terminados en 483, y la fecha debería ser la de ayer, 11 de enero. En general, funciona, pero verás como ayer, por ejemplo, no enseña todos los datos. Si te fijas en Adolfo Dominguez, Aena, Aedas Homes, verás cómo no elige el último, sino el del día anterior (terminado en 482):

Primero copio el diseño de la consulta y después el resultado:

Y aquí el resultado de ejecutar la consulta:

No siempre falla, hay días que coge todos los datos a la primera, y los ejecuta a la primera sin problemas... Pero otros días, en cambio, da fallos y no entiendo por qué, porque respeto el formato de datos cada vez y siempre los veo al ejecutar la primera consulta de fecha, tras la carga...

Muchas gracias por vuestra ayuda!

Sandra no creo que el problema sea falta de compactar, si puede envíeme las tablas a [email protected] para analizar mejor antes entrar en teoría barata que no lleva a nada

Respuesta
1

El ultimo siempre dependerá del orden impuesto a los datos.

Si el dato es un valor creciente (el ID acostumbra a serlo) el ultimo será el más alto de los contenidos en ese campo de la tabla sin importarle el orden de los datos..

Gracias Enrique,

No sé si tú también puedes ver los comentarios que le he escrito a Eduardo... Pero es una consulta que en general funciona bien, pero hay días concretos, con acciones concretas, que por el motivo que sea no funciona la consulta...

Lo que he hecho hasta ahora en esos casos es una exportación a excel de todos los registros cargados en la tabla original (que son más de 50.000), y una vez en Excel, los borro totalmente de Access. Cierro la bbdd, la vuelvo a abrir y cargo todos los datos de Excel de nuevo (los 50.000 registros). Una vez hecho esto, entonces sí, la consulta funciona correctamente... 

¿Misterios de la informática?

No, no veo ningún comentario o respuesta excepto esta petición de mas información por tu parte.

La informática tiene 'sus cositas' como todo lo que hacen los humanos, si la humanidad fuera perfecta, lo serian sus obras y acciones.

Con los datos aportados hasta el momento solo se me ocurre que a esa aplicación nunca la han compactado (y lo debe de estar pidiendo a gritos), la compactación no debería causar ningún problema, es una simple reconstrucción de los índices y las relaciones de los datos, acompañada del borrado de los restos y huecos que se crean al manipular los datos (consultas etc.).

Te recomendaría que cuando detectases ese problema con un par de click ejecutases la compactación y verificases si se resuelve el problema, de ser positiva la acción, plantearse el activar la compactación automática al cerrar la aplicación.

Ello no se contradice con que el primero o el ultimo lo sean en función del orden activo (según mis apreciaciones, Access no guarda el instante de la creación de un registro o su manipulación), pero de necesitarlo basta con añadir en la tabla un campo de tipo date que por defecto tome la fecha/hora del evento.

No es muy fiel en las inserciones masivas, en un segundo (el mismo segundo) pueden insertarse muchos registros, pero en un uso normal cumple con lo que promete.

Gracias, Enrique. Voy a hacer la compactación ahora, y la dejaré programada, tal como me sugieres, para que se realice al cerrar la aplicación.

Lo que copié en la otra respuesta, son los diseños de las tablas y consultas con las que trabajo, y lo que me sucede al ejecutarlas. Te lo copio también aquí, por si algo te llamase la atención, aunque lo que me comentas de la compactación, es verdad que no la he hecho nunca, y seguramente los errores, siendo así aleatorios, tengan que ver con ello.

Mi tabla original, es esta:

Los datos cargados ayer, puedo verlos en esta consulta:

Como ves, la mayoría de los IDs de ayer terminan en 483.

La consulta del último ID, es esta (es el último, el último menos 1 -para que lo compare con el dato de ayer, o el último anterior, digamos, y el último menos 2, para tener la misma comparación con el día anterior).

Y aquí la verás ejecutada y verás como, en algunos de los casos sí toma los *483 pero en otros se queda en los *482..

Verifica si la compactación resuelve el problema y publica el resultado por si se necesita algo más.

Por curiosidad ojeare lo que has añadido en el hilo por si puedo aportar algo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas