Access - Cambiar filtro de una consulta en un evento para subinforme dinámico

   
Vista:

Cambiar filtro de una consulta en un evento para subinforme dinámico

Publicado por Alejandro alejandro.rf91@gmail.com (7 intervenciones) el 13/09/2017 10:27:47
Hola a todos, programadores!

Tengo una cuestión que quiero preguntaros sobre access, relacionada con consultas e informes, la cual voy a intentar explicar brevisimamente ya que si te extiendes mucho sueles confundir.

Tengo una tabla, (DNAS), simple, con un montón de campos pero voy a poner los importantes. Como dato os digo que es una tabla de pacientes de hospital (así lo visualizareis mejor). Quedémonos con estos datos:

- ID
- NOMBRE
- EDAD
- SEXO
- DNI
- FAMILY_ID (muy importante)
- OBSERVACIONES (comentario sobre si el paciente tiene enfermedades o no)

*Campo importante el FAMILY_ID, ya que esto es un número que relaciona un registro con otro que puede tener el mismo FAMILY_ID (en la misma tabla), es decir, que por ejemplo todos los registros con FAMILY_ID = 140 corresponden a miembros de la misma familia.

Mi formulario es un control ficha, para los que no sabéis lo que es, es una ventanita con el formulario para visualizar y/o añadir registros, con sus botoncitos de paciente anterior o siguiente, de nuevo registro, un desplegable con los nombres de todos los pacientes para seleccionar uno y ver sus datos, un cuadrito de búsqueda por DNI, etc, todo ello funcionando correctamente, PERO, como es un control ficha, puedes poner pestañas arriba del formulario que te dan acceso a otras ventanas, pero en el mismo formulario, las cuales si por ejemplo estas en el registro 3 y te vas a otra pestaña, se mantiene ese registro 3 ya que no estas saliendo del formulario ni nada, y lo quiero así por lo siguiente:

Lo que yo quería es, en mi control ficha, con 2 pestañas, la primera el formulario con todos los datos a rellenar o para visualizar o modificar, cosa que ya tengo hecha y todo bien, y en la otra pestaña, llamada "Familiares", quería pegar un informe (tipo lista hacia abajo), que me mostrara una lista de los familiares con todos sus datos en horizontal, del paciente que haya dejado seleccionado en la primera pestaña, es decir que tú por ejemplo te vas al registro 5 en la pestaña 1 "Datos paciente" y es pepito gonzalez perez y ves sus datos, y al dar a la pestaña "Familiares", se hiciera un evento que cogiera el campo FAMILY_ID (supongamos el "211"), y aplicara dicha cláusula WHERE a la consulta en la que se basa el formulario, para que siempre que se cambie de registro activo en el formulario, cambie el subinforme que tengo pegado en "Familiares" y así ver en una lista a todos los familiares de pepito gonzalez perez, él inclusíve, en vez de poner un botoncito que diga "Generar informe de familiares" donde sé que sería usando el OpenForm con el filtro que quisiera.

Básicamente estoy intentando que el subinforme que tengo en la pestaña "Familiares" sea dinámico en función del parámetro del FAMILY_ID, aplicando el filtro a la consulta y dando algún tipo de orden de comando para cambiar la propiedad del filtro de la consulta o algo así.

Lo único que había pensado es, que el evento donde tiene que aplicarse el filtro o bien lo pongo cuando se clikea la pestaña "Familiares", o bien en cada botón que me cambie de registro, (paciente siguiente, anterior, el desplegable con los pacientes, el buscador por dni, etc).

Buscando por la red solo encuentro soluciones referidas a generar el informe con el filtro que quiera haciendo lo de OpenForm con filtros, pero lo que quiero es que mi subinforme cambie nada mas cambiar el registro activo. No sé si se podrá cambiar la propiedad filtro de una consulta, o hay que hacer algo raro al crear la consulta, ya que de momento la tengo creada y asociada al informe, pero me suelta todos los registros porque no sé como meter ahi el WHERE "dinámico".

Espero que lo hayáis entendido, normalmente me dicen que se me da bien explicar los problemas pero si necesitais que suba alguna foto y explicarlo con ellas, decídmelo y lo hago, aunque os advierto que en el formulario tengo muchisimos mas campos, lo he simplificado para pedir ayuda.

Muchas gracias de antemano y espero que mi duda sea constructiva.
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
Imágen de perfil de Oscar Pérez

Cambiar filtro de una consulta en un evento para subinforme dinámico

Publicado por Oscar Pérez (38 intervenciones) el 14/09/2017 10:26:47
Buenas!

Yo lo que haría sería lo siguiente: En el evento change() del control ficha principal (que yo la llamo "Pacientes"), cuando pulses la pestaña "Familiares" genera el código que te cambie el origen del registro del subinforme aplicando el filtro por el FAMILY_ID... Y listo! :P

1
2
3
4
5
6
7
8
9
Private Sub Pacientes_Change()
 
Select Case (Pacientes.Pages(Pacientes.Value).Name) '-> Con esto sabemos la pestaña que has pulsado
Case "Familiares":
     SubInforme.RecordSource=("SELECT * FROM Pactientes WHERE FAMILY_ID=" & Pacientes.Family_ID)
     SubInforme.Requery '-> Quizás no te haga falta pero por si acaso XD
End Select
 
End Sub

Te lo estoy escribiendo todo sobe la marcha y de memoria, supongo que funcionará, con algunas modificaciones...

No me gusta hacer las cosas por los demás, creo que es más práctico dar la idea y que sea el propio programador el que la desarrolle para conseguir lo que necesita.

Saludos!
Óscar.
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