Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   problemas al filtrar datos desde combobox (https://www.clubdelphi.com/foros/showthread.php?t=88372)

elisma22 28-05-2015 02:32:15

problemas al filtrar datos desde combobox
 
saludos, estoy teniendo problemas al querer filtrar un tabla con el contenido de un combobox, y al ejecutarlo la planilla no muestra datos
pongo el código para ver si me pueden dar ua mano
Código Delphi [-]
procedure TF_articulos.FormCreate(Sender: TObject);
begin
modulo1.MyQuery_rubros.Open;
combobox1.Clear;
while not modulo1.MyQuery_rubros.Eof do
  begin
    combobox1.Items.Add(modulo1.MyQuery_rubros.FieldByName('nombre_rubro').AsString);
    modulo1.MyQuery_rubros.Next;

  end;
end;


procedure TF_articulos.ComboBox1Change(Sender: TObject);
var
nombre:string;
begin
 with TComboBox(Sender) do
  begin
    modulo1.MyQuery_articulos.Close;
    modulo1.MyQuery_articulos.SQL.Clear;
    modulo1.MyQuery_articulos.SQL.Add('select articulos.id_articulo,articulos.nombre_articulos,rubros.nombre_rubro,articulos.precio,articulos.desc  ripcion from articulos inner join rubros on articulos.id_rubro=rubros.id_rubro');
    modulo1.MyQuery_articulos.SQL.Add(' where rubros.nombre_rubro like :nombre; ');
    nombre:=combobox1.Items[ItemIndex];
    modulo1.MyQuery_rubros.Open;
  end;
end;

espero que puedan ayudarme con este problema.

ecfisa 28-05-2015 03:39:47

Hola elisma22, bienvenido a Club Delphi :)

Como es costumbre con los que ingresan, te invitamos a leer nuestra guía de estilo.


El problema es que en la consulta SQL declaras un parámetro, pero en ningún momento le das un valor. Lo que le asignes a la variable "nombre" no tiene relación alguna con el parámetro "NOMBRE" que está dentro de la consulta SQL.

Debería ser:
Código Delphi [-]
procedure TTF_articulos.ComboBox1Change(Sender: TObject);
begin
  with modulo1.MyQuery_articulos do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT AR.ID_ARTICULO, AR.NOMBRE_ARTICULO, RU.NOMBRE_RUBRO, AR.PRECIO, AR.DESCRIPCION');
    SQL.Add('FROM ARTICULOS AR INNER JOIN RUBROS RU ON AR.ID_RUBRO = RU.ID_RUBRO');
    SQL.Add('WHERE RU.NOMBRE_RUBRO LIKE :NOMBRE');
    ParamByName('NOMBRE').AsString := ComboBox1.Items[ComboBox1.ItemIndex]+'%'; // asignación al parámetro
    Open;
  end;
end;

Saludos :)


La franja horaria es GMT +2. Ahora son las 20:05:31.

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