Cuadros Combinados

Ojalá me puedas ayudar con lo siguiente:
Tengo una BD com las siguientes tablas y campos:
MARCA: marca
MODELO: marca, modelo, código
MOVIMIENTO:marca, modelo, código, y otros.
He creado un form. Para llenar MOV. Con cuadros combi que se rellenan de las tabla MARCA y MODELOS.
La pregunta es: ¿Cómo puedo hacer para que el segundo cuadro combi me muestre sólo los modelos de lo que se seleccionó en el cuadro marca?

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 tu caso será la tabla Marca), 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 tu caso será la tabla Modelos) 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
Criteros: 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 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.
Raúl, ante todo gracias por tu ayuda, seguí tus procedimientos y CASI funciona. Cuando selecciono la MARCA, efectivamente me lista sólo los modelos de esa MARCA, pero cuando selecciono el modelo aparece el cuadro de diálogo "Microsoft Access no puede encontrar la Macro".
Otra pregunta: El formulario es para llenar la tabla MOVIMIENTO, si se creó el formulario frmSelector ¿cómo logro que se guarden los datos seleccionados ahí, en el la tabla MOV.?
Gracias
Según el procedimiento, la macro ResetProductSelect (ó como desees llamarla) solo tendría que ejecutarse en el evento Después de actualizar del cuadro combinado en donde seleccionamos la Marca. El hecho de que nos repinte cuando seleccionamos Modelo viene dado por la combinación del campo Id entre las dos tablas. El mensaje de error más bien parece por un fallo al escribir el nombre de la macro en el formulario.
Para la segunda cuestión, la de guardar los valores en la tabla MOV, solo tienes que establecer el Origen del registro del formulario en esa tabla, y también pasar el Origen del control de los cuadros combinados a los controles de la tabla correspondientes donde desees guardar los valores, p.e.: =[MiCuadroCombinado]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas