Combos en cascada

Estoy desarrollando una aplicación en la cual necesito filtrar por medios de 3 combos, datos de por ejemplo en el 1ero continente, en el 2do los países de el continente seleccionado primeramente, y finalmente tener en el 3er combo las ciudades del país seleccionado. Tengo las tablas de continentes, países y ciudades en access 2000 y ya esta bien relacionadas, es más access si logro armar un formulario de esas características, pero como lo puedo hacer en Visual 6.0.

1 respuesta

Respuesta
1
Te paso el código que tengo para hacer lo mismo pero con los Departamentos, Provincias y Distritos de mi país (Perú), ya tu lo modificas.
Primero, recuerda que tienes que hacer una referencia a la librería Microsoft DAO 3.6 en tu proyecto.
A continuación el código para el form1 que tiene los 3 combos: Combo1 (Departamento), Combo2 (Provincia) y Combo3 (Distrito), utilizara una BD llamada "dbPeru.mdb"
------
Dim wspPrincipal As Workspace
Dim dbPeru As Database
Dim rstDepartamento As Recordset
Dim rstProvincia As Recordset
Dim rstDistrito As Recordset
Private Sub Combo1_Click()
CargarComboProvincia
End Sub
Private Sub Combo2_Click()
CargarComboDistrito
End Sub
Private Sub Form_Load()
AbrirBD
End Sub
Private Sub Form_Unload(Cancel As Integer)
Set rstDepartamento = Nothing
Set rstProvincia = Nothing
Set rstDistrito = Nothing
dbPeru.Close
End Sub
Private Sub AbrirBD()
Set wspPrincipal = DBEngine.Workspaces(0)
Set dbPeru = wspPrincipal.OpenDatabase("C:\Mis documentos\PeruDB.mdb", True, False, "")
Set rstDepartamento = dbPeru.OpenRecordset("tbDepartamento", dbOpenTable)
Set rstProvincia = dbPeru.OpenRecordset("tbProvincia", dbOpenTable)
Set rstDistrito = dbPeru.OpenRecordset("tbDistrito", dbOpenTable)
CargarComboDepartamento
End Sub
Private Sub CargarComboDepartamento()
Combo1.Clear
With rstDepartamento
If .RecordCount > 0 Then
.MoveFirst
Do While Not .EOF
' Se agrega al combo
Combo1.AddItem .Fields("NombreDepartamento")
Combo1.ItemData(Combo1.NewIndex) = .Fields("IDDepartamento")
.MoveNext
Loop
End If
End With
End Sub
Private Sub CargarComboProvincia()
Combo2.Clear
With rstProvincia
If .RecordCount > 0 Then
.MoveFirst
Do While Not .EOF
If .Fields("IDDepartamento") = Combo1.ItemData(Combo1.ListIndex) Then
' Se agrega al combo
Combo2.AddItem .Fields("NombreProvincia")
Combo2.ItemData(Combo2.NewIndex) = .Fields("IDProvincia")
End If
.MoveNext
Loop
End If
End With
End Sub
Private Sub CargarComboDistrito()
Combo3.Clear
With rstDistrito
If .RecordCount > 0 Then
.MoveFirst
Do While Not .EOF
If .Fields("IDProvincia") = Combo2.ItemData(Combo2.ListIndex) Then
' Se agrega al combo
Combo3.AddItem .Fields("NombreDistrito")
Combo3.ItemData(Combo3.NewIndex) = .Fields("IDDistrito")
End If
.MoveNext
Loop
End If
End With
End Sub
------
Espero que lo pruebes y cualquier duda que tengas me preguntas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas