¿Cómo Refrescar una Consulta SQL Access 2010?

Estoy trabajando con Access 2010 y tengo un duda que no consigo encontrar en el foro.

Desde un formulario, en formato "Hoja de Datos", que muestra una lista de números de lote, he creado un evento "al hacer doble click" de tal forma que al hacer doble-click sobre un lote cualquiera, abre una consulta SQL que muestra los resultados (análisis) de ese lote (esta información viene de otra tabla, y ambas tablas esta unidas precisamente por el nº de lote)

Hasta aquí todo bien, la consulta se abre y los resultados que muestra, son los de lote donde hacemos doble click (la condición "where" funciona bien :-) ).

Mi problema esta en el "Refresh o Requery", es decir, si tras hacer doble-click en un lote, hago lo mismo sobre otro, mi Query no se actualiza, sigue abierta, mostrando los resultados del primer lote.

¿Cómo tengo que operar para que Access refresque la consulta con cada nueva elección de un lote en mi formulario?

He visto Macros, y código Vba para hacer lo que se llama "Requery" pero no se muy bien como tengo que construirlo en este caso.

3 Respuestas

Respuesta
1

Creo que hay algo que no he explicado bien, voy a intentarlo de nuevo.

La idea sería que desde el Formulario abrieras un lote, vieras los resultados de los analisis de ese lote, y una vez has realizado tus comprobaciones pudieras hacer "doble-click" en otro lote a modo de seguir viendo información del mismo.

Es decir, quiero lanzar la consulta, pero es que esta no se cierre al poco de abrirla, sino que se quede mostrando la información del lote indicado, hasta que no se seleccione otro lote diferente, momento en el cual, debe mostrar la información del nuevo lote seleccionado.

Respuesta
2

Raul: en ese código que ya parece ser que tienes, sondea primero si la consulta está abierta, si lo está, ciérrala y vuelves a abrirla. Se te refrescarán los Datos de acuerdo al WHERE actual.

Mis saludos >> Jacinto

Raul: Se me ha pasado comentarte, que no trabajo con Macros incrustadas, pero en VBA, si quieres hacer el "Sondeo, que te comentaba, create una Función simple y así te queda para todas las Consultas. Ejemplo

Public Function IsOpen(LaConsulta As String) As Boolean
If SysCmd(acSysCmdGetObjectState, acQuery, LaConsulta) <> 0 Then IsOpen = True
End Function

Para llamarla, en el Evento que mejor te vaya a tí >>

'*****
'---------
If IsOpen("QryAlgo") Then DoCmd.Close acQuery, "QryAlgo"
'''''

Lógicamente "QryAlgo" es el Nombre de la Consulta. Mis saludos >> Jacinto

Raul: Después de tu aclaración, creo que si lo expusiste adecuadamente, y personalmente sigo opinando igual que en mi respuesta anterior.

La solución que te apunto, (que no necesariamente ha de ser la única que existe), no tiene temporizador. Estará en pantalla el tiempo que tu quieras y hasta que la cierres tu manualmente o pulses otra opción. Si sigues interesado y tienes dificultades en interpretar lo que te comenté, puedo prepararte un ejemplo sencillo. Espero tus noticias >> Jacinto

Hola Jacinto.

Gracias por la explicación.

Sino fuera mucho pedir, ese ejemplo me vendría francamente bien. Aún estoy aprendiendo vba y aunque soy capaz de entender el código y lo que hace, implementarlo yo aún me cuesta bastante... sobretodo el tema de llamadas a funciones desde otros procedimientos, etc...

Sinceramente se me da mejor SQL jejej-....

Raúl: En éste enlace tienes el ejemplo.

http://www.mediafire.com/file/x29en7gs8xj6238/CierraQrySiAbierto.rar 

Ya me contarás. Saludos >> Jacinto

¡Gracias!

Hola Jacinto!

Funciona perfectamente, entiendo que básicamente lo que le dices es que cierre la consulta y la vuelva abrir, ¿tomando así el nuevo valor de entrada no?, es como engañarle..

Respecto a la función SysCmd no la había usado nunca, pero parece interesante, encontré este link:

http://www.techrepublic.com/article/use-this-handy-function-to-determine-an-access-objects-state-and-view/ 

Raúl: Me alegra el que tengas ese problema solucionado. Ciertamente hace lo que dices de cerrar la consulta y volverla a abrir, pero "solo" si está abierta. Y como una cosa lleva a otra:

Muy explicativo e interesante el Link que citas. Seguro que va a servir de de ayuda.

Mis saludos >> Jacinto

Respuesta
2

Si la consulta la mantienes abierta, entre le primer doble click y el segundo, no se actualizará a menos que pulses F5 teniéndo la consulta activa.

Mi sugerencia es que te asegures, en el evento doble click del formulario, de cerrarla y abrirla de nuevo, así siempre se abrirá con los datos más recientes. Como no sé si lo haces por código o una macro, no te puedo decir la instrucción, pero no creo que tengas dificultades para hacerlo solo.

Un saludo


Añade tu respuesta

Haz clic para o

Más respuestas relacionadas