问题很基本,别笑我
一个Tquery控件已经查出了需要的数据,要对数据记性过滤,比如查找员工名字中包含“王”的记录
一般是不是这样写:Query.Filtered:=false;
Query.Filter:='Emp_Name like '+''''+'%王%'+'''';
Query.Filtered:=true;但是这样执行的时候,会报一个错误,说“Operation not applicable”
不清楚这是什么原因造成的
我记得上面的语句好像原来是可以用的,现在怎么就不可以用了我的环境为delphi7,sqlserver 2000,win2000中文版

解决方案 »

  1.   

    如果你用ado那么些like,如果bde用filter:='fieldname1=aaa*'
      

  2.   

    我用的是BDE写成*号形式的话,只能匹配后半部分,前面不可以匹配,如果写成'*aaa*'的形式的化,又过滤不出来了,一条记录也查不到,似乎bde没有把第一个*号作为通配符
      

  3.   

    我要实现的功能是这样的,用户在edit中输入字符,然后下面的列表根据用户输入的字符就进行过滤,如果每次用户输入一个字符,就送一个sql过去,效率太低,因为网络情况不是很理想。我们是把所有的记录都取到本地,然后用filter进行过滤的。
      

  4.   

    原来好像bde中也可以用like的,不知道我装了个什么其他软件,好像是速达,然后bde就性情大变,原来可以跑的程序现在浑身是bug
      

  5.   

    你写的是没有错误的,不过我没有测试呢还,不行的话你就在选择信息的SQL里写全了就算了。
      

  6.   

    写全不行阿,写全就必须每次用户输入一个字符的时候去服务器端查一次,网络负荷重的情况下,这样一个来回很慢的,
    只能采用一次下载到本地,然后用filter过滤的方式。
      

  7.   

    各位大虾,看在我周末放弃和女朋友约会,坚守在电脑前coding的份上,回答一下这个so simple的问题吧,
    我记得原来是可以的,只是现在忘记怎么处理了,给点提示,ok:))))))))))))否则我是赔了夫人又折兵阿
      

  8.   

    既然是query 那干吗不改写sql 
    query.close;
    query.sql.clear;
    query.sql.add('select * from tbname where Emp_Name like   ')+quotedstr('%王%');
    query.open;p
      

  9.   

    兄台们!! 谢谢了!!
    不过我也知道写sql语句,不然query里面的数据从哪里来呢我的意思是数据量很大,而用户每输入一个汉字就需要从数据库中重新查询一次的话,效率上受不了。所以必须使用filter的方式。
      

  10.   

    to : xxyzjf(Diamond)  你这样能解决速度的问题吗?