try
    DataSet.Filter := Filter;
    if Filter = '' then DataSet.Filtered := False
    else DataSet.Filtered := True;
  except
    raise Exception.Create('表达式错误');Filter := 'field1 like ''1%'''时一切ok
Filter := 'field1 not like ''1%'''时就报表达式错误

解决方案 »

  1.   

    假如支持not like,那么not like ‘200410%’ 应该是什么呢?这是不可确定的。
      

  2.   

    是‘开头不包含200410’啊,和sql语句一样,怎么会不可确定呢
      

  3.   

    Edit1.Text := '...';
    DataSet1.Filter := 'NOT (FieldName LIKE ''%' + Edit1.Text + '%'') ';
    DataSet1.Filtered := true;
      

  4.   

    我想這是考慮到效率問題。當使用NOT LIKE 或者 <> 等等時,需要進行全表掃描。這樣,對於大的表效率會非常低效,比如記錄在萬級或以上時。通常來説,我們在寫普通的SQL語句時,都會避免使用類似語法。
      

  5.   

    'NOT (FieldName LIKE ''%' + Edit1.Text + '%'') '是不行的效率不高是肯定的,但是客户就是有这个需求。