Crear un filtro múltiple dentro de un informe

Estoy realizando un informe y desearía poder realizar un filtro que me pudiera seleccionar más de un registro a la vez. Como ejemplo, tenemos un registro del estado de unos proyectos: En estudio, aprobado, finalizado y descartado. Lo que me gustaría es poder por ejemplo realizar un filtro de por ejemplo aprobados y finalizados a la misma vez. ¿Es posible hacerlo a través de los botones de controles y insertando una macro?

1 Respuesta

Respuesta
2

si la sistemática de este ejemplo puede ayudarte: http://bit.ly/1EbDYBN

Muchas gracias Neckkito.

Haciendo referencia al ejemplo, si quisiera repetir el filtro del continente, es decir, seleccionar Europa y Asia a la vez para filtrar los registros como lo debería hacer? Este es el tipo de filtro que me gustaría conseguir.

Saludos.

La construcción de un filtro múltiple es, simplemente, la construcción de una cadena de texto con operadores lógicos.

Si yo quiero filtrar por un país, escribo, por ejemplo:

miFiltro= " WHERE Pais='Alemania'"

Si yo quiero filtrar por país y población, por ejemplo:

miFiltro = " WHERE Pais='Alemania' AND Poblacion>10000"

Y con esta misma lógica aplicas la construcción a tu cadena, independientemente del elemento que sea. Si quieres dos países pues los tratas como dos elementos a añadir en el filtro:

miFiltro= " WHERE Pais='Alemania' AND Pais='Francia' AND Poblacion>1000"

La mecánica del ejemplo lo que te explica es la construcción de esa cadena, pero teniendo en cuenta que puede haber valores nulos, con lo cual la cadena debe ir construyéndose en función de si el valor es nulo o no (la sintaxis de la SQL debe adaptarse a esas condiciones).

Saludos. Neckkito

No me aparece mi anterior respuesta, así que la vuelvo a escribir por si las moscas.

Te decía que la construcción del filtro es la construcción de una cadena con operadores lógicos. Si yo quiero filtrar por un país escribo:

miFiltro= " WHERE Pais='Alemania'"

Si quiero filtrar por población añado a la cadena un operador lógico y la condición, así:

miFiltro= " WHERE Pais='Alemania' AND Poblacion>10000"

Si quiero añadir cualquier otro elemento basta seguir con la misma mecánica. Y si quieres repetir el país lo tienes que tratar como si fuera una condición mas:

miFiltro= " WHERE Pais='Alemania' AND Pais='Francia' AND Poblacion>10000"

El ejemplo lo que hace es escribir esa cadena de filtro con los parámetros que se proporcionan, teniendo en cuenta que puede haber algunos de esos parámetros en blanco, con lo cual la cadena debe escribirse de una manera u otra.

Un saludo. Neckkito

Sigue sin salirme la respuesta (ya van dos). Así que lo pruebo por este otro medio:

No me aparece mi anterior respuesta, así que la vuelvo a escribir por si las moscas.

Te decía que la construcción del filtro es la construcción de una cadena con operadores lógicos. Si yo quiero filtrar por un país escribo:

miFiltro= " WHERE Pais='Alemania'"

Si quiero filtrar por población añado a la cadena un operador lógico y la condición, así:

miFiltro= " WHERE Pais='Alemania' AND Poblacion>10000"

Si quiero añadir cualquier otro elemento basta seguir con la misma mecánica. Y si quieres repetir el país lo tienes que tratar como si fuera una condición mas:

miFiltro= " WHERE Pais='Alemania' AND Pais='Francia' AND Poblacion>10000"

El ejemplo lo que hace es escribir esa cadena de filtro con los parámetros que se proporcionan, teniendo en cuenta que puede haber algunos de esos parámetros en blanco, con lo cual la cadena debe escribirse de una manera u otra.

Un saludo. Neckkito

Adjunto una imagen para que se pueda entender mejor mis dudas. Me gustaría poder realizar un filtro múltiple con estos botones en el cuál al seleccionar a la vez distintos botones se realizará un filtro de los registros. Por ejemplo, que al seleccionar En ejecución y Aprobado aparecieran solamente los registros con este status. Y además me gustaría saber que filtro sería necesario para recuperar todos los registros solamente del registro Status sin ver afectado otros filtros de otros datos ya aplicados.

En el ejemplo que te pasé tienes la base para hacerlo. Así que mi respuesta es que inviertas un poco tu tiempo entendiendo cómo se hace, que el ejemplo está explicado, y luego lo apliques, adaptándolo a tus necesidades.

Dudo que nadie quiera hacer el trabajo por ti ;-)

Saludos. Neckkito

Solo solicitaba un ejemplo más especifico en el caso de hacer los filtros a través de los botones y que se pudiera apretar más de uno a la vez, ya que desconozco totalmente la base de creación de códigos a través del Virtual Basic. 

Saludos

Pues lamento no poder seguir ayudándote con este tema, pero lo que pides requiere una inversión importante de tiempo. Solo te puedo decir que sencillo no es, y más si encima quieres utilizar botones de alternar.

Para que veas lo que se necesita para lanzar un triste mensaje con dos tristes botones de alternar ahí tienes un ejemplo: http://www.mediafire.com/download/cdkrrm47wfus0dn/MLuceno.BtnAlt.zip

No te digo nada si quieres usar ocho botones de alternar y encima no sé qué de que se mantengan los filtros existentes... Y si no tienes idea de VBA... pues peor me lo pones.

De todas maneras en este ejemplo verás cómo controlar los valores que te devuelven los botones de alternar pulsados o no, por si te sirve de ayuda.

Un saludo. Neckkito.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas