procedure TFrm_ygcx.Edit2Change(Sender: TObject);
begin
try
      with ADoquery1 do
      begin
        Close;
        SQL.Clear;
        SQL.Add('select * from tem_em ');
        SQL.Add('where py like :a');
        parameters.ParamByName('a').Value:=Trim(Edit2.Text)+'%';
        open;
      end;
    except
      Application.MessageBox('请正确输入条件','提示',mb_ok);
    end;
end;
上面实现了单字段的功能,后来我改为
procedure TFrm_ygcx.Edit2Change(Sender: TObject);
begin
try
      with ADoquery1 do
      begin
        Close;
        SQL.Clear;
        SQL.Add('select * from tem_em ');
        SQL.Add('where py like :a or name like :a or bm like :a');
        parameters.ParamByName('a').Value:=Trim(Edit2.Text)+'%';
        open;
      end;
    except
      Application.MessageBox('请正确输入条件','提示',mb_ok);
    end;
end;
就只能查询第一个条件,如何改为多字段查询

解决方案 »

  1.   


    procedure TFrm_ygcx.Edit2Change(Sender: TObject); 
    begin 
    try 
          with ADoquery1 do 
          begin 
            Close; 
            SQL.Clear; 
            SQL.Add('select * from tem_em '); 
            SQL.Add('where (py like ''%'+edit2.Text+'%''' +' or (Name like ''%'+edit2.Text+'%'')'); 
            open; 
          end; 
        except 
          Application.MessageBox('请正确输入条件','提示',mb_ok); 
        end; 
    end; 
      

  2.   

    xiaobaoqi 的begin
    try
          with ADoquery1 do
          begin
            Close;
            SQL.Clear;
            SQL.Add('select * from tem_em ');
            SQL.Add('where (py like ''%'+edit2.Text+'%'') or (empName like ''%'+edit2.Text+'%'')');
            open;
          end;
        except
          Application.MessageBox('请正确输入条件','提示',mb_ok);
        end;
    end;也不行,只对第一个条件也作用
      

  3.   

    不知怎么搞的,下面这一句
    SQL.Add('where py like :a or name like :a or bm like :a'); 
    改为
    SQL.Add('where py like :a or name like :b or bm like :c');
    才可以 
      

  4.   

    或者改成:
    SQL.Add('where py+name+bm like :a'); 
    这样来实现都可以
      

  5.   

    fyie
    你的方法还是和我的一样,只能实现第一个字段的查询 我的意思是想在edit2中实现查询员工的拼音,工号,姓名的模糊查询,只要满足任何一个条件都显示出来
      

  6.   

    fyje你的方法也无法实现,结果跟我的一样,只能查询第一个条件,我的目的是在edit2中输入的值类似于员工的工号,拼音,姓名,只要满足一个条件就可以了
      

  7.   

    自己跟踪下,看看SQL的中传的值,估计值有问题
      

  8.   

    SQL.Add('where py+name+bm like :a'); 
    或者
    SQL.Add('where name+py+bm like :a'); 
    或者
    SQL.Add('where bm+py+namelike :a');
    都试过了,都只能查询第一个条件,也说明了值没有问题
      

  9.   


    select * from TABLE where p_name like '%台%' or nuit like '%台%'[itemno]   [p_name]     [tpye]  [nuit]
    AAAA 手提式防爆燈 BD-60S 台      
    BBBB 台式話筒 RM-370 只 只  沒問題啊