PDF de programación - Combos en Cascada

Imágen de pdf Combos en Cascada

Combos en Cascadagráfica de visualizaciones

Publicado el 14 de Enero del 2017
755 visualizaciones desde el 14 de Enero del 2017
159,1 KB
4 paginas
Creado hace 11a (30/09/2012)
COMBOS EN CASCADA1

Vamos a ver cómo podemos ir filtrando los datos de un
combo en función de lo que se ha elegido en un combo, que
a su vez dependía del valor que se había seleccionado en
otro combo… una cosilla interesante, vamos… J



PREPARATIVOS

Para aquellos que quieran realizar el ejemplo desde cero vamos a preparar los elementos del
“aperitivo” (que no son muchos). Vamos allá:


- Creamos una tabla, que llamaremos TPaises, con los siguientes campos (todos tipo
texto y no ponemos ninguna clave principal):

o [Pais] -> Introduciremos el nombre del país
o [Prov] -> Introduciremos la provincia
o [Pobl] -> Introduciremos la población

- Creamos un formulario en blanco, que nos servirá para poner nuestro “puzle de
combos. A este formulario lo llamamos FCombos


Ni que decir tiene que, para ver los efectos del ejemplo, deberemos rellenar los registros de la
tabla con algunos datos.

PROGRAMANDO EL PRIMER COMBO
Vamos a poner nuestro formulario FCombos en vista diseño. Y, a partir de ahí, hacemos lo
siguiente:

1.- Insertamos un combo para seleccionar el país. Cuando nos salga el asistente le decimos
que queremos los datos de una tabla, que será TDatos, y seleccionamos el campo [Pais].
Seguimos configurando el asistente a nuestro gusto hasta el final.

2.- Sacamos las propiedades de ese combo y nos vamos a la pestaña Otras->Nombre. Ahí le
escribimos de nombre cboPais.

Si probamos ahora el combo veremos que nos salen todos los valores del campo [Pais], pero
duplicados. Evidentemente eso no es nada práctico. Vamos a solucionarlo.

3.- Volvemos a las propiedades de ese combo, a la pestaña Datos->Origen de la fila. Ahí
veremos que hay una expresión en SQL. Si hacemos click sobre la expresión nos aparecerá un
pequeño botón con puntos suspensivos. Hacemos click sobre ese pequeño botón.


1

La BD de ejemplo os la podéis bajar aquí.

Visítame en http://siliconproject.com.ar/neckkito/

1

4.- Se nos abrirá el generador de consultas. Como vemos, lo que tenemos delante es una
consulta de selección. Vamos a convertirla en una consulta de totales a través del botón de
sumatorio (Σ).


Y ya está. Guardamos y cerramos la ventana del generador
de consultas y podemos probar nuestro combo. Ahora los
valores a seleccionar son más “normales”.



PROGRAMANDO EL SEGUNDO

COMBO

1.- Añadimos el segundo combo y, como el primero, seguimos el asistente seleccionando la
tabla TDatos y añadiéndole sólo el campo [Prov]. Seguimos el asistente hasta el final.

2.- Sacamos las propiedades del combo y, como antes, le ponemos de nombre cboProv.

3.- Nos vamos a la pestaña Datos->Origen de la fila, y sacamos el generador de consultas.

4.- Vamos a añadirle el filtro que necesitamos. De la tabla TDatos arrastramos el campo [Pais]
al grid de la consulta. Desmarcamos el check “Mostrar”. En la línea de criterios escribimos lo
siguiente:

Forms!FCombos.cboPais.Value

5.- Convertimos esa consulta en una consulta de totales.

A través de lo anterior estamos diciendo que la consulta filtre por el valor del combo cboPais
que está en el formulario FCombos.

PROGRAMANDO EL TERCER COMBO
Como vemos el procedimiento es muy fácil. Vamos a hacer prácticamente lo mismo con este
tercer combo.

1.- Creamos un tercer combo y con el asistente seleccionamos la tabla TDatos, el campo
[Pobl], y acabamos de configurar el asistente.

2.- A ese combo le ponemos de nombre cboPobl

3.- Sacamos la ventana del generador de consultas. Arrastramos el campo [Prov],
desmarcamos el check “Mostrar” y en la línea de criterios escribimos lo siguiente:

Forms!FCombos.cboProv.Value

Esta consulta no es necesaria convertirla en una consulta de totales (a no ser que, para
nuestra propia base de datos, tengamos valores repetidos y queramos ver sólo uno de cada).
Ahora ya tenemos nuestros combos programados para funcionar en cascada. Sin embargo…


Visítame en http://siliconproject.com.ar/neckkito/

2





ULTIMANDO LOS DETALLES

¿Qué pasaría si nos equivocamos de país, por ejemplo (y ya
hemos seleccionado el resto de los combos), y elegimos un
nuevo país? ¿Qué pasa si dejamos algún combo en blanco?

La respuesta a la primera pregunta es que nuestros combos
no nos filtrarían; la respuesta a la segunda es que
probablemente el combo no nos mostrara ningún valor.


Puestos a “hacer las cosas bien”, vamos a ver cómo podemos corregir estos “detallitos” de una
manera “elegante”.

Para el combo cboPais no necesitamos hacer nada respecto de que haya valores en el resto de
combos o no, puesto que es el primer combo. Vamos a operar sobre la hipotética situación en
que decidamos cambiar de valor:

1.- Sacamos las propiedades de cboPais y nos vamos a la pestaña Eventos->Después de
actualizar. Hacemos click en el espacio en blanco que hay a su derecha y nos aparecerá un
botón de puntos suspensivos. Hacemos click sobre ese pequeño botón de puntos suspensivos
y, en la pantalla que nos aparece, seleccionamos que queremos generar código.

2.- Se nos abrirá el editor de VB (VBE), con dos líneas por defecto (Private Sub… y End Sub).
En medio de esas líneas escribimos el siguiente código:

---
Private Sub cboPais_AfterUpdate()
Me.cboProv.Requery
End Sub
---

Con esta acción obligamos a que se ejecute de nuevo la consulta del combo cboProv

Vamos a operar sobre el segundo combo:

1.- Sacamos las propiedades de cboProv y nos vamos a la pestaña Eventos->Al recibir el
enfoque. Hacemos click sobre el pequeño botón de puntos suspensivos que veremos y, en la
pantalla que nos aparece, seleccionamos que queremos generar código.

2.- Se nos abrirá el VBE. En medio de esas líneas escribimos el siguiente código:

---
Private Sub cboProv_GotFocus()
If IsNull(Me.cboPais.Value) Then
MsgBox "Debe seleccionar un país", vbInformation, "AVISO"
Exit Sub
End If
End Sub
---

Visítame en http://siliconproject.com.ar/neckkito/

3


Vamos a ver, en abstracto, qué dice este código:


Si no hay valor en el combo cboPais entonces
Lanza un mensaje de aviso
Sal del proceso

Ahora nos queda la segunda fase, que es actualizar la
consulta del tercer combo. Para ello, en las propiedades de
cboProv, nos vamos a la pestaña Eventos-> Después de
actualizar y generamos el siguiente código:


---
Private Sub cboProv_AfterUpdate()
Me.cboPobl.Requery
End Sub
---

Ya sólo nos queda el tercer combo. Para este combo sólo debemos comprobar que se haya
escrito un valor en cboPobl. Para ello:

1.- Sacamos las propiedades de cboPobl y nos vamos a la pestaña Eventos->Al recibir el
enfoque. Hacemos click sobre el pequeño botón de puntos suspensivos que veremos y, en la
pantalla que nos aparece, seleccionamos que queremos generar código.

2.- Se nos abrirá el VBE. En medio de esas líneas escribimos el siguiente código:

---
Private Sub cboPobl_GotFocus()
If IsNull(Me.cboPobl.Value) Then
MsgBox "Debe seleccionar una provincia", vbInformation, "AVISO"
Exit Sub
End If
End Sub
---

Y eso es todo. Espero que lo podáis aplicar a vuestras aplicaciones.


¡Suerte!

Visítame en http://siliconproject.com.ar/neckkito/

4
  • Links de descarga
http://lwp-l.com/pdf697

Comentarios de: Combos en Cascada (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad