Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   dbgrid llenado de datos (https://www.clubdelphi.com/foros/showthread.php?t=37092)

emenchi34 02-11-2006 16:40:31

dbgrid llenado de datos
 
Holasss!!
estoy trabajando con un dbgrid y un dblookupcomobox y la idea es de que una vez halla seleccionado uno de los items del combobox me aparezca no solo ese item del combobox sino todos los demas que acompañan a la respectiva fila en la tabla.. en el dbgrid no veo muchas opciones para config. solo un datasource.. pero me pone todos los datos de la tabla .....SOS!!

Rayku 02-11-2006 16:47:01

Ok Veamos
 
La Propiedad listsource Del combo Y La Propiedad datasource Del grid Deben Ser Iguales (apuntar Al Mismo dataset)

emenchi34 02-11-2006 16:53:00

dbgrid llenado
 
si de hecho apuntan al mismo dataset.. pero me despliega todos los datos de la tabla en el grid....

Rayku 02-11-2006 16:58:05

Ok
 
MIRA SI EN EL COMBO TIENES DATOS Y SEGUN LO Q SELECCIONAS DESEAS QUE EN EL GRID SE MUESTREN SOLO LOS Q INTERESAN

NECESITAS DOS DATA SET UNO PARA EL COMBO Y OTRO PARA EL GRID

EN EL EVENTO ONDATACHANGE DEL DATASET DEL COMBO, DEBES CONSULTAR/ FILTRAR LO QUE DESEAS EN EL GRID

ESPERO ESO SIRVA rayku19@hotmail.com

Bicho 02-11-2006 17:00:56

Por favor respetad la Guía de estilo y no escribais en mayúsculas.

;)

Saludos

Rayku 02-11-2006 17:04:44

ok Bicho, es q soy nuevo en esto

Caral 02-11-2006 17:10:23

Hola emenchi34
Esto es muy facil, haciendo un filtro a la tabla o query y usando un combobox sencillo.
Tienes un DBgrid, este esta conectado a un Query, la cual tiene campos, Bueno.
1- Colocamos un query nuevo en el form para que coloque la informacion en el combobox asi:
Código Delphi [-]
   AdoQuery1.SQL.Text := 'Select TuCampo From TuTabla';
   AdoQuery1.Active := True;
   While not AdoQuery1.Eof do
   begin
      Combobox1.Items.Add(AdoQuery1.Fields[0].Text);
      AdoQuery1.Next;
   end;
Con esto vemos el contienido del campo en el combobox1.
Ahora vamos a filtrar la informacion.
1- Queremos que aparezca en el grid lo que filtre el combobox hacemos esto:
Código Delphi [-]
    TuTabla.Filter := 'TuCampo = '+QuotedStr(Combobox1.Text);
    TuTabla.Filtered := True;
Con esto filtramos lo que este en el combobox y lo colocamos en el dbgrid, por supuesto TuTabla tiene que estar conectada al datasorce y este al dbgrid.
Espero que lo entiendas.
Saludos

emenchi34 02-11-2006 18:10:30

gracias
 
bueno voy a ver si me resulta.... gracias caral...

Lepe 02-11-2006 18:13:40

Un apunte al primer código de caral:
Código Delphi [-]
 AdoQuery1.SQL.Text := 'Select TuCampo From TuTabla';
   AdoQuery1.Active := True;
try
   AdoQuery1.DisableControls;
   While not AdoQuery1.Eof do
   begin
      Combobox1.Items.Add(AdoQuery1.Fields[0].Text);
      AdoQuery1.Next;
   end;
finally
  AdoQuery1.EnableControls;
end;
Usando Enable/Disable Controls permite que un bucle normal de 5 segundos de ejecución, se ejecute en menos de medio segundo.

Saludos.

Caral 02-11-2006 18:16:01

Hola emenchi34
Cuando resulte, que es un hecho, porque asi lo hago y funciona, por favor indicalo en otra nota, asi, cuando alguien mas vea esta, no se quedara con la duda, es bueno que si se hacierta con la duda, se de a conocer el resultado fina, recuerda que estos foros los ven muchas otras personas y talvez con las mismas dudas.
Saludos

Caral 02-11-2006 18:33:58

Hola Lepe
Gracias por mejorar el codigo, de eso se trata, de aprender, me parece muy bien
Saludos

emenchi34 09-11-2006 19:59:41

problemas en el dbgrid
 
holasss les comento que con el combobox no he tenido inconvenientes.. en cambio los problemas los tengo cuando quiero hacer la insercion en el dbgrid

Repasando:
tengo un combobox en el cual visualizo un campo determinado de mi tabla (campo=PRODUCTO1) (tabla=ARTIC). una vez seleccionado el producto en el combobox, atraves de un boton tendria que insertar en el dbgrid PRODUCTO1,PRECIO,CATEGORIA;todos pertenecientes a la tabla ARTIC... trate de implemetar lo escrito por caral y no me dio resultado.. quizas este errado en algo....

Caral 09-11-2006 20:13:35

Vamos a ver tal vez lo del filtro no te funciono, otra solucion.
Coloca esta vez dos query, uno obtendra, los datos para llenar el combobox y el otro colocara la informacion filtrada en el dbgrid asi:
Primer query: Coloca informacion combo:
Código Delphi [-]
AdoQuery1.SQL.Text := 'Select PRODUCTO1 From ARTIC';
   AdoQuery1.Active := True;
   While not AdoQuery1.Eof do
   begin
      Combobox1.Items.Add(AdoQuery1.Fields[0].Text);
      AdoQuery1.Next;
   end;
Segundo query: Coloca informacion filtrada en dbgrid:
Nota: este segundo query, tiene que tener un datasource ligado y este datasource tiene que estar ligado al dbgrid.
Código Delphi [-]
ADOQuery2.Active:= False;
  ADOQuery2.SQL.Text:= 'SELECT * From ARTIC';
  ADOQuery2.SQL.Add('WHERE (((ARTIC.PRODUCTO1)="'+Combobox1.Text+''"'));
  ADOQuery2.Active:= True;
Espero te sirva
Saludos

emenchi34 11-11-2006 14:48:29

error en sentencia
 
creo que tienes un error en la siguiente sentencia:
Código:

ADOQuery2.SQL.Add('WHERE (((ARTIC.PRODUCTO1)="'+Combobox1.Text+''"'));

Lepe 16-11-2006 11:34:44

Código Delphi [-]
ADOQuery2.Active:= False;
  ADOQuery2.sql.clear;  
  ADOQuery2.SQL.Add('SELECT * From ARTIC');
  ADOQuery2.SQL.Add('WHERE ARTIC.PRODUCTO1 = '+ QuotedStr(Combobox1.Text));
  ADOQuery2.Active:= True;

Prueba así. Quizás en lugar de comillas dobles, necesites comillas simples.

Para no liarte introduciendo varias comillas simples, he usado QuotedStr. Deberás usarlo si artic.producto1 está declarado como un string en la base de datos.

Saludos


La franja horaria es GMT +2. Ahora son las 03:41:52.

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