ADODataSet1.Filter:=SField+' like '+''''+'%'+edit1.Text+'%'+'''';

解决方案 »

  1.   

    但用Filter就只显示合条件的纪录,不合条件的纪录就不会显示出来,我只想找到这个纪录再定位到这个纪录上,好像Excel的查找一样
      

  2.   

    locate(fieldname,findstring,[])//匹配查找,默认
    locate(fieldname,findstring,[loPartialKey])//模糊查找
      

  3.   

    用lopartialkey这个参数只能开头的字符的模糊查找,却不能实现中间字符的模查找
      

  4.   

    利用infopower 3000--->TwwLocateDialog.MatchType[mtExactMatch,mtPartialMatchAny,mtPartialMatchStart]
      

  5.   

    如果你安装了Infopower 3000,你就会解决问题的。
    www.woll2woll.com
      

  6.   

    以下是把所有姓李的学生显示出来
    ADOTable1.TableName:='tabStudents';
    ADOTable1.Filtered:=False;
    ADOTable1.Filter:='StuName Like '+QuotedStr('李%');
    ADOTable1.Filtered:=True;
      

  7.   

    我试过,用locate的确不能实现中间字符的模糊查找。用过滤和SQL只能显示符合条件的记录,其它的记录就显示不出来。你的意思是把游标定位到符合条件的记录,但显示的依然是全部记录。我试过一个很笨的办法:
    ............... 
    value:=testedit.text;               //value是输入的查询条件
     with   testQuery do
          begin
          first;
          fval:=fieldbyname(field).AsString;//field为需要查找的字段
          startnum:=RecNo;
          lastnum:=RecordCount;
          end;
          for i:=startnum to lastnum do
          begin
          if CheckBox1.Checked=false then    //不区分大小写,将比较字符串转换为大写
          begin
          value:=LowerCase(value);
          fval:=LowerCase(fval);
          end;
          if (Pos(value, fval) > 0) or (Pos(fval,value) > 0)  then
          Abort            //找到,停止循环
          else             //没有找到,继续找下一条
          begin
           testQuery.Next;
           fval:=testQuery.Fieldbyname(field).AsString;