Actualizado el 21 de Marzo del 2018 (Publicado el 20 de Diciembre del 2017)
673 visualizaciones desde el 20 de Diciembre del 2017
299,1 KB
4 paginas
Creado hace 9a (08/08/2014)
Combos en cascada en un Formulario Continuo (Segunda parte)
En la primera parte hicimos los combos en cascada en un formulario continuo, el único problema, si
se le puede llamar problema, es que Access es una base de datos relacional, por lo que hay que
evitar la duplicidad de los datos que son innecesarios y en este caso estamos guardando en la
tblAlmacen el campo Modelo.
Si observamos en la tblColores contamos con Modelo y este tiene un id irrepetible (Autonumerico),
al hacer referencia a un color también lo hace del Modelo, por lo tanto no requerimos guardar ese
dato, vamos a eliminarlo de la tblAlmacen y hacer que nuestro formulario continúe con la misma
apariencia.
Mejor para tener dos diferentes hacemos una nueva tabla tblAlmacen1 con los mismos datos que
tblAlmacen pero eliminando Modelo. Y con el asistente para formulario lo creamos, primero
seleccionamos la tblAlmacen1 y agregamos todos los campos, buscamos la tblModelos y
agregamos Nombre y de la tblColores agregamos solo Colores y nos queda algo así:
Le damos a siguiente, siguiente, tabular, siguiente, nombre del formulario le ponemos frmAlmacen1
y le damos finalizar, y nos abre algo como esto:
Observemos que solo tenemos el combo de color y abre todos los colores, nos falta el combo de
los Modelos, es momento de jugar un poco, nos vamos a vista diseño y agregamos un combo con
el asistente a la misma altura que el combo anterior y le decimos que deseo que el asistente
busque los valores en una tabla o consulta y siguiente escogemos la tblModelos y seleccionamos
los dos campos y siguiente hasta terminar, borramos la etiqueta, entramos a propiedades, nombre
le ponemos CboNombre y si lo abrimos tenemos esto:
Ahora vamos con el combo Color, en propiedades origen de la fila y a los 3 puntos, entramos al
generador de consultas y agregamos Modelo y en criterios [CboNombre]
Ahora seleccionamos lo de origen de la fila del combo Color
SELECT
(((tblColores.Modelo)=[CboNombre]));
tblColores.Id,
tblColores.Colores,
tblColores.Modelo FROM
tblColores WHERE
Y le agregamos lo que está en Rojo:
Me.Color.RowSource = "SELECT tblColores.Id, tblColores.Colores, tblColores.Modelo FROM
tblColores WHERE (((tblColores.Modelo)=[CboNombre]));”
Y en el evento al Entrar ponemos:
Private Sub Color_Enter()
Me.Color.RowSource = "SELECT tblColores.Id, tblColores.Colores, tblColores.Modelo FROM
tblColores WHERE (((tblColores.Modelo)=[CboNombre]));"
End Sub
Y en el evento Después de actualizar del CboNombre ponemos:
Private Sub CboNombre_AfterUpdate()
With Me.Color
.RowSource = "SELECT tblColores.Id, tblColores.Colores, tblColores.Modelo FROM tblColores
WHERE (((tblColores.Modelo)=[CboNombre]));"
.Value = .Column(0, 0)
End With
Me.Color.SetFocus
Me.Color.Dropdown
End Sub
Esto con el fin de que al seleccionar un nombre me situé en el primer registro del combo color y me
despliegue para seleccionar el que yo quiero. Ahora solo resta acomodar los controles algo como
esto:
Fuente: Tomado de una explicación de Patxi Saenz.
Comentarios de: Combos en cascada en un Formulario Continuo (Segunda parte) (0)
No hay comentarios