SlideShare una empresa de Scribd logo
1 de 15
Filtros en Access 2007
Access 2007 incorpora importantes herramientas para facilitar que el usuario pueda realizar filtros
complejos sobre formularios, incluso sobre informes, de una manera manera muy sencilla, tanto que uno
se pregunta si merece la pena continuar con los procedimientos que, durante años, hemos ido añadiendo a
nuestras aplicaciones para filtrar.
Para muestra vale un botón (el de filtro):
Con sólo posicionarnos en un campo de un formulario, en este caso de fecha, y pulsar el botón de Filtro
que encontramos en la Cinta de Opciones, Access despliega una abrumadora relación de opciones para
filtrar el formulario por el campo en el que nos encontramos.
Las opciones que se despliegan varían según el campo por el que vamos a filtrar sea numérico, de texto o
de fecha.
Varias maneras de acceder a las
herramientas de filtro
Usando el menú contextual
Pulsando con el botón derecho del ratón sobre un control del formulario, se despliega un menú contextual
que, además de las opciones de edición y orden, muestra las de filtro. Son muy parecidas a las que hemos
visto antes con el botón de filtro de la cinta de opciones, pero falta el combo multivalor y se añade la
opción de filtro por selección, es decir, el valor actual del control como opción de filtro igual, distinto,
mayor o menor.
Dos posibilidades de herramientas de filtro casi iguales, pero distintas. El caso es que el menú contextual
no está disponible con la runtime de Access y el Ribbon no es accesible en los formularios emergentes :-(
Sin embargo, podemos invocar el menú de filtro (el del Ribbon) posicionándonos el cualquier control y
usando el código:
DoCmd.RunCommand acCmdFilterMenu
Y, si lo queremos que se mueste es el menú contextual, podemos usar:
CommandBars("Column Filter").ShowPopup
Usando el Ribbon
En el grupo de la Cinta de Opciones Ordenar y Filtrar, no sólo tenemos el botón de filtro que veíamos
antes. Los botones Selección y Avanzadas despliegan una serie de opciones que ya existían en versiones
anteriores de Access.
 Las opciones de Selección ya existían en versiones anteriores, salvo la última, Entre…, también
disponible en el menú contextual y en el botón de filtro, bastante novedosa y útil: muestra un
cuadro de diálogo con dos cuadros de texto para indicar los límites de un rango por el que filtrar.
La imagen es para un rango de fechas, pero también existe para un rango de números. No existe para
texto, aunque para texto hay otras alternativas.
 Desplegando el botón Avanzadas encontramos Filtro por formulario y Filtro
avanzado/Ordenar. Son viejos conocidos de versiones anteriores; el primero presenta el
formulario en una vista especial para introducir criterios y el segungo muestra la cuadrícula QBE
para editar el text SQL correspondiente al filtro.
Son herramientas mas complicadas de usar que las nuevas de 2007, pero siguen siendo necesarias si
queremos manejar cierta complejidad.
Mediante las herramientas del botón de Filtro del Ribbon o del menú contextual, los distintos criterios de
filtro se van concatenando con AND sin opciones de usar OR y sin mostrar una vista conjunta de los
distintos criterios que se están aplicando. No es necesario elegir entre una y otras, pues se pueden ir
complemantando: el filtro que hayamos creado con el menú desplegable podemos editarlo con Filtro por
formulario o con Filtro avanzado/Ordenar para hacerlo más complejo.
Alternar el filtrado
Al filtrar, se resalta en naranja un nuevo botón poniendo “Filtrado” en la barra de navegación del
formulario :
Pulsando sobre él, se desactiva el filtro y cambia el texto del botón a “Sin filtrar”. Si volvemos a pulsar,
se vuelve a activar el filtro y a cambiar el texto. Es decir, el botón sirve para alternar la propiedad
FilterOn del formulario.
Pero aún afina más. Como hemos visto, los criterios de filtro se van acumulando con AND, de manera
que un formulario puede estar filtrado por varios criterios; pues bien, ir eliminando selectivamente esos
criterios es tan sencillo, como volver a posicionarse sobre el control con el que habíamos filtrado y pulsar
de nuevo el botón derecho del ratón, se mostrará entonces una opción en el menú desplegable para quitar
ese criterio.
Filtros en hojas de datos
Los menús de filtro también están disponibles en las vistas de hojas de datos de tablas y consultas, sin
necesidad de que se trata de un subformulario. Además, están directamente accesibles ambos menús de
filtro, el contextual y el que veíamos desde el Ribbon, para el primero usando el botón derecho del ratón
y, para el segundo, pulsando sobre el pequeño triángulo con un vértice hacia abajo que aparece junto al
nombre de cada campo.
Al aplicar el filtro, junto nombre del campo que hemos usado aparece un minúsculo icono de filtro
Y, si pulsamos en él se despliega el menú de filtro con, entre otras, la opción para quitar el filtro por ese
campo.
Filtros en informes
Algo sorprendente en Access 2007 es que los informes también pueden filtrarse dinámicamente de la
misma manera que hacemos en un formulario. Como veíamos en un artículo anterior, existen Nuevas
vistas de informe en Access 2007 distintas de la Vista Preiliminar.
Si abrimos nuestro infrome como Vista Informe, se presenta de una forma peculiar, sin opciones de
impresión o vista previa y sin saltos de página, pero con algunas opciones propias de los formularios,
como la posibilidad de seleccionar y copiar texto, etiquetas inteligentes o las opciones de filtro, todas las
que hemos visto antes para filtrar informe. Una vez filtrado, podemos imprimirlo directamente utilizando
Botón de Office | Imprimir o pasar a la Vista Preliminar desde la opción Vistas del Ribbon.
Un poco de código
Menú de filtro en formularios emergentes
La cinta de opciones no está disponible si estamos utilizando un formulario emergente, por lo tanto, no
podemos usar el menú de filtro propio de esa cinta, salvo que lo hagamos por código:
Private Sub Filtro_Click()
Dim ctrl As Control
On Error GoTo Filtro_Click_Error
Set ctrl = Screen.PreviousControl
ctrl.SetFocus
DoCmd.RunCommand acCmdFilterMenu
On Error GoTo 0
Exit Sub
Filtro_Click_Error:
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure
Filtro_Click of Documento VBA Form_Detalles de empleados"
End Sub
El mismo botón sirve para filtrar en el formulario principal o en un subformulario. Sólo es cuestión de
posicionarse previamente en el campo por el que queremos filtrar
Aprender de Access
Resulta un ejercicio interesante ver cómo los menús de filtro de Access construyen los criterios de filtro.
Para ello, en un formulario para ensayos añadimos un cuadro de texto txtFiltro y el siguiente código:
Private Sub Form_ApplyFilter(Cancel As Integer, ApplyType As Integer)
Me.txtFiltro = Me.Filter
End Sub
De esta manera, cada vez que apliquemos un filtro, veremos el criterio que se ha generado.
(([Productos].[Categoría]="Bebidas"))
AND ([Productos].[Costo estándar]<=13.5)
Observamos que, a medida que vamos filtrando, se van añadiendo cadenas de filtro unidas por AND, lo
cual era perfectamente previsible. Claro, que sólo cabe unir los distintos criterior con AND y a lo mejor
nos interesa unir alguno con OR. Con un par de líneas nás de código podemos hacer que, si editamos el
texto que nos muestra el filtro, éste se convierta en el nuevo filtro de nuestro formulario.
Private Sub txtFiltro_AfterUpdate()
Me.Filter = Me.txtFiltro
Me.FilterOn = True
End Sub
Desplegable Multivalor para filtrar
Resulta curioso observar cómo la sintáxis va cambiando según la cantidad y proporción de elementos que
vayamos seleccionando para filtrar en el desplegable multivalor del menú de filtro.
Las distintas selecciones provocan distintos criterios de filtro según se haya seleccionado un sólo
elemento o unos pocos, o todos menos uno o todos menus unos pocos. Los criterios generados son las
siguientes.
([Empleados ampliados].[Apellidos]="Acevedo")
([Empleados ampliados].[Apellidos] In ("Acevedo","Bonifaz","Jesús Cuesta"))
([Empleados ampliados].[Apellidos]<>"Chaves" Or [Empleados
ampliados].[Apellidos] IS Null)
([Empleados ampliados].[Apellidos] Not In ("Chaves","Jesús Cuesta") Or
[Empleados ampliados].[Apellidos] IS Null)
Filtrando campos multivalor
Nada de todo esto nos resulta novedoso, así que vamos a ver cómo se generan los filtros con campos
multivalor, específicos de Access 2007.
En el menú contextual de filtro elegimos el valor actual de nuestro campo multivalor: “Contiene
Proveedor D; Proveedor F”. Filtramos y vemos que el filtro generado es el siguiente:
([Lookup_Supplier IDs].[Compañía]="Proveedor D"
AND [Lookup_Supplier IDs].[Compañía]="Proveedor F")
LookUP
Es decir, que ha concantenado con AND los distintos valores de nuestro campo multivalor, algo
previsible. Sin embargo, si nos fijamos, nuestro campo se llama [Supplier IDs] mientras que el nombre
que aparece es [Lookup_Suplier IDs], o sea, lo mismo pero con un “LookUp_” delante. Eso me suena de
versiones anteriores utilizando “Filtro por formulario”…
Utilizando la herramienta de filtro “Avanzadas | Filtro avanzado/Ordenar…” vamos a verlo por dentro.
Esa herramienta se encuentra en el Ribbon y, como estamos en un formulario emergente, no podemos
acceder a ella, de manera que, o bien quitamos la propiedad Emergente al formulario y seleccionamos la
opción correspondiente en el Ribbon…
O bien añadimos un botón que llame a la herramienta mediante código:
Private Sub FiltroAvanzado_Click()
DoCmd.RunCommand acCmdAdvancedFilterSort
End Sub
De cualquiera de las dos maneras el resultado será que se muestre el diseñador gráfico de consultas con el
filtro actual
Observamos que a la tabla origen de nuestro formulario, Productos, se le ha relacionado una tabla o
consulta llamada Lookup_Supplier IDs y que coinciden con los campos que se encuentran en el Origen
de la Fila del cuadro combinado que usamos para la búsqueda de Id de Proveedores. Recordemos que,
para que un campo sea Multivalor, en el diseño de la tabla, en la pestaña “Búsqueda” debemos usar un
cuadro combinado con un origen válido y Permitir varios valores.
Por lo tanto, el filtro con Lookup se usa en los campos multivalor porque son cuadros combinados. La
sintáxis, si queremos crear nuestro propios criterios con Lookup_ , sería algo así:
([Lookup_NombreControl].[NombreColumnaMostrada]="Criterio filtro")
Usando el operador "=" no deja de ser una chorradita, pues para eso podemos buscar directamente por el
campo dependiente. Pero si usamos "Like" o cualquier otro operador en su lugar, la cosa cambia, pues el
filtro se hace por la columna mostrada que no está en el origen de datos del formulario filtrado.
Evidentemente, esto es una gran ventaja a la hora de construir un filtro.

Más contenido relacionado

Similar a Filtros en Access 2010.docx

Similar a Filtros en Access 2010.docx (20)

Lolol
LololLolol
Lolol
 
Archivo
ArchivoArchivo
Archivo
 
FILTROS
FILTROSFILTROS
FILTROS
 
Guia#4 formularios
Guia#4 formulariosGuia#4 formularios
Guia#4 formularios
 
Formularios
FormulariosFormularios
Formularios
 
Lolol
LololLolol
Lolol
 
22. manejo de filtros y ordenación de datos
22. manejo de filtros y ordenación de datos22. manejo de filtros y ordenación de datos
22. manejo de filtros y ordenación de datos
 
Ficha de Desarrollador(Developer tab)
Ficha de Desarrollador(Developer tab)Ficha de Desarrollador(Developer tab)
Ficha de Desarrollador(Developer tab)
 
Daniel eduardo llano garzón
Daniel eduardo llano garzónDaniel eduardo llano garzón
Daniel eduardo llano garzón
 
Daniel eduardo llano garzón
Daniel eduardo llano garzónDaniel eduardo llano garzón
Daniel eduardo llano garzón
 
Unidad 11
Unidad 11Unidad 11
Unidad 11
 
Filtros en excel
Filtros en excelFiltros en excel
Filtros en excel
 
Archivos
ArchivosArchivos
Archivos
 
Unidad 11
Unidad 11Unidad 11
Unidad 11
 
Tp n 6 computacion
Tp n 6 computacionTp n 6 computacion
Tp n 6 computacion
 
Herramientas de calc
Herramientas de calcHerramientas de calc
Herramientas de calc
 
Filtros excel
Filtros excelFiltros excel
Filtros excel
 
FILTROS EN EXEL
FILTROS EN EXELFILTROS EN EXEL
FILTROS EN EXEL
 
Filtros excel
Filtros excelFiltros excel
Filtros excel
 
Filtros
FiltrosFiltros
Filtros
 

Más de ORLANDOMEDINACARDENA (13)

Info_Access.docx
Info_Access.docxInfo_Access.docx
Info_Access.docx
 
CURSO DE ACCESS.docx
CURSO DE ACCESS.docxCURSO DE ACCESS.docx
CURSO DE ACCESS.docx
 
SILABO.docx
SILABO.docxSILABO.docx
SILABO.docx
 
MANEJO_DE_ACCESS_2010.doc
MANEJO_DE_ACCESS_2010.docMANEJO_DE_ACCESS_2010.doc
MANEJO_DE_ACCESS_2010.doc
 
FORMULARIOS.pptx
FORMULARIOS.pptxFORMULARIOS.pptx
FORMULARIOS.pptx
 
CONSULTAS.pdf
CONSULTAS.pdfCONSULTAS.pdf
CONSULTAS.pdf
 
Especialista en-tecnologias-office
Especialista en-tecnologias-officeEspecialista en-tecnologias-office
Especialista en-tecnologias-office
 
Ejercicios de boton
Ejercicios de botonEjercicios de boton
Ejercicios de boton
 
Hardware monitores
Hardware monitoresHardware monitores
Hardware monitores
 
Virus y antivirus
Virus y antivirusVirus y antivirus
Virus y antivirus
 
Nuevopresentacindemicrosoftofficepowerpoint 140416142116-phpapp02
Nuevopresentacindemicrosoftofficepowerpoint 140416142116-phpapp02Nuevopresentacindemicrosoftofficepowerpoint 140416142116-phpapp02
Nuevopresentacindemicrosoftofficepowerpoint 140416142116-phpapp02
 
Flash
FlashFlash
Flash
 
Introduccion bd
Introduccion bdIntroduccion bd
Introduccion bd
 

Último

RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfMapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfvictorbeltuce
 
CIENCIAS NATURALES 4 TO ambientes .docx
CIENCIAS NATURALES 4 TO  ambientes .docxCIENCIAS NATURALES 4 TO  ambientes .docx
CIENCIAS NATURALES 4 TO ambientes .docxAgustinaNuez21
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para eventoDiegoMtsS
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxdanalikcruz2000
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...fcastellanos3
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDUgustavorojas179704
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdfOswaldoGonzalezCruz
 
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfBIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfCESARMALAGA4
 
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docxPLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docxJUANSIMONPACHIN
 
Procesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptxProcesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptxMapyMerma1
 
Fundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfFundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfsamyarrocha1
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressionsConsueloSantana3
 

Último (20)

RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
Earth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversaryEarth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversary
 
Sesión La luz brilla en la oscuridad.pdf
Sesión  La luz brilla en la oscuridad.pdfSesión  La luz brilla en la oscuridad.pdf
Sesión La luz brilla en la oscuridad.pdf
 
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfMapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
 
DIA INTERNACIONAL DAS FLORESTAS .
DIA INTERNACIONAL DAS FLORESTAS         .DIA INTERNACIONAL DAS FLORESTAS         .
DIA INTERNACIONAL DAS FLORESTAS .
 
CIENCIAS NATURALES 4 TO ambientes .docx
CIENCIAS NATURALES 4 TO  ambientes .docxCIENCIAS NATURALES 4 TO  ambientes .docx
CIENCIAS NATURALES 4 TO ambientes .docx
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para evento
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
 
Unidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDIUnidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDI
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
 
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfBIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
 
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdfTema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
 
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docxPLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
 
Procesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptxProcesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptx
 
Fundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfFundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdf
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressions
 

Filtros en Access 2010.docx

  • 1. Filtros en Access 2007 Access 2007 incorpora importantes herramientas para facilitar que el usuario pueda realizar filtros complejos sobre formularios, incluso sobre informes, de una manera manera muy sencilla, tanto que uno se pregunta si merece la pena continuar con los procedimientos que, durante años, hemos ido añadiendo a nuestras aplicaciones para filtrar. Para muestra vale un botón (el de filtro): Con sólo posicionarnos en un campo de un formulario, en este caso de fecha, y pulsar el botón de Filtro que encontramos en la Cinta de Opciones, Access despliega una abrumadora relación de opciones para filtrar el formulario por el campo en el que nos encontramos. Las opciones que se despliegan varían según el campo por el que vamos a filtrar sea numérico, de texto o de fecha.
  • 2. Varias maneras de acceder a las herramientas de filtro Usando el menú contextual Pulsando con el botón derecho del ratón sobre un control del formulario, se despliega un menú contextual que, además de las opciones de edición y orden, muestra las de filtro. Son muy parecidas a las que hemos visto antes con el botón de filtro de la cinta de opciones, pero falta el combo multivalor y se añade la opción de filtro por selección, es decir, el valor actual del control como opción de filtro igual, distinto, mayor o menor. Dos posibilidades de herramientas de filtro casi iguales, pero distintas. El caso es que el menú contextual no está disponible con la runtime de Access y el Ribbon no es accesible en los formularios emergentes :-( Sin embargo, podemos invocar el menú de filtro (el del Ribbon) posicionándonos el cualquier control y usando el código: DoCmd.RunCommand acCmdFilterMenu Y, si lo queremos que se mueste es el menú contextual, podemos usar: CommandBars("Column Filter").ShowPopup
  • 3. Usando el Ribbon En el grupo de la Cinta de Opciones Ordenar y Filtrar, no sólo tenemos el botón de filtro que veíamos antes. Los botones Selección y Avanzadas despliegan una serie de opciones que ya existían en versiones anteriores de Access.  Las opciones de Selección ya existían en versiones anteriores, salvo la última, Entre…, también disponible en el menú contextual y en el botón de filtro, bastante novedosa y útil: muestra un cuadro de diálogo con dos cuadros de texto para indicar los límites de un rango por el que filtrar. La imagen es para un rango de fechas, pero también existe para un rango de números. No existe para texto, aunque para texto hay otras alternativas.  Desplegando el botón Avanzadas encontramos Filtro por formulario y Filtro avanzado/Ordenar. Son viejos conocidos de versiones anteriores; el primero presenta el formulario en una vista especial para introducir criterios y el segungo muestra la cuadrícula QBE para editar el text SQL correspondiente al filtro. Son herramientas mas complicadas de usar que las nuevas de 2007, pero siguen siendo necesarias si queremos manejar cierta complejidad.
  • 4. Mediante las herramientas del botón de Filtro del Ribbon o del menú contextual, los distintos criterios de filtro se van concatenando con AND sin opciones de usar OR y sin mostrar una vista conjunta de los distintos criterios que se están aplicando. No es necesario elegir entre una y otras, pues se pueden ir complemantando: el filtro que hayamos creado con el menú desplegable podemos editarlo con Filtro por formulario o con Filtro avanzado/Ordenar para hacerlo más complejo. Alternar el filtrado Al filtrar, se resalta en naranja un nuevo botón poniendo “Filtrado” en la barra de navegación del formulario : Pulsando sobre él, se desactiva el filtro y cambia el texto del botón a “Sin filtrar”. Si volvemos a pulsar, se vuelve a activar el filtro y a cambiar el texto. Es decir, el botón sirve para alternar la propiedad FilterOn del formulario. Pero aún afina más. Como hemos visto, los criterios de filtro se van acumulando con AND, de manera que un formulario puede estar filtrado por varios criterios; pues bien, ir eliminando selectivamente esos criterios es tan sencillo, como volver a posicionarse sobre el control con el que habíamos filtrado y pulsar de nuevo el botón derecho del ratón, se mostrará entonces una opción en el menú desplegable para quitar ese criterio. Filtros en hojas de datos Los menús de filtro también están disponibles en las vistas de hojas de datos de tablas y consultas, sin necesidad de que se trata de un subformulario. Además, están directamente accesibles ambos menús de filtro, el contextual y el que veíamos desde el Ribbon, para el primero usando el botón derecho del ratón
  • 5. y, para el segundo, pulsando sobre el pequeño triángulo con un vértice hacia abajo que aparece junto al nombre de cada campo. Al aplicar el filtro, junto nombre del campo que hemos usado aparece un minúsculo icono de filtro Y, si pulsamos en él se despliega el menú de filtro con, entre otras, la opción para quitar el filtro por ese campo.
  • 6. Filtros en informes Algo sorprendente en Access 2007 es que los informes también pueden filtrarse dinámicamente de la misma manera que hacemos en un formulario. Como veíamos en un artículo anterior, existen Nuevas vistas de informe en Access 2007 distintas de la Vista Preiliminar.
  • 7. Si abrimos nuestro infrome como Vista Informe, se presenta de una forma peculiar, sin opciones de impresión o vista previa y sin saltos de página, pero con algunas opciones propias de los formularios, como la posibilidad de seleccionar y copiar texto, etiquetas inteligentes o las opciones de filtro, todas las que hemos visto antes para filtrar informe. Una vez filtrado, podemos imprimirlo directamente utilizando Botón de Office | Imprimir o pasar a la Vista Preliminar desde la opción Vistas del Ribbon. Un poco de código Menú de filtro en formularios emergentes La cinta de opciones no está disponible si estamos utilizando un formulario emergente, por lo tanto, no podemos usar el menú de filtro propio de esa cinta, salvo que lo hagamos por código: Private Sub Filtro_Click() Dim ctrl As Control On Error GoTo Filtro_Click_Error Set ctrl = Screen.PreviousControl ctrl.SetFocus DoCmd.RunCommand acCmdFilterMenu
  • 8. On Error GoTo 0 Exit Sub Filtro_Click_Error: MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure Filtro_Click of Documento VBA Form_Detalles de empleados" End Sub
  • 9.
  • 10. El mismo botón sirve para filtrar en el formulario principal o en un subformulario. Sólo es cuestión de posicionarse previamente en el campo por el que queremos filtrar Aprender de Access Resulta un ejercicio interesante ver cómo los menús de filtro de Access construyen los criterios de filtro. Para ello, en un formulario para ensayos añadimos un cuadro de texto txtFiltro y el siguiente código: Private Sub Form_ApplyFilter(Cancel As Integer, ApplyType As Integer) Me.txtFiltro = Me.Filter End Sub De esta manera, cada vez que apliquemos un filtro, veremos el criterio que se ha generado.
  • 11. (([Productos].[Categoría]="Bebidas")) AND ([Productos].[Costo estándar]<=13.5) Observamos que, a medida que vamos filtrando, se van añadiendo cadenas de filtro unidas por AND, lo cual era perfectamente previsible. Claro, que sólo cabe unir los distintos criterior con AND y a lo mejor nos interesa unir alguno con OR. Con un par de líneas nás de código podemos hacer que, si editamos el texto que nos muestra el filtro, éste se convierta en el nuevo filtro de nuestro formulario. Private Sub txtFiltro_AfterUpdate() Me.Filter = Me.txtFiltro Me.FilterOn = True End Sub Desplegable Multivalor para filtrar Resulta curioso observar cómo la sintáxis va cambiando según la cantidad y proporción de elementos que vayamos seleccionando para filtrar en el desplegable multivalor del menú de filtro.
  • 12. Las distintas selecciones provocan distintos criterios de filtro según se haya seleccionado un sólo elemento o unos pocos, o todos menos uno o todos menus unos pocos. Los criterios generados son las siguientes. ([Empleados ampliados].[Apellidos]="Acevedo") ([Empleados ampliados].[Apellidos] In ("Acevedo","Bonifaz","Jesús Cuesta")) ([Empleados ampliados].[Apellidos]<>"Chaves" Or [Empleados ampliados].[Apellidos] IS Null) ([Empleados ampliados].[Apellidos] Not In ("Chaves","Jesús Cuesta") Or [Empleados ampliados].[Apellidos] IS Null) Filtrando campos multivalor Nada de todo esto nos resulta novedoso, así que vamos a ver cómo se generan los filtros con campos multivalor, específicos de Access 2007.
  • 13. En el menú contextual de filtro elegimos el valor actual de nuestro campo multivalor: “Contiene Proveedor D; Proveedor F”. Filtramos y vemos que el filtro generado es el siguiente: ([Lookup_Supplier IDs].[Compañía]="Proveedor D" AND [Lookup_Supplier IDs].[Compañía]="Proveedor F") LookUP Es decir, que ha concantenado con AND los distintos valores de nuestro campo multivalor, algo previsible. Sin embargo, si nos fijamos, nuestro campo se llama [Supplier IDs] mientras que el nombre que aparece es [Lookup_Suplier IDs], o sea, lo mismo pero con un “LookUp_” delante. Eso me suena de versiones anteriores utilizando “Filtro por formulario”… Utilizando la herramienta de filtro “Avanzadas | Filtro avanzado/Ordenar…” vamos a verlo por dentro. Esa herramienta se encuentra en el Ribbon y, como estamos en un formulario emergente, no podemos acceder a ella, de manera que, o bien quitamos la propiedad Emergente al formulario y seleccionamos la opción correspondiente en el Ribbon…
  • 14. O bien añadimos un botón que llame a la herramienta mediante código: Private Sub FiltroAvanzado_Click() DoCmd.RunCommand acCmdAdvancedFilterSort End Sub De cualquiera de las dos maneras el resultado será que se muestre el diseñador gráfico de consultas con el filtro actual Observamos que a la tabla origen de nuestro formulario, Productos, se le ha relacionado una tabla o consulta llamada Lookup_Supplier IDs y que coinciden con los campos que se encuentran en el Origen de la Fila del cuadro combinado que usamos para la búsqueda de Id de Proveedores. Recordemos que, para que un campo sea Multivalor, en el diseño de la tabla, en la pestaña “Búsqueda” debemos usar un cuadro combinado con un origen válido y Permitir varios valores. Por lo tanto, el filtro con Lookup se usa en los campos multivalor porque son cuadros combinados. La sintáxis, si queremos crear nuestro propios criterios con Lookup_ , sería algo así:
  • 15. ([Lookup_NombreControl].[NombreColumnaMostrada]="Criterio filtro") Usando el operador "=" no deja de ser una chorradita, pues para eso podemos buscar directamente por el campo dependiente. Pero si usamos "Like" o cualquier otro operador en su lugar, la cosa cambia, pues el filtro se hace por la columna mostrada que no está en el origen de datos del formulario filtrado. Evidentemente, esto es una gran ventaja a la hora de construir un filtro.