Filtro Combo Form
INTRODUCCIÓN
Antes de nada, tened en cuenta que este ejemplo NO es
compatible con Access 2003. Sólo funcionará con Access
2007 y superior.
Prosigamos: tenemos un formulario con un subformulario
relacionado. Y a través de un combo queremos filtrar
valores. Vamos a ver cómo podemos conseguir ese filtro.
Desarrollaremos un ejemplo utilizando unos trabajadores de unaempresa, a los cuales se les
conceden unos adelantos de nómina.
Como siempre, tened en cuenta que yo utilizaré los campos mínimos necesarios. Vosotros
podéis añadir, lógicamente, todos los campos que necesitéis.
PREPARANDO NUESTRAS TABLAS
En primer lugar debemos preparar la tabla que contendrá los datos principales de los
trabajadores. Nos creamos pues la siguiente tabla, que llamaremosTEmpleados:
En segundo lugar debemos preparar la tabla que será origen a la vez de un formulario y de un
subformulario. A esta tabla la llamaremos TAdelantos, y tendrá la siguiente estructura:
Fijaos que [IdEmpl] se ha configurado a través del asistente. La configuración ha sido la
siguiente:
•
•
•
•
•
•
1
Deseo buscar valores en otra tabla o consulta
Elegimos TEmpleados
Elegimos los campos [IdEmpl] y[NomEmpl]
Ordenamos ascendente por [NomEmpl], por ejemplo
Ocultamos la columna clave, si no queremos ver los códigos de empleado, o si nos es
de utilidad la mostramos (a gusto del consumidor). Redimensionamos, si lo
consideramos conveniente, la columna correspondiente al nombre del empleado
Dejamos el nombre que le habíamos puesto al campo
La BD de ejemplo os la podéis bajar aquí.
1
Visítame enhttp://siliconproject.com.ar/neckkito/
Nos daremos cuenta de que el proceso se ha completado porque ahora nuestro campo
[IdEmpl] de TAdelantos se mostrará como de tipo numérico.
CONFIGURANDO NUESTROS
FORMULARIOS
Vamos a crearnos una serie de formularios. Empecemos:
1.- Creamos un formulario en blanco que nos hará de menú. Lo
llamaremos FMenu.
2.- Creamos un formulario basado en la tablaTEmpleados, y lo llamamos FEmpleados
(eliminamos el subformulario que nos habrá salido por defecto).
3.- Creamos un formulario basado en la tabla TAdelantos y lo llamamos FAdelantos.
4.- Creamos un formulario basado en la tabla TEmpleados, y lo llamamos FEmpleadosFiltro
(este formulario sufrirá algunas transformaciones, por lo que en principio lo dejaremos tal y
como nos sale).
FORMULARIO FMENU
Vamos ainsertar una serie de botones para poder operar con el resto de formularios. Así,
añadimos un primer botón de comando y le ponemos de nombre 2 cmdAbreFEmpleados.
En el evento “Al hacer click” de ese botón (Propiedades → Pestaña Eventos) generamos el
siguiente código3:
…
Private Sub cmdAbreFEmpleados_Click()
'Cerramos el formulario actual
DoCmd.Close acForm, Me.Name
'Abrimos FEmpleados para añadirun nuevo registro
DoCmd.OpenForm "FEmpleados", , , , acFormAdd
End Sub
…
Fijaos que el código abre FEmpleados ya preparado para introducir un nuevo registro. Si
quisiéramos que lo abriera para mostrar todos los registros introducidos deberíamos haber
escrito, simplemente:
DoCmd.OpenForm "FEmpleados"
Añadimos un nuevo botón para abrir FAdelantos, y le ponemos de nombre cmdAbreFAdelantos.
El códigodel evento “Al hacer click” sería:
…
Private Sub cmdAbreFAdelantos_Click()
DoCmd.Close acForm, Me.Name
DoCmd.OpenForm "FAdelantos", , , , acFormAdd
2
3
A partir de ahora, cuando me refiera a cualquier control y diga “le ponemos de nombre” me estoy refiriendo al proceso de sacar las
propiedades del control → Pestaña Otras → Nombre, y ahí escribimos el nombre propuesto.
Para generar código nosponemos en la parte en blanco junto al evento que queramos, y veremos cómo nos aparece un pequeño
botón de puntos suspensivos. Si hacemos click sobre él nos aparecerá una ventana. Le decimos que queremos generar código.
Se nos abrirá el editor de VB, con dos líneas por defecto (Private Sub... y End Sub). Esas dos líneas no deben tocarse. El código lo
escribimos entre dichas líneas
2
Visítame en...
Regístrate para leer el documento completo.