Académique Documents
Professionnel Documents
Culture Documents
En una segunda parte, y dadas las especiales características de un filtro por formulario, os
explicaré cómo podemos utilizarlo sirviéndonos de algo de código VBA (muy muy sencillo).
En definitiva, que si ya conocéis lo que es un filtro por formulario podéis saltar directamente a
la segunda parte. Eso sí, si lo hacéis pensad que voy a dar por supuestas algunas cosas y no
me detendré a explicarlas (probablemente las haya explicado en la primera parte del ejemplo).
Así que, para adelante o para atrás, si no me dejo nada tenéis toda la información en este
propio documento.
1
Visítame en http://neckkito.siliconproject.com.ar
PRIMERA PARTE
FILTRO POR FORMULARIO “MANUAL”
¿CÓMO SE HACE?
Para que más adelante entendáis los filtros que voy a aplicar aquí tenéis una muestra de los
datos que hay en la tabla:
Vamos a abrir FDatos en vista Formulario. Una vez abierto nos vamos al Menú Inicio → Grupo
de Opciones “Ordenar y Filtrar” → Botón “Avanzadas...” → Filtro por formulario
Una vez hecho esto nuestro formulario FDatos va a adquirir un aspecto “extraño”, con unas
pestañas en la parte inferior, tal y como se puede apreciar en la ilustración siguiente:
2
Visítame en http://neckkito.siliconproject.com.ar
¿Qué encontramos ahí? Pues que nuestros campos se han convertido en cuadros combinados y
que tenemos esas pestañas “Buscar” y “Or” en la parte inferior.
¿CÓMO SE FILTRA?
FILTRO SENCILLO
Pues nada más sencillo que desplegar el combo y seleccionar el valor que queramos filtrar. Una
vez nos aparezca en pantalla el valor a filtrar:
a) Sistema 1: nos vamos a Menú Inicio → Grupo de opciones “Ordenar y Filtrar” → Botón
alternar filtro
Y cuando le hagamos clic, a modo de Jekyll y Mr. Hyde, nuestro formulario volverá a la
normalidad, sólo que está vez nos mostrará los resultados filtrados.
3
Visítame en http://neckkito.siliconproject.com.ar
b) Sistema 2: hacemos clic derecho sobre cualquier parte vacía del formulario y
seleccionamos la opción “Aplicar filtro u ordenar”
4
Visítame en http://neckkito.siliconproject.com.ar
Para volver al formulario “normal” hacemos de nuevo clic sobre el botón “Alternar filtro” y…
¡voilà!
Pues para crearnos ese filtro compuesto lo único que tenemos que hacer es:
Si nos fijamos, cuando hemos hecho clic sobre la pestaña “OR”, nos ha aparecido una nueva
pestaña “OR”. Lógicamente eso implica que podríamos seleccionar todos los valores que
quisiéramos para nuestro filtro compuesto, no sólo dos.
Si sabemos bien lo que queremos (y… ¿quién sabe eso?) podemos “programar” directamente
nuestro filtro compuesto a través de una expresión. La sistemática anterior también podría
hacerse según muestra la ilustración:
Finalmente, si queremos un filtro múltiple lo único que tenemos que hacer es, nada más y
nada menos, que ¡filtrar por varios campos!
5
Visítame en http://neckkito.siliconproject.com.ar
FILTRANDO POR APROXIMACIÓN
¿No estamos muy seguros de lo que queremos? (ya lo sabía yo, ya…). Pues sin problemas.
Podemos filtrar por aproximación según podéis ver en la siguiente ilustración:
El asterisco es nuestro carácter comodín. El filtro de la ilustración indica que nos mostrará
todos los valores que empiecen por la letra zeta. Si queremos todos los que terminen por zeta
deberíamos haber escrito <LIKE “*Z>; si queremos todos los que contengan la zeta
hubiéramos escrito <LIKE “*Z*”>
Si escribimos, por ejemplo, “Z*” (sin las comillas) en ese campo Access también nos detectará
que estamos usando un carácter comodín, por lo que también nos filtrará sin problemas 2.
2 El asterisco no es el único carácter comodín admitido en Access: hay algunos más. Os recomiendo visitar esta página para que los
podáis ver. No os asustéis por la página, dado que lo que nos interesa (caracteres comodín) está en las tablas que podéis ver en la
misma.
6
Visítame en http://neckkito.siliconproject.com.ar
Pues nada más sencillo que escribir NULL en el control de filtro. Es decir:
¿Y si queremos ver precisamente los que no son nulos? Pues aplicamos la negación o
aplicamos el símbolo “<>” (distinto de):
Y, en principio, con esto ya estamos preparados para poder realizar filtros por formulario.
SEGUNDA PARTE
FILTRO POR FORMULARIO CON PROGRAMACIÓN
Alguien podría pensar: “Fácil. Ponemos un botón en el formulario que, al hacer clic, aplique el
filtro”.
Sin embargo, el “problema” de los formularios por filtro es que deshabilitan automáticamente
los botones de comando que podamos tener en el formulario. Como diríamos comúnmente:
“¡te pillé!”.
Vamos pues a crearnos un formulario sobre nuestra tabla para poder filtrar. A efectos de este
ejemplo lo he llamado FDatos2.
7
Visítame en http://neckkito.siliconproject.com.ar
cmdAbreFiltroPorFomulario3, y le generaremos el siguiente código4 en el evento “Al hacer clic”:
…
Private Sub cmdAbreFiltroPorFormulario_Click()
DoCmd.RunCommand acCmdFilterByForm
DoCmd.OpenForm "FAplicaFiltro"
End Sub
…
…
Private Sub cmdQuitaFiltro_Click()
Me.FilterOn = False
End Sub
…
que lo único que hace es quitar el filtro que pudiera afectar al formulario.
Si, llegados a este punto, probáis el primer botón, podréis ver lo que os comentaba unas líneas
más arriba: nuestros botones de comando quedan inhabilitados automáticamente. Entonces,
¿cómo solventar este problema?
Veamos…
→ Pestaña Formato:
→ Estilo de los bordes: Diálogo
→ Centrado automático: Sí
→ Selectores de registro: No
→ Botones de navegación: No
→ Barras de desplazamiento: ninguna
→ Cuadro de control: No
→ Título: hacemos un espacio con la barra espaciadora
→ Pestaña Otras:
→ Emergente: Sí
3 Para asignar un nombre a un control lo que debemos hacer es sacar las propiedades de ese control e irnos a la Pestaña Otras →
Nombre. Ahí escribimos el nombre que queramos.
4 Para generar código debemos sacar las propiedades del control → Pestaña Eventos, y nos situamos en la parte “blanca” a la
derecha del evento que queremos programar. Veremos un pequeño botón de puntos suspensivos. Si hacemos clic sobre él nos
aparecerá una ventana que nos pedirá qué operación deseamos realizar. Le indicamos que queremos “generar código”.
8
Visítame en http://neckkito.siliconproject.com.ar
En cmdFiltrar, en su evento “Al hacer clic”, le generamos el siguiente código:
…
Private Sub cmdFiltrar_Click()
DoCmd.Close acForm, Me.Name
DoCmd.RunCommand acCmdApplyFilterSort
End Sub
…
Ya casi está, pero hay que prevenir una posible contingencia: ¿Y si el usuario, en lugar de
utilizar nuestro hermoso botón, decide cerrar el formulario con el botón de cerrar (la X en la
esquina superior derecha)?
Pues vamos a prevenir este comportamiento “no domesticado” del usuario. Para ello situamos
FDatos2 en vista diseño, sacamos las propiedades de formulario → Pestaña Eventos → Al
aplicar el filtro, y generamos este código:
…
Private Sub Form_ApplyFilter(Cancel As Integer, ApplyType As Integer)
If CurrentProject.AllForms("FAplicaFiltro").IsLoaded Then
DoCmd.Close acForm, "FAplicaFiltro"
End If
End Sub
…
¿Y por qué el evento “Al aplicar el filtro”? Pues porque cuando tenemos nuestro formulario en
vista de filtro por formulario el botón cerrar no es, en realidad, lo que entendemos por botón
cerrar, sino que se corresponde a la orden: “Aplícame el filtro”.
Eso lo podéis comprobar simplemente porque si elegís algún parámetro de filtro y cerráis con
la X veréis que el formulario, automáticamente, os aplica el filtro, y digamos que “cambia la
vista”, pero no os cierra el formulario.
¡suerte!
9
Visítame en http://neckkito.siliconproject.com.ar