Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-01-2007
Avatar de day_eli
day_eli day_eli is offline
Miembro
 
Registrado: ene 2007
Posts: 31
Poder: 0
day_eli Va por buen camino
Red face Ayuda para crear un filtro

Buen día para todos...estoy migrando de vb6 a delphi 6, y les confieso que se me ha hecho un poco dificil.

Aqui les tengo algo a ver si pueden ayudarme:
Tengo 2 TComboBox, uno para mostrar los paises y otro para mostrar los estados, lo que quiero es que al seleccionar un país, el combo de los estados tenga automaticamente los estados del país seleccionado. ¿Cómo puedo hacer Esto?

Agradezco mucho a Quienes puedan Ayudarme (a no hacer tan frustrante esta migración)!!
Responder Con Cita
  #2  
Antiguo 19-01-2007
Avatar de Onti
Onti Onti is offline
Miembro
 
Registrado: jul 2003
Ubicación: La Paz - Bolivia
Posts: 500
Poder: 21
Onti Va por buen camino
Podriras utilizar el evento OnCloseUp del TComboBox para detectar el momento que seleccionan un país y aplicar un filtro el el Combo de los estados, ahora esto depende de la forma en la que estas "cargando" los combos con los valores de países y estados

Generalmente para el mismo caso yo utilizo el componente DBLookupComboBox con el cual puedo relacionar directamente a los campos de una tabla
Responder Con Cita
  #3  
Antiguo 19-01-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Supongo que tendrás tus tablas paises y estados similares a éstas:

paises = (id, pais, ... )
estados = (id, estado, pais_id)

donde id es la llave primaria.

Tendrás dos Table (o los dataset que uses para tu base), tblPaises y tblEstados, enlazados a estas tablas. Tomas dos DataSource, dsPaises y dsEstados y los conectas a los Table mediante su propiedad DataSet.

Ahora, lo que debes hacer es establecer la relación maestro-detalle entre paises y estados. Para ello, en tblEstados asignas dsPaises a su propiedad MasterSource y en su propiedad MasterFields pones id;pais_id para relacionar la llave de la tabla paises con la llave foránea pais_id de la tabla estados.

Finalmente, en lugar de usar ComboBox, usa dos DBLookupComboBox, digamos cbPaises y cbEstados. Popnes sus propiedades así:

cbPaises.ListSource: dsPaises
cbPaises.KeyField: 'id';
cbPaises.ListField: 'pais'

y similar para los estados.

De esta manera, los combos mostrarán automáticamente los registros de las tablas, y, gracias a la relación con MasterSource y MasterFields, el combo de los estados se filtra automáticamente.

// Saludos
Responder Con Cita
  #4  
Antiguo 19-01-2007
Avatar de day_eli
day_eli day_eli is offline
Miembro
 
Registrado: ene 2007
Posts: 31
Poder: 0
day_eli Va por buen camino
Yo trate de utilizar esos DbLookUpComboBox....pero no supe. Entonces lo que hice fue insertar un TIbTable para los Paises, y en el OnCreate del Form escribí este codigo:

with TBLPaises do
begin
first;
while not eof do
begin
if (cmbpaises.Items.IndexOf(FieldByName('PAIS').AsString)=-1)then
cmbpaises.Items.Add(FieldByName('PAIS').AsString);
next;
end;
end;

Y así Asigne los paises al combo de Paises
Responder Con Cita
  #5  
Antiguo 19-01-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por day_eli
pero no supe.
Pues ahora ya lo sabes. Sólo que hay un pequeño error en lo que puse. Primero, para poder establecer la relación maestro-detalle, debes agregar un índice sobre la llave foránea pais_id y asignarlo en la propiedad IndexName de tblEstados. Y la propiedad MasterFields es simplemente id. En resumen:

tblEstados.IndexName: nombre del índice sobre pais_id
tblEstados.MasterSource: dsPaises
tblEstados.MasterFields: id

Si la llave primaria de paises (y, por tanto, la llave foránea de estados) consta de más de un campo, entonces en MasterFields pones todos los campos que conforman la llave, separándolos con ;.

Toda la relación es más fácil hacerla usando el editor de MasterFields (doble clic sobre el botón de los tres puntos)

// Saludos
Responder Con Cita
  #6  
Antiguo 19-01-2007
Avatar de day_eli
day_eli day_eli is offline
Miembro
 
Registrado: ene 2007
Posts: 31
Poder: 0
day_eli Va por buen camino
Gracias!!! La verdad me ha sido muy util la Ayuda que me han prestado Uds.

Muy Agradecida.
Responder Con Cita
  #7  
Antiguo 19-01-2007
Avatar de day_eli
day_eli day_eli is offline
Miembro
 
Registrado: ene 2007
Posts: 31
Poder: 0
day_eli Va por buen camino
Ahora mi pregunta sería...¿La lista de elementos de un DBLookUpComboBox puede desplegarse como los ComboBox?, es decir ¿Se pueden Ver Varios Elementos hacia abajo de la lista??
Responder Con Cita
  #8  
Antiguo 19-01-2007
Avatar de day_eli
day_eli day_eli is offline
Miembro
 
Registrado: ene 2007
Posts: 31
Poder: 0
day_eli Va por buen camino
utilizando la propiedad DropDownRows!!!...listo!!!
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ayuda para crear ayuda... Gabriel2 Varios 2 10-06-2005 01:15:18
crear ayuda para una aplicacion.... User_baja1 Varios 3 08-04-2005 15:42:03
Ayuda para crear una clase estebanx OOP 0 10-03-2005 17:36:49
Ayuda con el Microsoft Help Workshop para crear las ayudas para aplicaciones en Delph Lester Varios 2 19-06-2003 18:14:16
Ayuda para crear mi propio IDE antonio Varios 2 03-06-2003 14:07:32


La franja horaria es GMT +2. Ahora son las 19:40:38.


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
Copyright 1996-2007 Club Delphi