Access - Refrescar Query dependiendo del valor de un Combobox

Tengo 2 tablas, de las cuales genere un Query manualmente.

En access 2007 lo puedo ver de lado izquierdo.

Tengo un subform que enlaza los datos de la query con mis textbox puestos en el formulario.

Cuando corro mi formulario, puedo ver los datos como si fueran Datagrid.

Quiero que en el combobox cuando cambie de valor, solo me muestre los valores que selecciono.

Por ejemplo:

Me muestra:

Maquina - Status

A_01 - Online

A_02 - Online

Mi Combobox esta en "Online". Cuando cambie a "Offline", quiero que mi query se de Refresh y solo me muestre los Offline.

Para la sentencia manual de Query que genere por fuera de VBA y el formulario es la siguiente:

SELECT tb_machine.machine_name, tb_status.status, tb_machine.[Ultimo Registro]
FROM tb_machine, tb_status
WHERE tb_machine.status=tb_status.id_status;

1 Respuesta

Respuesta
2

En el evento "Después de actualizar" de tu combobox, le generas este código en VBA:

Me.NombreSubformulario.Form.Requery

Cambiando lo que está en negrita por el nombre de tu subformulario (que entiendo que es lo que quieres actualizar)

Existe alguna manera de compartirte este archive vía e-mail, tal vez me puedas ayudar un poco más, soy algo Nuevo en esto y no logro entender eso que me indicas.

1º/ abre tu formulario en vista diseño

2º/ colócate sobre el combobox y haz click derecho con el ratón sobre él.

3º/ vete a propiedades y luego a la pestaña Eventos

4º/ localiza el que se llama "Después de actualizar" y pulsa el botón con los 3 puntos que aparece a su derecha.

5º/ en la ventana selecciona Generador de código.

6º/ se te abrirá el editor de VBA, y entre las lineas Private Sub... y End sub que te aparecen, pega el código que te puse arriba.

7º/ guarda los cambios y listo.

Si no lo consigues, sube una copia de tu archivo a dropbox, mega o similar y me pones aqui el enlace de descarga. Pero primero inténtalo, que es cómo se aprende.

Bien mira:
Private Sub cmb_status_AfterUpdate()
    Me.zfrmStatus.Form.Requery
End Sub
Estoy algo mas cerca, pero se que me faltan ciertas, cosas pero hay mucho que explicar de este archivo... empezando desde el momento en que no pude generar un Datagrid y tuve que crear un subformulario que se asemeje a un datagrid, insertando en este textbox de manera que la query traiga todos los datos.

La query esta fuera del formulario VBA, entonces la sentencia que anteriormente puse, nisiquiera esta en el Form_Load, entonces cuando abro mi form, automaticamente el Subform trae la query.

No se como enlazar mi combobox dentro del formulario con la sentencia SQl que esta afuera.

Incluso creo que la sentencia esta equivocada en la parte de "Where" debido a que me trae como si mostrara un "Show All", y solo quiero que me muestre el valor que busco.

Aqui el link:

https://www.dropbox.com/s/5uedqouo3i4lk6e/Database3%20%283%29.zip?dl=0 

http://www.filebig.net/files/2iUJ3FR2j4 

Tenías mal la consulta base del subformulario (qry_bitacora) por eso no te filtraba bien.

Ahora la consulta lleva como criterio el valor seleccionado en el combo, además de relacionar correctamente las dos tablas.

En cuanto al código, solo tienes que añadirle en el evento al cargar del formulario una llamada al evento despues de actualizar del combo.

Me has dejado asombrado!

Bastante bien! la verdad! y lo has solucionado en minutos.

Unicamente al abrir zfrmMain, para ejecutar mi formulario, me pide un valor al principio, como si fuera un Inputbox, alguna manera de quitar esto? Lei lo de al tener un form_load, actualizar el combo, solo que aun lo del principio me quedo duda.

Por mi logica, estoy pensando que es por que el Query busca un valor del ComboBox y este aun no ha sido cargado y entonces busca que valor y te pide que ingreses uno.. Si escribimos "Operacion" funciona.. pero no quiero tener que escribir nada entre cambio y cambio... estoy analizando esto tambien...

Imagino que querrás decir que el inputbox te sale al abrir directamente el subformulario (zfrmStatus), porque a mi zfrmMain me abre correctamente.

Prueba esto:

1º/ borra de qry_bitacora el criterio

2º/ en zfrmMain cambia el código de Despues de actualizar del combo que tienes ahora por este otro:

Private Sub cmb_status_AfterUpdate()
Me.zfrmStatus.Form.RecordSource = "SELECT tb_machine.machine_name, tb_status.status, tb_machine.[Ultimo Registro] " _
& "FROM tb_machine INNER JOIN tb_status ON tb_machine.Status = tb_status.ID_Status " _
& "WHERE tb_status.Status = '" & Me.cmb_status & "'"
Me.zfrmStatus.Form.Requery
End Sub

De esta manera cada vez que actualices el combo se te refresca el subformulario

¡Gracias! 

Muchisimas Gracias!!

Me gustaria añadirte por si algun dia mas adelante llegase a tener alguna duda, seguro recurro a ti !!

Gracias!! quedo Excelente!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas