Table.Filter = 'name Like "%' + 'jake' + '%"' 

解决方案 »

  1.   

    如果确定Jack前后有几位的话,还可以如下更精确:'name Like "__jack__"'即前面有两位,后面有两位 
      

  2.   

    Specifies the text of the current filter for a dataset.property Filter: String;DescriptionUse Filter to specify a dataset filter. When filtering is applied to a dataset, only those records that meet a filter抯 conditions are available to an application. Filter contains the string that describes the filter condition. For example, the following filter condition displays only those records where the State field is 'CA' or 'MA':State = 'CA' or State = 'MA'To filter strings bases on partial comparisons, use an asterisk as a wildcard. For example:State = 'M*'Note: Applications can set Filter at runtime to change the filtering condition for a dataset at (for example, in response to user input).我也这样想过,希望实现在table中实现如‘where name='%jack%''的查询?但Table.Filter = 'name Like "%' + 'jake' + '%"' 的语句似乎不正确?密切关注这一议题。
      

  3.   

       SQL.ADD('and(字段名  like ''%'+关键字+'%'')');
      

  4.   

    Table.Filter = 'name Like "%' + 'jake' + '%"' 不行!
    看来无法用table 实现??
      

  5.   

    在table的OnFilterRecord事件中写
    procedure TForm1.Table1FilterRecord(DataSet: TDataSet;
      var Accept: Boolean);
    var str:string;
    begin
      str:=table1.fieldbyname('name').asstring;
      if (pos('jake',str)<>0 ) then
       accept:=true
      else
       accept:=false;
    end;
      

  6.   

    用OnFilter事件中写相关代码,可以处理很复杂的情况,比直接在filter中设置要灵活许多。不过注意代码的质量,否则会影响速度。
      

  7.   

    据我所知在Table.Filter = 'name like "%'+'jake' + '%"'是不行的,但如果是TClientDataset就可以了(详见TClientDataset的帮助),对于TBDEDataset中的Filter最多只支持 State = 'M*' 这样的类型,而且*必需是在最后。我对于TQuery(和TTable一样是TBDEDataset的子类)中的Filter是自己编程实现的,可以
    通过编写事件OnFilterRecord的句柄,去掉不想要的记录 。
      

  8.   

    where name Like %jake% 
      

  9.   

    Table.Filter = 'name Like "%' + 'jake' + '%"' 
    对某些数据库(譬如 Access 不可以用)
    我赞成西门吹雪的方法。