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)
-   -   Filtro multiple en una base de datos (https://www.clubdelphi.com/foros/showthread.php?t=81866)

nmenna10 27-12-2012 16:47:09

Filtro multiple en una base de datos
 
Hola buen dia amigos, tengo una consultita para hacerles, espero me puedan ayudar...

El problema que tengo es que quiero hacer un filtro multiple en una base de datos, espero me exprese bien...
La base de datos es una base simple en acces, esta hecha para llevar un control de los equipos que entran en reparacion al negocio en el que trabajo, en cada "registro" de la base se pueden ingresar 3 equipos, por lo tanto tengo 3 campos de numero de serie, uno para cada equipo, el problema que tengo es que cuando cargo 3 equipos en el mismo registro, cuando uqiero hacer la busqueda por numero de serie, solo me filtra teniendo en cuenta el primero, los otros dos no me los "checkea" para ver si son los que estoy buscando, entonces muchas veces no me los filtra...

Código Delphi [-]
procedure TForm_Equipos.SpeedButton1Click(Sender: TObject);
Var
 Filtro:string;

begin
 

 DBGrid1.Visible:=true;
  Filtro:='';

  if RMA.Text <> '' then
    Filtro:=  '(RMA like %' + RMA.Text + '%)';

  if Cliente.Text <> '' then
  begin
    if filtro <> '' then filtro:= filtro + ' and ';
    Filtro:= Filtro + '(Cliente Like %' + Cliente.Text + '%)';
  end;

  if edit_numero_serie.Text <> '' then
  begin
    if filtro <> '' then filtro:= filtro + ' and ';
    Filtro:= Filtro + '(numero_serie Like %' + edit_numero_serie.Text + '%)';
  end;

  DataModule1.Table_equipos.Filter:= Filtro;
  DataModule1.Table_equipos.Filtered:= True;
end;


ese seriea el codigo de mi busqueda, espero puedan yudarme, muchisimas graciasss!

Ñuño Martínez 30-12-2012 19:25:40

Deberías comprobar qué contiene "Filtro" antes de aplicarlo, a ver si es lo que se espera o no.

nmenna10 31-12-2012 16:30:05

hola, perdon me equivoque de codigo cuando lo puse en el hilo, el codigo seria este:

Código Delphi [-]
procedure TForm_Equipos.SpeedButton1Click(Sender: TObject);
Var
 Filtro:string;

begin


if edit1.Text <> '' then
  begin
    if datamodule1.Table_RMA.FieldByName('nserie1').AsString <> '' then
    begin
      if filtro <> '' then filtro:= filtro + ' and ';
      Filtro:= Filtro + '(nserie1 Like %' + edit1.Text + '%)';
    end;

    if datamodule1.Table_RMA.FieldByName('nserie2').AsString <> '' then
    begin
      if filtro <> '' then filtro:= filtro + ' and ';
      Filtro:= Filtro + '(nserie2 Like %' + edit1.Text + '%)';
    end;

    if datamodule1.Table_RMA.FieldByName('nserie3').AsString <> '' then
    begin
      if filtro <> '' then filtro:= filtro + ' and ';
      Filtro:= Filtro + '(nserie3 Like %' + edit1.Text + '%)';
    end;


el problema que tengo seria el mismo.

Muchas gracias y disculpen....

Ñuño Martínez 02-01-2013 13:03:17

Yo sigo sin ver dónde puede estar el problema. Insisto en que deberías comprobar qué contiene "Filtro" tras construir la consulta.


La franja horaria es GMT +2. Ahora son las 21:33:17.

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