Selección múltiple en cuadro de lista para filtrar consulta+informe

Siguiendo la pregunta de Gonzalo en este enlace, Tengo una BD donde hay un formulario donde hay un cuadro de lista con selección múltiple (llamado FiltroVol) y que en base a esta selección hay informe (que lanza a su vez una consulta) donde el criterio es el mismo.

El formulario y la consulta+informe con selección simple (1 registro) me funciona perfecto, pero cuando quiero seleccionar más de un registro para que la consulta+informe me filtre en base a más de 2 registros, no me funciona.

¿Qué debo hacer para integrar la selección múltiple en la consulta?

1

1 Respuesta

695.150 pts. No responderé preguntas de usuarios que no valoren las...

Directamente, como criterio en la consulta, dudo mucho que lo puedas hacer.

Pero también te digo, si lo que quieres es abrir el informe filtrado, no te hace falta filtrar la consulta, puedes hacerlo filtrando el informe al abrirlo, con lo que el código de la otra respuesta te sirve perfectamente (una vez adaptado a lo que tengas, y añadiendo otros criterios adicionales, si lo necesitas)

Habría otra opción, más "enrevesada", que sería modificar el diseño de la consulta por código, para ponerle en cada ejecución los valores que quieres que te filtre, con una sintaxis que la consulta entienda ( IN (valor1, valor2...) )

Un saludo.


Gracias por la respuesta!

Filtrar directamente al informe no se como se hace, como se tendria que hacer? En la consulta me interesa agrupar los registros (por meses, por ejemplo) también se puede hacer directamente en el informe?

sobre la opción In no me vale, porque los valores no los quiero escribir yo, si no que salgan de la BD (al actualizar un Excel) 

Muchas gracias.

Explícame un poco cómo tienes montada tu BD, porque hay cosas que dices que no me cuadran mucho...

Yo entiendo que tienes lo siguiente (además de las tablas, claro):

Una consulta (de datos agrupados, según tu última respuesta)

Un informe que muestra los datos de esa consulta

Un formulario con un cuadro de lista, desde el que abres el informe filtrado por lo que seleccionas en el cuadro de lista

¿Eso es así o no?

Si no lo es tienes que decirme a qué te refieres con que desde el informe se lanza una consulta...

Y si lo es, lo puedes solucionar construyendo el filtro a partir del código de la otra pregunta, y pasandoselo ala hora de abrir el informe con DoCmd. OpenReport. Algo así:

Dim ctlList As Control
Dim Opcion As Variant
Dim miSeleccion As String
Dim miFiltro As String
Set ctlList = Me.FiltroVol
' Recorres todos los elementos seleccionados
For Each Opcion In ctlList.ItemsSelected
   'Coges el valor y lo encadenas
    miSeleccion = miSeleccion & Me.FiltroVol.ItemData(Opcion) & ","
Next Opcion
'Quitas la última coma
miSeleccion = Left(miSeleccion, Len(miSeleccion) - 1)
'Aquí creas el filtro, para el campo que contiene los mismos datos que devuelve el cuadro de lista
miFiltro="[nombreCampo] IN (" & miSeleccion & ")"
'Abres el informe filtrado
DoCmd. OpenReport "NombreInforme", acViewPreview,, miFiltro

El código yo se lo pondría al evento "al hacer click" de un botón...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas