Refrescar una consulta desde un combi

Tengo un problema el cual todavía no he sido capaz de solucionar. Espero que puedas ayudarme.
Tengo una tabla (características) en el que uno de sus campos es el nombre de la máquina (MAQUINA). El número de maquinas es bastante grande. Tengo hecha una consulta a la que he llamado "Consulta Nombre Maquina" a la que le he puesto el siguiente criterio Como "*" & [Nombre Maquina:] & "*" Y Como "*" & [Maquina:] & "*" de esa forma, cuando la ejecuto me pide dos nombres que me ayudan a filtrar todos los posibles.
Tengo un formulario donde tengo que seleccionar el nombre de la maquina, para ello he creado un cuadro combinado basado en la consulta anterior. Así, selecciono la máquina de la lista del cuadro combinado de una forma muy rápida. Para que me permita realizar nuevas consultas he añadido el código Me. Refresh al evento "Al hacer Clic" del cuadro combinado.
El problema lo tengo cuando el resultado de la consulta es una lista vacía. Pues no me permite volver a realizar la consulta. He metido el código Me. Refresh en casi todos los eventos del cuadro combinado, pero me sigue sin funcionar.

1 respuesta

Respuesta
1
Si lo que necesitas es refrescar el contenido de la lista del cuadro combinado y ejecutar de nuevo la consulta de origen, tendrás que utilizar el método Requery del cuadro combinado como Cuadro. Requery
en su evento "al hacer click", este método también es válido para obligar a un formulario que vuelva a ejecutar su consulta de origen como Me. Requery.
Si no van por hay los tiros házmelo saber.
Hola Query
Pues no funciona. Si uso el método Cuadro.Requery o Me.Requery asociado al evento "al hacer clic" en el Combo lo que sucede es que, la primera vez funciona bien y se despliega el combo con todas las maquinas filtradas, pero al hacer click en la maquina que quiero seleccionar inmediatamente me vuelve a ejecutar la consulta. El método que si funciona es el Me.Refresh, pues cuando, después de haber ejecutado la consulta hago clic en la maquina que quiero seleccionar de la lista, me refresca la consulta, pero hasta que no vuelvo a hacer click en el sitio donde se abre el combo (el rectángulo con un pequeño triangulo invertido) no me vuelve a ejecutar la consulta (que es lo que yo quiero).
Como te comentaba el problema lo tengo cuando el resultado de la consulta es una lista vacía. Pues, probablemente, como no hay elemento para seleccionar no funciona. Lo que si que me acaba de funcionar (mientras te escribo estoy también con la base de datos) es añadir el Me.Refresh en el evento "al hacer doble clic". No es una solución muy elegante, pero funciona. Lo que pienso es que tal vez se podría hacer es, que si la respuesta de la consulta es una lista vacía, poner como primer elemento de esa lista, que en principio es una cadena vacía, el valor que muestra la ventana no desplegable del combo. Pero ahora mismo no se como hacerlo.
De todas formas muchas gracias.
Prueba esta opción que te comento, puede que te sirva.
Partiendo de la base de que la cantidad de pulsaciones sobre el botón del cuadro combinado durante su manejo es de 1 cada 2 clics (1er clic abre y segundo selecciona un elemento de la lista), se me ha ocurrido la idea de colocar en el evento MouseDown del cuadro combinado que cada 2 clics sobre el cuadro combinado refresque la lista.
Private Sub Cuadro_combinado0_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Static sw As Boolean
If Not sw Then
Me.Refresh
sw = True
Else
sw = False
End If
End Sub
Con lo que consigues es que siempre cada 2 clics se ejecute la consulta.
Hola Query
Lo primero darte las gracias. Lo segundo, decirte que esa solución que aportas, no funciona del todo bien. Efectivamente la consulta se vuelve a lanzar, pero cuando selecciono la maquina de la lista desplegable del combo, esa selección no se actualiza en la ventana del combo.
Como lo tengo resulto con lo del evento al clic y al doble clic, pues ya no te molesto más.
Repetirte las gracias por tu tiempo.
Un Saludo
Andrés

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas