miércoles, 25 de febrero de 2015

Combos en Cascada

Hoy vamos a ver una forma sencilla para crear combos en cascada. Vamos a comenzar por crear una tabla que le llamaremos de: excedencia, con dos campos:

Campos                      Tipo                           
Idexcedencia              Autonumerico                        Clave principal
Excedencias               Texto

Y una segunda tabla que llamaremos: tipo, esta con tres campos:
Campos                      Tipo
Idtipo                          Autonumerico                        Clave principal
Idexcedencias             numerico
Tipo                            texto

Rellenamos las tablas y se ven mas o menos así:


excedencia
idexcedencia excedencia
1 voluntaria
2 forzosa


tipo
idtipo idexcedencia tipo
1 1 interes particular
2 1 interes jefe
3 1 interes ajeno
4 2 por una causa
5 2 por otra causa
6 2 por otra mas causa
Nos vamos a relaciones y agregamos las dos tablas en la tabla de excedencia seleccionamos a idexcedencia y la soltamos en la tabla tipo del campo idexcedencia, le ponemos exigir integridad referencial y le damos a crear y en la relación se ve que pone de 1 a muchos, se ve como esto.


Creamos un formulario en blanco, y lo guardamos como frmcombos. En vista diseño y con el asistente para cuadros combinados creamos un combo y seleccionamos deseo que el cuadro combinado busque los valores en una tabla o consulta, siguiente, seleccionamos la tabla excedencia, siguiente, seleccionamos los dos campos y le damos a siguiente hasta terminar, en vista diseño en propiedades le cambiamos el Nombre a cboexcedencia
Creamos ahora el segundo combo igual seleccionamos deseo que el cuadro combinado busque los valores en una tabla o consulta, siguiente, seleccionamos la tabla tipo, siguiente, seleccionamos los tres campos y le damos a siguiente hasta terminar, en vista diseño en propiedades le cambiamos el Nombre a cbotipo y en origen de la fila le das a los tres puntos entramos al generador de consultas, en criterios debajo de idexcedencia escribimos: [Formularios]![frmcombos]![cboexcedencia]


O si no quieres escribir le damos al botón del ratón del lado derecho y seleccionamos generar…nos abre el generador de expresiones, le damos dos clic a formularios, después a formularios cargados, después frmcombos y seleccionamos cboexcedencia y le damos dos click, aceptamos cerramos y nos pregunta que cambio que si guardamos los cambios le decimos que si.
Ahora en vista diseño del formulario en propiedades del cboexcedencia nos vamos a eventos a después de actualizar y le damos a los tres puntos y agregamos

Private Sub cboexcedencia_AfterUpdate()
Me.cbotipo.Requery
End Sub

Y listo si quieres puedes en el combo tipo en ancho de columna poner 0 cm;0 cm;2.54 cm para que se vea mejor.



Les dejo el archivo
https://www.dropbox.com/s/jft67qac6xcsgbc/exedencias.mdb?dl=0




2 comentarios:

  1. Gracias, al fin después de buscar incansablemente durante aproximadamente 1 mes entero, he encontrado el metodo que realmente funciona (al menos en una DDBB limpia). El problema viene cuando intento recrear los pasos en una base de datos mas compleja. Los datos a relacionar se encuentran en la misma tabla, pero por mas que intento indicarle al "combo master" (por llamarlo de alguna manera), que me parametrice el "combo slate", no me muestra ningun dato en el primero. No se que narices pasa... Si pudieras hecharme un cable lo agradeceria.
    Correo: amccanmir@gmail.com
    Gracias de antemano.

    ResponderBorrar
  2. Hola muy buenas dias, gracias por tu maravilloso aporte.. mi duda es la siguiente... soy nuevo en esta herramienta de de base dato... y suma mucha alegria... hice el ejercicio con tu ejemplo... ahora como hago.. que lo seleccionado en los cuadro combinado.. se vaya almacenando en otra tabla.. quedo atento con tu ayuda.

    ResponderBorrar