¿Lista de Valores en un campo en función de otro valor?

Estoy haciendo una base de datos de aparatos electrónicos con Access.
Me ha surgido un problema y te agradecería mucho que pudieses echarme una mano.
Quiero hacer una formulario para el aparato en el que haya una lisa desplegable por ejemplo con el fabricante. Hasta aquí lo tengo hecho (aunque los fabricantes no los he añadido a una tabla, si no que los tengo como lista de valores).
El caso es que luego quiero que haya otra lista desplegable que sea por ejemplo "tipo de aparato". Y lo que quiero es que esta lista en funcón del fabricante muestre unos valores u otros. Es decir, si selecciono Sony en la de Fabricantes que al pinchar en la desplegable de "tipo de aparato" aparezca: TV, Radio, DVD... Etc..
Y que si en Fabricante selecciono Zanussi, aparezca: Nevera, Congelador... Etc..
Es decir, que los valores que muestre una lista desplegable dependan del valor que hayamos asignado a otra lista desplegable.
En principio es una lista sencilla puesto que solo voy a utilizar 3 fabricantes y 3 o cuatro opciones para cada fabricante.
Lo que pasa es que no se como orientarlo...

4 Respuestas

Respuesta
1
Se puede hacer de varias maneras, te pongo un ejemplo:
Tengo una Tabla con Zonas y otra con Países con la siguiente estructura:
TZona TPaises
Cod_Zona (Clave)                      Cod_Pais (Clave)
Zona País
                                                   Zona (Relacionado con TZona)
Ahora en un formulario independiente que llamaré FRMPAISES coloco un cuadro combinado denominado CBZONAS y un cuadro de lista denominado LSTPAISES
CBZONAS tendrá las siguientes propiedades:
Origen de la Fila: Tabla/Consulta ... Selecciona Cod_Zona y Zona Cierra con POR y di si
Columna dependiente: 1 (Valor que debe guardar en este caso Cod_Zona ya que es el que tiene TPaises
Nº Columnas: 2
Ancho Columnas: 0cm;3cm
LSTPAISES tendrá las siguientes propiedades:
Origen de la Fila: Tabla/Consulta ... Selecciona Cod_Pais, País y Zona En Criterios de Zona pon Forms![frmpaises]![CBZONAS]
Cierra con POR y contesta si
Sólo queda una última aclaración y es que tienes que actualizar la lista cada vez que cambies el valor que tiene CBZONAS para esto lo que tienes que hacer es poner un procedimiento de evento Al Actualizar en CBZONAS y poner entre Private Sub y End Sub
Me. LSTPAISES. Requery
Si aplicas este ejemplo a tu BD seguro que te sirve.
En primer lugar, gracias por tu respuesta.
Me ha sido de gran utilidad.
Lo único que no consigo es que al cambiar la Zona, automáticamente se actualice la lista LSTPaises. Tengo que pulsar F5 para que se cambie, y me gustaría que eso no hiciera falta.
He probado a poner lo del evento pero no noto diferencias, quizás este haciendo algo mal.
Lo que hago es (en vista diseño) selecciono el CBZONAS y me voy a Eventos. Ahí selecciono "Después de Actualizar" (he probado varios eventos como "Al Cambiar", "Antes de actualizar", "al Pinchar") y marco Procedimiento de Evento --> Generador de Código y ahí inserto el código que me habías puesto entre PRIVATE SUB y END SUB pero no noto nada.
No se me actualiza, ¿hago algo mal?
Y otra consulta que me ustaría saber, es si es posible prohibir que se modifique un campo hasta que no se haya seleccionado otro, me explico:
Hasta que no seleccione una zona del CBZONAS, la lista LSTPaises, se muestra en gris clarito, y no se puede pinchar sobre ella. Sin embargo, una vez que elijo una zona, entonces sí que aparece disponible la lista de PAÍSES.
¿Esto se puede hacer?
Muchísimas gracias por adelantado.
Un saludo
Si me dejas un correo te mando un ejemplo.
Buenas,
[email protected]
Un saludo y Gracias.
Ya te he enviado el correo.
Respuesta
1
Ok mira, ¿la tabla donde tienes fabricantes tiene un código?, los aparatos pueden ir repetidos con respecto a los fabricantes, por ejemplo dos fabricante pueden utilizar el mismo aparato,,,, por que si no tendrías que referenciarlos en la tabla aparatos
Me confirmas estos datos por fa. Para ayudarte.
En primer lugar gracias por responder tan rapido.
No tengo ninguna tabla con los fabricantes, pues al ser solo 3 (los que voy a utilizar) he metido los datos como lista de valores.
Realmente dos fabricantes no van a utilizar el mismo aparato, ya que cada aparato lo fabrica un fabricante distinto.
El ejemplo bueno sería con videoconsolas.
Tres fabricantes: Nintendo, Sony, Microsoft. Cada uno tiene 2 consolas distintas por ejemplo. Quiero que al poner el fabricante en el desplegable modelo, aparezcan sólo las consolas que fabrica ese fabricante que acabo de seleccionar,
Un saludo
Ok mira, lo que debes hacer es quitar la lista desplegable crear una tabla de fabricantes código único y nombre fabricante, y la lista desplegable la inicias de la tabla. Y creas una tabla de elementos donde a cada elemento le asignas un código según el fabricante que lo cree. Luego en el form los en cambio de que los apartos te los de en una lista desplegable lo dehas para que los muestre en un subformulario y te sera mucho más fácil vincularlos,
Respuesta
1
SI YA TIENES GENERADA LA TABLA EN LA QUE VAS A TENER TIPO DE APARATO, TIENE QUE TENER 2 COLUMNAS TIPO DE APARATO Y FABRICANTE, CUANDO hagas la consulta a esa tabla debes de primero verificar que valor tiene el formulario en el campo marca y compararlo hacia la tabla, para que te devuelva el tipo de valores en función de la marca que tiene el formulario.
en datos origen de la fila debes tener algo parecido a
SELECT productos.[tipo de aparato] FROM productos WHERE (((productos.marca)=Formularios![nombre formulario]![marca]));
Respuesta
¿Bien cómo vas a realizar tu proyecto con programación vb o a partir de consultas en aaccess?
Por otro lado te recomendaría que tanto la información de tus proveedores y tus artículos estuvieran ligadas a una tabla de modo tal que si requieres añadir otra descripción no tengas que entrar dentro de la programación
Un saludo y espero tu respuesta para poder orientarte

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas