Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-12-2004
[Nbull] Nbull is offline
Miembro Premium
 
Registrado: nov 2004
Ubicación: Valencia-España
Posts: 168
Poder: 20
Nbull Va por buen camino
Question Rellenar un ListBox con los registros de un campo de la BD

Hola a todos y felices fiestas.

Tengo una aplicación que tabaja con adoquery y con una base de datos access, he puesto un ListBox y quiero que este se me rellene con los registros que halla el el campo poblacion y no se como hacerlo, por que no todos los registros tienen puesta la población y claro algunos de ellos la población es la misma y no quiero que se repitan.

¿Como puedo hacerlo?

Gracias de antemano y a pasar buenas fiestas.

Un Saludo
Responder Con Cita
  #2  
Antiguo 29-12-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.267
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Nbull
...Tengo una aplicación que tabaja con adoquery y con una base de datos access, he puesto un ListBox y quiero que este se me rellene con los registros que halla el el campo poblacion y no se como hacerlo, por que no todos los registros tienen puesta la población y claro algunos de ellos la población es la misma y no quiero que se repitan.
(1) Ejecuta un consulta para obtener nombres únicos de las provincia; Para ello puedes utilizar el DISTINCT de SQL. Por ejemplo:

Código SQL [-]
 select distinct nombreProvincia from Provincia

Eso te debería devolver registros únicos (en todo caso 1 que te puede molestar con NULL).

(2) Haces un recorrido estandard por la consulta (WHILE not ADOQuery.EOF...) y los vas añadiendo al ListBox; En todo caso utiliza un IF para comprobar que no sean nulos... (prop. IsNull del Field)
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 29-12-2004
[Nbull] Nbull is offline
Miembro Premium
 
Registrado: nov 2004
Ubicación: Valencia-España
Posts: 168
Poder: 20
Nbull Va por buen camino
Hola y gracias de nuevo Neftali por tu ayuda, tengo una duda, cuando tu pones:
Código SQL [-]
select distinct nombreProvincia from Provincia
En NombreProvincia que le paso, por que yo quiero crear esta funcion en el Oncreate del Form principal, y quiero que cuando se ejecute la aplicación ya salgan las poblaciones que hay en la BD en el ListBox.

No se si me he explicado bien, pero, espero que puedas aclararme la duda.
Responder Con Cita
  #4  
Antiguo 29-12-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.267
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Nbull
...cuando tu pones:
Código SQL [-]
 select distinct nombreProvincia from Provincia
En NombreProvincia que le paso, por que yo quiero crear esta funcion en el Oncreate del Form principal, y quiero que cuando se ejecute la aplicación ya salgan las poblaciones que hay en la BD en el ListBox.
* Provincia es el nombre de la Tabla de provincias
* NombreProvincia es el nombre del campo de la tabla Provincia que quieres que aparezca en el ListBox
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 30-12-2004
[Nbull] Nbull is offline
Miembro Premium
 
Registrado: nov 2004
Ubicación: Valencia-España
Posts: 168
Poder: 20
Nbull Va por buen camino
Neftali soy un pesao pero es que le he dado dos mil vueltas y no me deja ejecutar la aplicación, tengo el siguiente codigo:

Código Delphi [-]
procedure TForm7.FormCreate(Sender: TObject);
begin
 AdoQuery1.Active:=true;
 WHILE not AdoQuery1.EOF do
 begin
     AdoQuery1.SQL.Text:='SELECT distinct Poblacion FROM agenda';
     ListBox1.Items.Add(Dbaux.Field.Text);
 end;
end;

Hay veces que se me queda haciendo un bucle infinito con el While y no se me llega a ejecutar la aplicación y otras veces como es el caso del código que te he puesto más arriba me da un excepción.

Todo depende de como intente añadir al ListBox las poblaciones

DbAux es un DbEdit que lo he asociado al campo Poblacion del Adoquery1. Estoy atascado no se como seguir, a ver si lo consigo y dejo de molestar por que soy un pesao...
Responder Con Cita
  #6  
Antiguo 30-12-2004
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.409
Poder: 22
fjcg02 Va camino a la fama
Te falta el Next. Estás incluyendo en el Listbox siempre el mismo registro, por eso nunca termina el bucle.

procedure TForm7.FormCreate(Sender: TObject);
begin
AdoQuery1.Active:=true;
WHILE not AdoQuery1.EOF do
begin
AdoQuery1.SQL.Text:='SELECT distinct Poblacion FROM agenda';
ListBox1.Items.Add(Dbaux.Field.Text);
AdoQuery1.NEXT;

end;
end;

Espero que te sirva de ayuda.

Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #7  
Antiguo 30-12-2004
[Nbull] Nbull is offline
Miembro Premium
 
Registrado: nov 2004
Ubicación: Valencia-España
Posts: 168
Poder: 20
Nbull Va por buen camino
Fjcg02 sigue sin funcionarme, me sigue saliendo la dichosa excepción, no se que podra ser pero lo tengo como me has dicho y nada que no se me ejecuta.


Gracias de todas formas por tu ayuda
Responder Con Cita
  #8  
Antiguo 30-12-2004
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.409
Poder: 22
fjcg02 Va camino a la fama
Código:
procedure TForm7.FormCreate(Sender: TObject);
begin
// Asigna la SQL y abre una sola vez, no cien ..
AdoQuery1.SQL.Add('SELECT distinct Poblacion FROM agenda');
AdoQuery1.Active:=true;
// recorre los registros
WHILE not AdoQuery1.EOF do
  begin
    // y asigna el valor de los campos de esa query que utilizas, y no otra
    ListBox1.Items.Add(AdoQuery1,Fields.FieldByName('Poblacion'.AsString);
    AdoQuery1.NEXT;
  end;
end;

Espero que te sirva de ayuda.

Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #9  
Antiguo 30-12-2004
[Nbull] Nbull is offline
Miembro Premium
 
Registrado: nov 2004
Ubicación: Valencia-España
Posts: 168
Poder: 20
Nbull Va por buen camino
Fjcg02 muchas gracias ya lo he solucionado, tenia que sacar la consulta fuera del While.Pero, ahora como quito los registros que estan vacios, Neftalí me dijo que con la propiedad Isnull del Field pero como llamo a esa propiedad.

Muchisimas gracias a los dos por vuestra ayuda.

Un Saludo
Responder Con Cita
  #10  
Antiguo 30-12-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.267
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Falta cerrar un paréntesis en:
Código Delphi [-]
 // y asigna el valor de los campos de esa query 
 // que utilizas, y no otra
 ListBox1.Items.Add(AdoQuery1,Fields.FieldByName('Poblacion').AsString);

y opcionalmente añadir el control para evitar un posible nulo, pero a ésto era a lo que yo me refería.


(Editado...)
NOTA: Veo que la aclaración llegó tarde...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #11  
Antiguo 30-12-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.267
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Nbull
...Pero, ahora como quito los registros que estan vacios, Neftalí me dijo que con la propiedad Isnull del Field pero como llamo a esa propiedad.
Algo así debería funcionar.

Código Delphi [-]
  procedure TForm7.FormCreate(Sender: TObject);
 begin
 // Asigna la SQL y abre una sola vez, no cien ..
 AdoQuery1.SQL.Add('SELECT distinct Poblacion FROM agenda');
 AdoQuery1.Active:=true;
 // recorre los registros
 WHILE not AdoQuery1.EOF do
   begin
     // Si es vacío no lo añado
     if not (AdoQuery1,Fields.FieldByName('Poblacion').IsNull) then begin
       // y asigna el valor de los campos de esa query que utilizas, y no otra
       ListBox1.Items.Add(AdoQuery1,Fields.FieldByName('Poblacion').AsString);
     end;
     AdoQuery1.NEXT;
   end;
 end;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #12  
Antiguo 30-12-2004
[Nbull] Nbull is offline
Miembro Premium
 
Registrado: nov 2004
Ubicación: Valencia-España
Posts: 168
Poder: 20
Nbull Va por buen camino
Neftalí muchisimas gracias ya he solucionado el problema pongo el código por si alguien que sea tan novato como yo lo necesita:

Código Delphi [-]
procedure TForm7.FormCreate(Sender: TObject);
begin
 AdoQuery1.SQL.Text:='SELECT distinct Poblacion FROM agenda';
 AdoQuery1.Active:=true;
 WHILE not AdoQuery1.EOF do
 begin
     If(Adoquery1.Fields.FieldByName('Poblacion').IsNull=false)Then
      begin
       ListBox1.Items.Add(Datasource3.DataSet.FieldByName('poblacion').AsString);
      end;
      AdoQuery1.Next;
 end;
end;
Un Saludo y muchas gracias
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


La franja horaria es GMT +2. Ahora son las 16:42:45.


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