问题:
使用ADOQuery以下代码进行模糊查询时,却发现没办法进行模糊查询,查询的结果是完全匹配查询模式,请问要如何才能实现ADOQuery模糊查询,感谢!代码:
     begin
     ADOQuery1.close;
     ADOQuery1.SQL .clear;
     ADOQuery1.SQL .ADD('select *  from TMaterial where Project like :Proj');
     ADOQuery1.Parameters .ParamByName('Proj').Value :='%'+ComboBox2.Text+'%';
     ADOQuery1.open;
     end;

解决方案 »

  1.   

    var sqlstr:string;
    begin
      if Trim(EdtBookID.Text)<>'' then
        sqlstr:=sqlstr+' 书号 like ''%'+Trim(EdtBookID.Text)+'%'''
      else
        sqlstr:=sqlstr+'1=1';
      if Trim(EdtBookName.Text)<>'' then
        sqlstr:=sqlstr+' AND 书名 like ''%'+Trim(EdtBookName.Text)+'%''';
      if Trim(EdtAuthor.Text)<>'' then
        sqlstr:=sqlstr+' AND 作者 like ''%'+Trim(EdtAuthor.Text)+'%''';
      if Trim(EdtPress.Text)<>'' then
        sqlstr:=sqlstr+' AND 出版社 like ''%'+Trim(EdtPress.Text)+'%''';
      //ShowMessage(sqlstr);
      with FrmMain.Query do
      begin
        sql.Clear;
        sql.Add('SELECT * FROM book WHERE '+sqlstr);
        //ShowMessage(sql.Text);
        open;
      end;
    end;
      

  2.   

    To Shuihan20e/meiqingsong,感谢俩位的信息!!!将查询语句改为如下情况问题得以解决:   begin 
        ADOQuery1.close; 
        ADOQuery1.SQL .clear; 
        ADOQuery1.SQL .ADD('select *  from TMaterial where Project like ''%'+Trim(ComboBox2.Text)+'%''')
        //ADOQuery1.SQL .ADD('select *  from TMaterial where Project like :Proj'); 
        //ADOQuery1.Parameters .ParamByName('Proj').Value :='%'+ComboBox2.Text+'%'; 
        ADOQuery1.open; 
        end;注: delphi6/delphi7 在模糊查询方面可能有所不同???
      

  3.   

    ADOQuery1.SQL .ADD('select * from table where field like ' + '%' +#39 +trim(edit1.text)+#39+'%');
      

  4.   

    SQL中字符串查询条件前后要加',也就是#39
      

  5.   

    加错地方了:
    ADOQuery1.SQL .ADD('select * from table where field like ' +#39+ '%'  +trim(edit1.text)+'%'+#39);
      

  6.   

    模糊查询时最好把%号写到SQL语句中,不要用parambyname传递,如下:  begin 
        ADOQuery1.close; 
        ADOQuery1.SQL .clear; 
        ADOQuery1.SQL .ADD('select *  from TMaterial where Project like ''%'+ComboBox2.Text+'%'''); 
        ADOQuery1.open; 
      end;