Cargar combo al seleccionar item de otro en VB6

Bueno mi pregunta es la siguiente, me falta eso solamente para terminar un programa y me tiene metió !
Resulta que tengo una BD y al cargar el programa se cargan las ciudades de la tabla ciudad al combo ciudad. Y lo que quiero hacer por ejemplo que al momento de seleccionar del combo la ciudad de Santiago automáticamente se carguen las comunas que tengo desde la tabla ciudad he intentado y no pasa nada
les dejo mi código
If Cbociudad.ListIndex > -1 Then
rs.Open "select co.descripcion,co.id_comuna,ciu.id_ciudad from comuna co,ciudad ciu where ciu.id_ciudad=co.id_comuna ", cnn
While Not rs.EOF
Cbocomuna. AddItem rs(0)
Rs. MoveNext
Wend
Rs. Close
End If

2 Respuestas

Respuesta
1
Usa el evento SelectedIndex_Change del Combo en cuestión y cuando pase podrás con esa cuidad seleccionada.
El tema que veo que tu usas mal la forma de llenarlo al combo haciendo un While algo que recarga el sistema.
Estimado gracias por responder.
En vb6 no existe ese evento del combo, el while es para que vaya recorriendo la tabla de la BD y cuando se hace movenext mover el puntero hacia el otro registro, y así poder cargar el otro combo, ¿me entiendes?
Saludos y gracias !
Si existe el evento y si te entiendo, yo empecé a programar en Basic, hace 20 años atrás, cuando no era Visual, pasé por VB4, 5, 6, .NET 2002, 2003, 2005, 2008 y hoy programo en 2010, dentro de los lenguajes Basic por que también he programado en Cobol, Pascal, DBase, Clipper, C, C++, Visual C++ y Visual C#, este último es el que programo hoy en día, por tanto si bien hace 8 años o más que no programo en VB6 se que existe el evento y aún sigo diciéndote que cargas mal el combo, ya que el combo debe asignarse el Value (que es el código del registro) y el Text o DisplayText que es el texto que se muestra al cliente.
Ah por si acaso tengo 33 años... :D
Estimado.
Aun trato de encontrar el evento que me dices y no lo puedo encontrar, busque en la web y ese evento parece está en vb.net solamente, me podrías decir donde lo puedo sacar ya que no lo encuentro :(
¿Cuándo hablas del value, hablas de itemdata(newindex) para asignarle un valor integer a cada item del combo o no?
¿Cómo lo harías tu? Porque de verdad que ya me tiene colmado !
Las relaciones de las tablas de la BD es:
Tabla "ciudad" tabla "comuna"
id_ciudad---------> codigo_ciudad
Saludos y disculpas las molestias !
Para llenar un combo correctamente tienes que asignar al elemento DataSource del Combo la tabla donde tomará los datos.
En la propiedad DisplayMember asignas el campo a mostrar de la tabla, en tu caso digamos que la descripción de la ciudad.
Luego en la propiedad ValueMember asignas el campo que será el valor de la elección, en tu caso el "id_ciudad".
Me dices que no encuentras el evento de cambio de indice. Solo hazle doble click al combo en tiempo de diseño y fíjate que evento es el que te pone por defecto el IDE.
Estimado.
Estoy en Visual Basic 6.0 no Vb.Net, esos eventos de combobox no existen, el evento del combo que tu me dices vendría siendo el evento CLICK en VB 6.0 y en ese estoy trabajando y por defecto al hacer doble click sobre el combo se carga el evento "change" que no corresponde a lo que quiero... Y claro... por lo que entendí displaymember asigna el campo que quiero que aparezca, osea como puse al principio vendría siendo así :
While Not rs.EOF
Cbocomuna.AddItem rs(0) <----------- primer campo de la consulta SQL,osea "descripcion"
rs.MoveNext
El datasource vendría siendo el recordset por lo que entendí, pero a nivel más físico.
Voy a chequear bien las relaciones entre las tablas, porque la lógica esta bueno según yo... las voy a chequear mejor.
Muchas gracias estimado y disculpa las molestias nuevamente !
Si tu hicieras un simple doble click en el ComboBox tienes la solución.
El evento en VB6 si existe y se llama CHANGE, si le haces doble click al combo se abrirá el código con el evento.
Si no es lo que quieres, entonces estamos hablando de cosas distintas y créeme que no te dejas entender.
Si te fui de ayuda valora y cierra la pregunta.
Compadre si me hubieras dicho desde el principio que el evento "Selectedindex_change" en .net era el CHANGE en Vb6 hubiera sido distinta la cosa, así todo no es el que correspondía a lo que se requiere, porque al hacer click en el combo ciudad y elegir un item del listindex se carga el otro combo comuna, el change no me serviría ya que no quiero elegir un solo elemento y no para todas la ciudades por lógica, así todo probé el mismo código en el evento CHANGE y no funciona, pruébalo.
Ya lo resolví en todo caso, con calma y paciencia todo se logra :)
Aquí está la solución, si le sirviese a otra persona ;)
cbociu_click()
If Cbociudad.ListIndex > -1 Then
rs.Open "select co.descripcion,co.id_comuna,ciu.id_ciudad,ciu.descripcion from comuna co,ciudad ciu where ciu.id_ciudad=co.id_comuna and ciu.descripcion='" & cbociu.text  &"'",cnn
While Not rs.EOF
Cbocomuna.AddItem rs(0)
rs.MoveNext
Wend
rs.Close
End If
Muchas gracias de verdad por tener el tiempo a responder a mis preguntas se agradece y se valora, espero que te encuentres bien, se despide Gonzalo.
Cierra y valora la pregunta, así se libera la pregunta y puedo ayudar a más gente.
Respuesta

El señor que intenta responder le falta algo de humildad para aceptar cuando está equivocado, las soluciones que brindas son de vb.Net, el amigo buscaba solución de VB 6.0, al final no le ayudaste más bien te fuiste a indicar todo tu conocimiento, que aquí no importaba, hay que ser humilde.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas