语句如下:
ClientDataSet.filter := false;
ClientDataSet.filter := '字段名 Like'+'''%'+变量名+'%''';
ClientDataSet.filter := true;
过滤后没有数据(数据库中有符合此条件的数据)。
去掉前置的通配符如下(可以过滤出数据):
ClientDataSet.filter := false;
ClientDataSet.filter := '字段名 Like'+''''+变量名+'%''';
ClientDataSet.filter := true;
请问,原因?Filter 是否不支持前缀通配符?谢谢!

解决方案 »

  1.   

    ClientDataSet.filter := false;
    ClientDataSet.filter := '字段名 Like'+'''%'+变量名+'%''';
    ClientDataSet.filtered := true;试试
      

  2.   

    你的第一种些写法是正确的,应该可以
    查不出数据应该是其他原因,你在 like 后空一格看看!
      

  3.   

    楼主没有加空格
    ***********************************************************
    ClientDataSet.filtered:= false;
    ClientDataSet.filter := ' 字段名 Like '+' ''%'+变量名+'%'' ';
    ClientDataSet.filtered := true;
    ************************************************************
    楼主要注意一个好的习惯就是要是在对查询没有影响的情况下最好前后加个空格
    比如我上面的' 字段名 Like '前后有空格
    ' ''%'而这个字符串由于在后面加空格影响查询所以前面加就行了后面不加
    这只是个习惯而已
      

  4.   

    To MY128:
       我刚试了一下还是一样的结果。由于我过滤的字段值有中文字符值和英文字符值,我发现英文字符值的记录能正常过滤,而中文的不能。但是去掉前置的'%'只保留后置的'%'如:
      ClientDataSet.filter := false;
      ClientDataSet.filter := '字段名 Like '+''''+变量名+'%''';
      ClientDataSet.filter := true;
    都可以过滤。是否Filter对中文支持不够好的原因?
      

  5.   

    filter 支持 Like 吗?