Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   DBLookupComboBox ayuda!!! (https://www.clubdelphi.com/foros/showthread.php?t=30112)

Goyo 08-02-2006 22:48:02

DBLookupComboBox ayuda!!!
 
bueno apenas estoy iniciando en la programacion delphi, y tengo algunos problemas con el componente DBLookcupComboBox, estoy trabajando con 2 bases de datos de Paradox, una para guardar los datos y otra donde tomo solo algunos valores de ella... bueno al grano: tengo dos DBLookUpComboBox uno lo uso para mostrar el nombre del municipio y en el otro las localidades que pertenecen a ese municipio, como puedo hacer para que no me haga esto....

Municipios... Localidades...

DBLookUpComboBox1
DBLookupComboBox2
Acapulco Acapulco
Acapulco La Venta
Acapulco Puerto Marquez
Jose Azueta Zihuatanejo
Jose Azueta Ixtapa
Jose Azueta El Paso

.
.
.
y asi sucesivamente, como puedo evitar que se repitan los nombre en el primer componente (que no aparezcan varias veces repetido el municipio) y que solo se muestren las localidades de este municipio en el segundo, y que al seleccionar otro municipio, solo me muestre las localidades del mismo.
ya pude conectar los dos componentes, pero en el primero me muestra muchas veces repetidos los nombre de los municipios...
bueno creo que ya me alargue mucho....

espero que alguien me ayude a como solucionar esto.
:)

roman 09-02-2006 00:22:37

Si entiendo bien, deberás tener dos tablas:

municipios = (id, municipio, ...)
localidades = (id, municipio_id, localidad, ... )

de manera que necesitas hacer una relación maestro-detalle entre ambas.

Para ello, a la propiedad MasterSource del Table asociado a localidades le asignas el datasource asociado a municipios y en la propiedad MasterFields (doble click sobre ella) asignas los campos de la relación:

municipios.id -> localidades.municipio_id

De esta forma, siempre que selecciones un municipio, el Table asociado a localidades mostrará únicamente las localidades de ese municipio.

Esto se reflejará en los DBLookupComboBox cuando los asocies, mediante sus propiedades ListSource, ListField y KeyField a los DataSource correspondientes.

Deberás tener un índice sobre el campo municipio_id en la tabla municipios (usa el Database Desktop para ello).

// Saludos

Goyo 09-02-2006 15:26:14

creo que no me explique bien, bueno uso dos tablas porque en una grabo datos de actividades y la que contiene la informacion de municipios y localidades es una tabla muy aparte de la otra (la tabla se llama CENSO), esta contiene el Numero de Municipio, nombre del municipio, num. de localidad, nombre de localidad y el total de habitantes que contiene esa localidad, en los dos DBLookUpComboBox solo tomo datos de la tabla CENSO no de la otra, lo que quiero es que no repita datos en el nombre del municipio, solo que aparezca una vez y con sus respectivas localidades.

saludos..

roman 09-02-2006 17:28:33

Cita:

Empezado por Goyo
la que contiene la informacion de municipios y localidades es una tabla

Pues aquí ya perdiste. Necesitas normalizar tus tablas, punto. La sóla descripción que diste originalmente, es claro que se deben tener dos tablas, no una, y de ahí que supusiera la estructura arriba mencionada.

EDITO:

No sé qué tanto sepas de normalización de tablas, pero el caso es que tal como lo tienes (y no cuento siquiera la tabla censos) tienes una redundancia de información y no resulta raro que se repitan los registros en tus consultas.

// Saludos

Goyo 10-02-2006 21:19:11

ya lo hice tal como me lo indicaste primeramente con dos tablas, de hecho ya funciona perfectamente, ahora como puedo hacer para que dentro de esos dblookupcombobox al pulsar una tecla, automaticamente me mande a la letra siguiente o anterior segun sea la primer letra con que inicie el nombre del municipio.

saludos... :)

roman 10-02-2006 21:35:25

No entiendo bien. Si tienes los municipios ordenados por nombre, al pulsar la L, el combo se colocará en el primer muncipio con L. Es el comportamiento normal de un combo.

// Saludos


La franja horaria es GMT +2. Ahora son las 20:55:28.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi