Ligar 2 combobox

Me podrían ayudar en lo siguiente
Tengo dos combobox (combo1 y combo2), en el combo 1 tengo una lista de países, y quiero que al seleccionar uno de ellos MEXICO (por ejemplo) en el combo 2 me despliegue los estados que ese país tiene (los cuales los tengo almacenados en una tabla que se llama MEXICO), es decir cada país tiene una tabla donde almaceno los estados) y así cada vez que seleccione un país diferente el el combo1, que se carguen en el combo2 sus respectivos estados. Espero y me puedan ayudar.
Gracias de antemano

1 respuesta

Respuesta
1
Espero poder ayudarte.
Te recomiendo que no tengas cada país en una tabla sino que sea una tabla "provincias" por ejemplo donde están todas las provincias de todos los países.
Esto te va a facilitar el manejo de archivos por un lado, y la cantidad de tablas abiertas será menor.
Si te parece, vemos el ejemplo con la tabla de "provincias".
La estructura de esa tabla podrías ser:
CodPro: codigo de provincia unico
Nombre: nombre de provincia
País: País al que pertenece (corresponde al código de país usado en la tabla países)
Te conviene que tanto el código de país como el de provincia sea numérico.
Entonces, supone que tenemos:
Paises (codigo, nombre)
1. Argentina
2. Paraguay
Provincias (código, nombre, país)
1, Buenos Aires, 1
2, Misiones, 1
3, Asuncion, 2
4, Encarnacion, 2
Cuando armas el listBox de países harías así.
with thisform.listaPaises
     .clear
     select paises
     Scan all
            .AddListItem(alltrim(nombre), codigo, 1)
     Endscan
     .listItemId=1
Enwith
Para llenar la tabla de provincias:
with thisform.listaProvincias
       .clear
       Se le provincias
       scan all for pais=thisform.listaPaises.listItemID
              .AddListItem(alltrim(nombre), 1)
       Endscan
       .listItemId=1
Endiwth
El procedimiento para llenar la tabla de provincias se hace en el inicio de tu form (después de llenar el list de provincias) y en el valid de la lista de provincias.
Espero haberte podido ayudar
Estamos en contacto
Gracias por la sugerencia y derivado del uso de .addItem
lo pude realizar de como me indicaste en vez de list con combobox
En donde tengo una tabla donde se encuentra el nombre de los paises (es con lo que
lleno el primer ComboBox),  el segundo se va a llenar con las provincias (de el pais elegido),que están contenidos en otra tabla, además de el nombre de el país),
local m.cEntidad
m.cEntidad=this.value
select provincias
Go top
Do While !Eof()
If provincias.pais.Combo2.AddItem(provincias.desc)
     EndIf
     Skip
EndDo
El problema ahora es
Cuando selecciono un país en el combo1 aparecen sus respectivas provincias en combo 2,
cuando selecciono de nuevo un país del combo1 aparecen sus respectivas provincias en el combo2 pero junto con las del país seleccionado anteriormente y así de nuevo selecciono en el combo1 otro país y se acumulan otra vez sus respectivas provincias con las provincias de los países seleccionados anteriormente
¿Cómo le hago para que cada vez que seleccione un país del combo1 solo aparezcan sus respectivas provincias en el combo2 y que no se acumulen?
Por Favor
No te preocupes, es simple.
Te falto llamar al método clear del combo antes de llenarlo nuevamente.
Antes de recorrer la tabla de las provincias haces
thisform. MiListBox. Clear
Te quedaría así:
m.cEntidad=this.value
select provincias
Go top
Privincias.pais.combo2.clear
Do While !Eof()
If provincias.pais.Combo2.AddItem(provincias.desc)
     EndIf
     Skip
EndDo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas