Como Usar los Combos?

Iniciado por TheGhost(Z), 3 Marzo 2008, 21:16 PM

0 Miembros y 1 Visitante están viendo este tema.

TheGhost(Z)

Hola,
Mas que ayuda pido una sugerancia.

Supongamos que tengo dos tablas: Paises y Ciudades

Tabla Paises

ID_PAIS    PAIS
PE              PERU
ES              ESPAÑA
IT               ITALIA

Tabla Ciudades

ID_PAIS ID_CIUDAD  CIUDAD
PE           LIM              LIMA
ES           MAD             MADRID
ES           BCN             BARCELONA
IT            ROM            ROM

Bien, en el combo1 cargo el listado paises y en el combo2 cargo el listado ciudades, de modo que al seleccionar un pais, autonmaticamente se carguen en el combo2 las ciudades correspondientes a este.

Mi pregunta es como o donde cargo el Id_Pais de la tabla paises si el combo1 me da solo para cargar un campo. pensaba cargarlo asi mas o menos..

PERU (PE)
ESPAÑA (ES)
ITALIA (IT)

O

PE - PERU
ES - ESPAÑA
IT -  ITALIA

O

(PE) PERU
(ES) ESPAÑA
(IT) ITALIA

O

Tambien cargaria en un combo1 solo las ID_PAIS y en otro combo el PAIS
de modo que al seleccionar un pais tambien se seleccione el Id_Pais que estaria invisible, realizar la busqueda a partir de este dato.

¿Cual de las tres es la mejor manera de trabajar o con que modo generalmente se trabaja?

Mi otra pregunta es, una vez guardado el ID_Pais en otra tabla y si deseo modificar esta tabla tendria que cargar en el formulario los paises y ciudades, pero como aria para que el combo muestre automaticamente el pais y ciudad que he guardado.

En palabras podriamos decirle que se cargue todos los paises y ciudades posicionate en el pais x y ciudad x.

Saludos,

juancho77

Yo pondria un control data con la columna paises, y que al irse deslizando por los paises del data me muestre en un listbox las ciudades de ese pais. Si necesitas mas ayuda, te paso algun code

TheGhost(Z)

No la idea es trabajar con combos. el problema esta como cargar las ID de los paises, para cuando seleccione un pais me filtre las ciudades cuya ID_pais sea la que seleccione..

Chefito

#3
Nas.....bueno, supongo que cargar todos los registros en el comba y tal sabes. Yo lo que haría (y hacía  :)) es hacerlo de alguna de las formas que digiste, por ejemplo la 1º no está mal:
PERU (PE)
ESPAÑA (ES)
ITALIA (IT)
Y cogería el ID_pais del seleccionado, por ejemplo de la siguiente forma:
cod_pais=mid(combo1.text,len(combo1.text-3),2)
y lo utilizaría en una consulta para encontrar las ciudades del pais. Sería crear un recordset y utilizar la consulta select * from tu_tabla where ID_pais=cod_pais. Inmediatamente le sumaría el resultado de esta consulta al otro combo (ciudades) y ya está resuelto. Sería algo así:
Do until turecordset.eof
combo2.additem turecordset("campo_ciudades")
turecordset.movenext
loop

Esto es una idea general. Se puede hacer de multitud de formas. He supuesto que sabes crear recordset y demás (no se si enlazas a la bbdd por código, por control(ejem. adodc),etc). Si tienes alguna duda dilo y si pegas el código mejor ;). Ahhh, por cierto, todo esto se debe meter en los eventos que creas necesarios del combo1 (Ejemplo: combo1_click).
Respecto a la 2º pregunta, cargar el nuevo pais en el combo1 si modificas la tabla de los paises, se puede hacer de varias formas según la modifiques exteriormente a tu programa o desde tu programa. Si es desde tu programa te recomiendo que al mismo tiempo que modificas la tabla añadiendo (o eliminando) un pais, lo hagas también directamente en el combo....así ahorraras tiempo teniendo que realizar todo el proceso de nuevo de carga del combo. Y si lo haces externamente, pues tendrás que cargar otra vez los combos con los datos de la tabla.
En el combo2 de ciudades no hace falta introducir nada, ya que se actualiza siempre que le das en el combo1 a algún pais.
Espero que hayas cogido la idea y que te haya ayudado en algo. Ya sabes, si tienes alguna duda postea, que alguien te ayudará.
Saludos.
Moderador del foro oficial de AutoIt en español: www.AutoIt.es.

Todos tenemos inteligencia, lo malo es que algunos no nos acordamos donde la dejamos guardada ;)

TheGhost(Z)

Hola, Chefito.
Es me has entendido, perfectamente en el caso uno..

Lo hago todo por codigo. La nota de poner:

PERU(PE)
ESPAÑA(ES)

Actualmente lo tengo así, pero se ve feo eso de estar poniendo la id al ultiumo ¿no?.

Yo me preguntaba de que otra manera se aría. En realidad no se como trabajan o los haran los otros, porque siembre en un combo he visto solo: PERU, ESPAÑA y las ID´s no se como las esconden. Tambien he intentado poniendo las ID en otro combo en modo invisible. pero es engorroso todo eso.

Si hay alguna idea mejor, le agradecere, sino me quedare con esto nomas.

<------------------------------------->

Con respecto al segundo caso.. es el ejemplo de la sgte manera

PAIS         DISPONIBLE
PERU         SI
ESPAÑA     SI
ITALIA       SI
etc, etc

Supongamos que cargue esos tres paises en un combo. Selecciono ESPAÑA porque su estado es Disponible = SI.

Despues de un tiempo ESPAÑA y PERU su estado Disponible = NO
Entonces si deseo modificar el campo PAIS de mi tabla clientes, tengo que abrir el formulario cargar nuevamente los paises en un combo. españa y peru ya no porque ya no estan disponibles. cargo solo los paises que estan disponibles, pero como le digo en la consula que que cargue el pais ESPAÑA, porque ese es el que he guardado y al ves se muestre por defecto al iniciarse al fomrulario.





Chefito

Bueno.....a mi tampoco me desagrada esa forma, pero vale, es cuestión de cada programador :). Pues otra forma nada tediosa, y un poco pilla, sería coger las primeras 2 o 3 iniciales de los paises y compararlas con el campo ID_pais ;). Otra forma más profesional sería, como cada pais tiene solamente un ID único en la bbdd, pues con una consulta sql arrancada desde un recordset ("select * from tabla where pais=" & combo1.text, o con la funcion find del recordset...rst.find("pais=" & combo1.text). Esto te posiciona al registro que quieres, y puedes sacar la ID del pais encontrado. Sería Idbuscada=rst!ID_pais. Y ya teniendo el ID_pais, pues se lo pasas a la consulta del combo de las ciudades y solucionado. Espero que hayas cogido la idea.
Con respecto al segundo caso, ya te lo dije, si no quieres problemas, vuelve a cargar el combo desde la bbdd. Por cierto, no hay que cerrar y abrir el formulario para cargar los datos de la bbdd, no es necesario.
Saludos.
Moderador del foro oficial de AutoIt en español: www.AutoIt.es.

Todos tenemos inteligencia, lo malo es que algunos no nos acordamos donde la dejamos guardada ;)

TheGhost(Z)

No es por decir man, pero si lo mas profesional es buscando el propio pais en la tabla. no me parece bien.. creo que las id es para ahorrar tiempo durante la busqueda y toda esa nota... creo que me quedare con PERU (PE), ESPAÑA (ES), aunque se vea feo, pero ni modo. saludos