我现在要用Query的filter 实现sql中 like '%dd%'的功能!?
模糊查询过滤query中的数据。急用!!!

解决方案 »

  1.   

    query.filtered:=false;
    Query.filter:='字段 like ''%aaa%''';
    query.filtered:=true;
      

  2.   

    filter := '字段 LIKE ''%dd%''';
    Filtered := true;不过TQuery可能不支持LIKE Filter,TClientDataSet支持
      

  3.   

    Query.Filter:='name='123*''//列出name字段以123开头的的记录如果要实现复杂的FILTER,可以考虑用OnFilterRecord事件procedure TForm1.QueryFilterRecord(...);
    begin
      Accept:=False;
      if Pos('123', Query.FieldByName('name').AsString)>0 then
        Accept:=True;
    end;
      

  4.   

    是啊,Query不支持
           filter := '字段 LIKE ''%dd%''';
           Filtered := true;!
      

  5.   

    二次开发,所以不想换TClientDataSet。
      

  6.   

    filter := '字段 >=‘+''''+trim(条件)+''''+chr(0)+'字段 <=‘+''''+trim(条件)+''''+chr(255);
      

  7.   

    在OnFilterRecord中写吧,我的也用这个办法写呢!
      

  8.   

    query.filtered:=false;
    Query.filter:='字段 like ''%aaa%''';
    query.filtered:=true;
    同意!!!
      

  9.   

    我用FilterRecord()事件处理,达到了此功能,但出现一个问题,
    在我对Query进行close操作时,也会触发到此事件。。
    此时if Pos('123', Query.FieldByName('name').AsString)>0 then
         Accept:=True; 
    会出现字段不识别的错误,
    我本想用但其参数中dataset的active来判断是否需处理过滤,但active依然为true。
      

  10.   

    query.filtered:=false;
    Query.filter:='字段 like ''%'+edit1.Text+'%''';
    query.filtered:=true;