lunes, 4 de agosto de 2014

Combos en cascada en un Formulario Continuo (primera parte)

 


Vamos a hacer un ejercicio para poner los combos en cascada (que el segundo combo solo pueda tomar los valores que pertenecen al primero) en un formulario continuo (tomado de la forma clásica de Marius)
Comencemos creando una base de datos de entrada de almacén, para ello necesitamos tener como mínimo tres tablas, dos para los combos, la primera de Modelos y la otra de Colores y una tabla extra para crear el formulario de Entrada de Almacén.
Hacemos la primera tabla que llamaremos tblModelos con solo dos campos el id y Nombre como en la parte de arriba y la segunda que llamaremos tblColores de la siguiente forma:
Podemos observar que modelo es numérico, está basado en la tabla anterior y lo hacemos con el asistente para búsqueda:
Nos abre una ventana y seleccionamos: Deseo que campo de búsqueda busque los valores en otra tabla o consulta, seleccionamos la tabla tblModelos después los dos campos y aceptar hasta terminar y después nos dice que si guardamos, pues las relaciones cambiaron y le damos aceptar, esto nos sirve para que la tabla me ponga un combo con los valores de texto de la tabla modelo y además, sí creamos un formulario en automático nos pone el control como combo. Desde luego que lo podemos hacer poniendo los combos y estableciéndolos en origen del control, pero si Access lo hace por nosotros ¡Qué mejor!
Rellenamos las dos tablas más o menos así:

Ahora vamos a hace la tabla tblAlmacen con 4 campos, observemos que los campos Modelo y Color los hacemos igual con el asistente para búsqueda y seleccionamos sus tablas respectivas y cuando nos pide guardar lo hacemos
Vamos a ver cómo han quedado las relaciones de nuestras tablas y deberíamos de tener algo como esto:
Pero si observamos en la tblAlmacen Modelo está relacionado en la tblModelos con el Id, puesto que agregamos la relación para crear el combo en la tabla tblAlmacen y en realidad no la necesitamos, por tanto la borramos haciendo doble click sobre la línea y dándole a suprimir o del, quedando así:
Una vez aquí, vamos a hacer nuestro formulario con el asistente para formulario, escogemos la tblAlmacen y agregamos todos los campos y en seguida escogemos la tabla tblColores y escogemos solo el campo Colores y tenemos algo como esto:
Le damos click en siguiente, de nuevo siguiente, tabular y siguiente hasta terminar cuando nos dice que nombre le asignamos le decimos frmAlmacen y que lo abra para poderlo ver.
Comenzamos a agregar los primeros datos y nos damos cuenta que si seleccionamos Sandero solo me debería dar los 3 primeros (Verde, Rojo Y Azul), así que ponemos el formulario en vista diseño y nos vamos a propiedades del combo Modelo y en nombre se lo cambiamos a cboModelo, ahora seleccionamos el combo Color y en origen de la fila le damos a los 3 puntos del lado derecho, y nos abre el generador de consultas agregamos el campo modelo y en criterios [cboModelo] y cerramos y aceptamos los cambios:
De vuelta en propiedades en origen de la fila del combo Color copiamos toda la línea en un Word que se verá como esto:
SELECT tblColores.Id, tblColores.Colores, tblColores.Modelo FROM tblColores WHERE (((tblColores.Modelo)=[cboModelo]));
Y le agregamos lo que está en rojo:
Me.Color.RowSource = "SELECT tblColores.Id, tblColores.Colores, tblColores.Modelo FROM tblColores WHERE (((tblColores.Modelo)=[cboModelo]));"
En origen de la fila podemos borrar todo lo que tenía y en el evento Al entrar le damos a los 3 puntitos y generar código lo agregamos quedando así:
Private Sub Color_Enter()
Me.Color.RowSource = "SELECT tblColores.Id, tblColores.Colores, tblColores.Modelo FROM tblColores WHERE (((tblColores.Modelo)=[cboModelo]));"
End Sub
Nos vamos al cboModelo y en el evento después de actualizar agregamos lo mismo
Private Sub Modelo_AfterUpdate()
Me.Color.RowSource = "SELECT tblColores.Id, tblColores.Colores, tblColores.Modelo FROM tblColores WHERE (((tblColores.Modelo)=[cboModelo]));"
End Sub
Ahora solo nos falta poner el control Colores arriba de Color, pero podemos jugar para que aprecien para que sirve Color. Y comenzar a cargar el formulario.


Pueden bajar la muestra de como queda:


https://dl.dropboxusercontent.com/u/79048771/Combocontinuo2.zip 


No hay comentarios.:

Publicar un comentario