ClientDataSet是Delphi数据库处理基础性组件,但在D5、D6、D7、D2005和C5、C6中,用其Filter进行过滤,居然出现不能过滤Filter:='Like ''%陈%'''这样的条件,Borland睁眼让这个BUG存在这么久,真不可思议。
一种编程语言不应在基础性控件出现BUG,这足以让人对使用这样的工具开发的产品如坐针毡。

解决方案 »

  1.   

    改成如下:Filter:='字段名 Like ''''%陈%'''''
    这样不行吗。没有用过就不要动不动就说人家不行,看看自己的能力再说吧。
      

  2.   

    xhai、hotdog911我说你们是头猪,只会哼哼叫,说话不用脑,你到网上搜索一下或自己写几句代码试试,这个结果已经是定论。
      

  3.   

    老实说,filter和locate有时候真是会出现莫名其妙的问题
      

  4.   

    问题:
    delphi中ClientDataSet.Filter可不可字符前后模糊过滤啊??,
    > 比如我要查询CA001我输入 orderno=‘CA*'是可以查出来的,可是如果用
    > orderno='*A00*'查不出来。
    > 所以麻烦问一下如果要字符前后都通配应该怎么写?谢谢。
    这个问题测试之后情况是这样的:
    ClientDataSet支持模糊过滤,但要使用orderno like '%123%'这样的过滤字串.而且字段类型只能是TStringFiled,如果是TWideStringField使用会有'type mismatch in expression'的错误.如果是少数一定要模糊过滤的地方,可以把AP端和客户端的字段类型都改为TStringField.下面是经过测试的代码:
      with ClientDataSet1 do             //edit1.text
      begin
        Filtered  := false;
        Filter :=  'orderno like ''%'+edit1.text + '%''' ; 
        Filtered  := true;
      end;
      

  5.   

    去搜了一下关于ClientDataSet.Filter的Bug,
    发现有其他问题,用的时候注意一下http://qc.borland.com/wc/qcmain.aspx?d=13201
    http://qc.borland.com/wc/qcmain.aspx?d=14695
      

  6.   

    下次不用clientdataset来filter了,碰到个问题莫名其妙的,估计就是这个问题了,
      

  7.   

    :Filter:='字段名 Like ''''%陈%'''''
      

  8.   

    delphi对引号的处理最好是''''代替一个引号的作用。
    对其他的ADO,BDE,和CLIENTDATASET的效果都有些出入