Filtrar listas

Si tengo dos tablas:"municipio" y " estado", ¿cómo le hago para que en un formulario al seleccionar el "estado" de un cuadro combinado, en otro me aparezcan solo los "municipios" que le pertenecen?

1 respuesta

Respuesta
1
El siguiente ejemplo esta basado en la base de datos Northwind.mdb de access 97.
Nota previa a desarrollar el ejemplo: Observar la existencia del campo CategoryID en la tabla Products, este campo tiene que ser Numérico del tipo Entero Largo, Indexado - Con
duplicados y se va a Relacionar con el campo de mismo nombre CategoryID de la tabla Categories, que será Autonumérico - Indexado Sin duplicados. Esta es la forma en que vamos a Relacionar las dos tablas, y se puede definir en la ventana Relaciones o en la misma Consulta qryProductsList.
El Tipo de relación es de Uno a varios, y va del campo CategoryID de la tabla Categories al campo CategoryID de la Tabla Products, se puede exigir también la Integridad
referencial.
1. Crear una nueva consulta basada en la tabla Categories (en su caso será la tabla
Estado), y guardarla como qryCategoriesList:
Nombre de campo: CategoryID
Mostrar: Si
Nombre de campo: CategoryName
Mostrar: Si
Orden: Ascendente
2. Crear una nueva consulta basada en la tabla Products (en su caso será la tabla
Municipio) y guardarla como qryProductsList:
Nombre de campo: ProductID
Mostrar: Si
Nombre de campo: ProductName
Mostrar: Si
Orden: Ascendente
Nombre de campo: CategoryID
Mostrar: Si
Orden: Ascendente
Criterios:
IIF(IsNull([Forms]![frmSelector]![cboCategorySelect]);[CategoryID];[Forms]![frmSelector]
![cboCategorySelect])
Nota: al usar la función IIf() and IsNull() en esta consulta se mostrarán todos los productos para el caso de que no se seleccione ninguna categoría.
4. Crear una macro nueva y guardarla como ResetProductSelect:
Macro Name Acción
--------------------------------------
ResetProductSelect NuevaConsulta
IrAControl
Argumentos de la Acción
---------------------------------
NuevaConsulta:
Nombre del control: cboProductSelect
IrAControl:
Nombre del control: cboProductSelect
5. Crear un formulario nuevo con los dos cuadros cuadros combinados y guardarlo
como frmSelector:
Formulario: frmSelector
-----------------------------------
Cuadro combinado:
Nombre: cboCategorySelect
Tipo de origen de la fila: Tabla/Consulta
Origen de la fila: qryCategoriesList
Número de columnas: 2
Ancho de columnas: 0 cm;1 cm
Columna dependiente: 1
Después de actualizar: ResetProductSelect
Cuadro combinado:
Nombre: cboProductSelect
Tipo de origen de la fila: Tabla/Consulta
Origen de la fila: qryProductsList
Número de columnas: 3
Ancho de columnas: 0 cm;1 cm; 0 cm
Columna dependiente: 1
6. Pasar a Vista Formulario. En el cuándo combinado cboCategorySelect, seleccionar una categoría y ver que el otro cuadro combinado cboProductSelect solo lista los productos
para esa categoría.
7. En el cuadro combinado cboCategorySelect, seleccionar una categoría diferente y observar que el cuadro combinado cboProductSelect se ha actualizado y lista los
productos apropiados para la nueva categoría.
Acabo de probar el ejemplo en la versión de access 2000 y también es válido.
Raúl, te agradezco mucho el tiempo que te tomaste para contestar mi pregunta. Siempre es agradable encontrar a alguien que sabe realmente de lo que habla y sobretodo que tiene el interés de ayudar a los demás.
Si en algo te puedo ayudar sobre el diseño de sistemas, escribe: [email protected]
Gracias de nuevo,
Gloria

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas