Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-02-2015
Avatar de The Cid James
The Cid James The Cid James is offline
Miembro
NULL
 
Registrado: jun 2013
Posts: 129
Poder: 11
The Cid James Va por buen camino
DbCombobox

Bueno abro un nuevo hilo dado que tengo problemas con dbcombobox, estoy tratando de hacer un query a una tabla de datos para listar paises, estados, etc ahora bien una vez enlazado el dataset a una query simple
Código SQL [-]
SELECT 
pais.nombre
FROM
  pais

Una vez echo esto completo los campos de dbcombobox con el dataset y el campo del cual se toma la consulta pero cuando ejecuto el codigo solo me sale el primer pais y no me enlista los demas.
Ademas de esto quisiera que una vez seleccionado el pais me filtre el siguiete dbcombobox el estado o provincia de cada pais tomando como referencia el id del pais

Saludos y gracias por la colaboracion
Responder Con Cita
  #2  
Antiguo 17-02-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bienvenido a clubdelphi, como siempre aconsejamos a los nuevos, no olvides leer nuestra guía de estilo, gracias por tu colaboración

Ya te lo he comentado en otras ocasiones. Pero parece que no lo has leido.
Recuerda poner títulos descriptivos a tus preguntas.
Gracias.
Responder Con Cita
  #3  
Antiguo 17-02-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola
Cita:
Empezado por The Cid James Ver Mensaje
Ademas de esto quisiera que una vez seleccionado el pais me filtre el siguiete dbcombobox el estado o provincia de cada pais tomando como referencia el id del pais
Para lo que comentas resulta mas simple usar dos TComboBox:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  // Pais
  with tuQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT ID, NOMBRE FROM PAIS');
    SQL.Add('ORDER BY NOMBRE');
    Open;
    while not Eof do
    begin
      ComboBox1.Items.AddObject(FieldByname('NOMBRE').AsString,
        Pointer(FieldByName('ID').AsInteger));
      Next;
    end;
    First;
    ComboBox1.ItemIndex:= 0;
  end;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  // Provincia
  with tuQuery2 do
  begin
    Close;
    SQL.Text:= 'SELECT ID, NOMBRE FROM PROVINCIA WHERE REF_PAIS = :PID';
    ParamByName('PID').AsInteger:= Integer(ComboBox1.Items.Objects[ComboBox1.ItemIndex] );
    Open;
    ComboBox2.Clear;
    while not Eof do
    begin
      ComboBox2.Items.AddObject(FieldByname('NOMBRE').AsString,
        Pointer(FieldByName('ID').AsInteger));
      Next;
    end;
    First;
    ComboBox2.ItemIndex:= 0;
  end;
end;

Pero mas eficiente es usar dos TDBLookupComboBox, ejemplo:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  // Pais
  with tuQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT ID, NOMBRE FROM PAIS');
    SQL.Add('ORDER BY NOMBRE');
    Open;
  end;
  with DBLookupComboBox1 do
  begin
    ListSource:= DataSource1; // -> tuQuery1
    ListField := 'NOMBRE';    // a mostrar: nombre país
    KeyField  := 'ID'         // id pais
  end;
end;

procedure TForm1.DBLookupComboBox1Exit(Sender: TObject);
begin
  // Provincia
  with tuQuery2 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT ID, NOMBRE, REF_PAIS');
    SQL.Add('FROM PROVINCIA WHERE REF_PAIS = :PID');
    SQL.Add('ORDER BY NOMBRE');
    ParamByName('PID').AsInteger:= DBLookupComboBox1.KeyValue;
    Open;
  end;
  with DBLookupComboBox2 do
  begin
    ListSource:= DataSource2; // -> tuQuery2
    ListField := 'NOMBRE';    // a mostrar: nombre provincia
    KeyField  := 'ID'         // id provincia
  end;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 17-02-2015
Avatar de The Cid James
The Cid James The Cid James is offline
Miembro
NULL
 
Registrado: jun 2013
Posts: 129
Poder: 11
The Cid James Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Bienvenido a clubdelphi, como siempre aconsejamos a los nuevos, no olvides leer nuestra guía de estilo, gracias por tu colaboración

Ya te lo he comentado en otras ocasiones. Pero parece que no lo has leido.
Recuerda poner títulos descriptivos a tus preguntas.
Gracias.
Lo lei en cuanto vi el post anterior, que "descritivo" sea amplio y pueda tener muchas interpretaciones es distinto , a mi me parece bastante descritivo el titulo dado que es el nombre del componente del cual tengo dudas.

Mmm estoy trabajando con zeos y sus query, probe el TDBLookupComboBox pero no encontre manera de configurarlo, por el codigo que me pasaste, y corregime si me equivoco ¿no se puede trabajar con las query diectas (es decir hacer la query y llamarla por medio del dataset)?
Responder Con Cita
  #5  
Antiguo 17-02-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por The Cid James Ver Mensaje
... a mi me parece bastante descritivo el titulo ...
Sí, muy descriptivo, al ver el título se entiende perfectamente que preguntas la manera de cambiar el color de un dbcombobox. O crear un dbcombobox en tiempo de ejecución. O cómo asignar un datasource de un dataset alojado en un datamodule a un dbcombobox. O para qué sirve un dbcombobox...
Responder Con Cita
  #6  
Antiguo 17-02-2015
Avatar de The Cid James
The Cid James The Cid James is offline
Miembro
NULL
 
Registrado: jun 2013
Posts: 129
Poder: 11
The Cid James Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Sí, muy descriptivo, al ver el título se entiende perfectamente que preguntas la manera de cambiar el color de un dbcombobox. O crear un dbcombobox en tiempo de ejecución. O cómo asignar un datasource de un dataset alojado en un datamodule a un dbcombobox. O para qué sirve un dbcombobox...
Para eso esta el cuerpo del mensaje?, el que ve el hilo ya sabe que estoy hablando o teniendo problemas con dbcombobox y obviamente no es una guia en fin son puntos de vista y no vienen al caso no soluciono nada discutiendo contigo, peor hubiera sido poner de titulo "ayuda urgente".
Responder Con Cita
  #7  
Antiguo 17-02-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Mira al final de esta misma página, abajo del todo, ¿ves los títulos tan descriptivos que han usado otros como tú?
Para eso sirve poner títulos descriptivos. Si alguien quiere cambiar de color un dbcombobox y hace una búsqueda con los términos "cambiar color dbcombobox" aparecerán los hilos cuyos títulos tengan esas palabras. Si ve un título que pone "dbcombobox" ¿cómo sabe de qué trata ese hilo? ¿revisa los miles de hilos para ver si es el que está buscando?
Para eso sirve poner títulos descriptivos.
Gracias por tu colaboración.
Responder Con Cita
  #8  
Antiguo 18-02-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por The Cid James Ver Mensaje
...Mmm estoy trabajando con zeos y sus query, probe el TDBLookupComboBox pero no encontre manera de configurarlo, por el codigo que me pasaste...
El código funciona correctamente con los componentes IBX y aunque no he usado los ZEOS, tengo entendido que tendría que hacerlo del mismo modo.

Cita:
Empezado por The Cid James Ver Mensaje
... y corregime si me equivoco ¿no se puede trabajar con las query diectas (es decir hacer la query y llamarla por medio del dataset)?.
Si, se puede establecer la relación de forma directa, pero si usas TComboBox o DBComboBox es inevitable recorrer la consulta obtenida para cargar las filas obtenidas cada vez que el contenido del primero cambia.




Es totalmente correcta la observación que te hace Casimiro. También estás planteando dos cuestiones distintas en un mismo hilo:
1)
Cita:
Bueno abro un nuevo hilo dado que tengo problemas con dbcombobox, estoy tratando de hacer un query a una tabla de datos para listar paises, estados, etc ahora bien una vez enlazado el dataset a una query simple
...
Una vez echo esto completo los campos de dbcombobox con el dataset y el campo del cual se toma la consulta pero cuando ejecuto el codigo solo me sale el primer pais y no me enlista los demas.
2)
Cita:
Ademas de esto quisiera que una vez seleccionado el pais me filtre el siguiete dbcombobox el estado o provincia de cada pais tomando como referencia el id del pais
Lo que hace mas difícil poner un título que represente el problema...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #9  
Antiguo 25-02-2015
Avatar de The Cid James
The Cid James The Cid James is offline
Miembro
NULL
 
Registrado: jun 2013
Posts: 129
Poder: 11
The Cid James Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola

Para lo que comentas resulta mas simple usar dos TComboBox:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  // Pais
  with tuQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT ID, NOMBRE FROM PAIS');
    SQL.Add('ORDER BY NOMBRE');
    Open;
    while not Eof do
    begin
      ComboBox1.Items.AddObject(FieldByname('NOMBRE').AsString,
        Pointer(FieldByName('ID').AsInteger));
      Next;
    end;
    First;
    ComboBox1.ItemIndex:= 0;
  end;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  // Provincia
  with tuQuery2 do
  begin
    Close;
    SQL.Text:= 'SELECT ID, NOMBRE FROM PROVINCIA WHERE REF_PAIS = :PID';
    ParamByName('PID').AsInteger:= Integer(ComboBox1.Items.Objects[ComboBox1.ItemIndex] );
    Open;
    ComboBox2.Clear;
    while not Eof do
    begin
      ComboBox2.Items.AddObject(FieldByname('NOMBRE').AsString,
        Pointer(FieldByName('ID').AsInteger));
      Next;
    end;
    First;
    ComboBox2.ItemIndex:= 0;
  end;
end;

Pero mas eficiente es usar dos TDBLookupComboBox, ejemplo:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  // Pais
  with tuQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT ID, NOMBRE FROM PAIS');
    SQL.Add('ORDER BY NOMBRE');
    Open;
  end;
  with DBLookupComboBox1 do
  begin
    ListSource:= DataSource1; // -> tuQuery1
    ListField := 'NOMBRE';    // a mostrar: nombre país
    KeyField  := 'ID'         // id pais
  end;
end;

procedure TForm1.DBLookupComboBox1Exit(Sender: TObject);
begin
  // Provincia
  with tuQuery2 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT ID, NOMBRE, REF_PAIS');
    SQL.Add('FROM PROVINCIA WHERE REF_PAIS = :PID');
    SQL.Add('ORDER BY NOMBRE');
    ParamByName('PID').AsInteger:= DBLookupComboBox1.KeyValue;
    Open;
  end;
  with DBLookupComboBox2 do
  begin
    ListSource:= DataSource2; // -> tuQuery2
    ListField := 'NOMBRE';    // a mostrar: nombre provincia
    KeyField  := 'ID'         // id provincia
  end;
end;

Saludos
Osea que con DbCombobox no hay forma de hacerlo?
Responder Con Cita
  #10  
Antiguo 25-02-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola The Cid James.
Cita:
Empezado por The Cid James Ver Mensaje
Osea que con DbCombobox no hay forma de hacerlo?
Si claro que hay forma de hacerlo, es el mismo código que para el TComboBox usado en el mensaje #3.

Con una salvedad, que en lugar de usar el evento OnChange del ComboBox1 tendrías que usar el evento OnExit del DBComboBox1. Eso sucede por que el evento OnChange se dispara ante diferentes situaciones tratándose de un TComboBox o de un TDBComboBox.

De allí que te aconsejé el usar el TComboBox por parecerme mas simple y por que el uso de un TDBComboBox no reporta mayor beneficio para este caso en particular .

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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
DBComboBox Sole_l Conexión con bases de datos 5 13-04-2009 22:20:37
sql con dbcombobox soloriv SQL 6 14-11-2005 11:08:55
uso del dbcombobox ercrizeporta Conexión con bases de datos 1 26-06-2005 02:59:16
dbcombobox?? davidgaldo Conexión con bases de datos 2 27-02-2004 11:25:14
DBComboBox NuncaMas Conexión con bases de datos 4 17-10-2003 22:03:50


La franja horaria es GMT +2. Ahora son las 22:39:03.


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