如果 用
ClinetDataSet.Filter:='name=''江南制造总局''';那么可以把 字段名为name的值为“江南制造总局” 过滤出来;但是如果想用模糊过滤
ClinetDataSet.Filter:='name like ''%江南制造总局%''';
呵呵,ClinetDataSet就傻掉了。
它识别不了,过滤不出来了。
我这个测试环境是在oracle 数据库下测试的,字段name的类型是 varchar2(50);这么简单的过滤为什么用AdoDataSet好好的,怎么用到ClinetDataSet就不行了呢?当然ClinetDataSet对英文的模糊过滤是没有问题的。就是中文有点问题。
也许把name的类型改成固定长度的就没有问题。
也许把ClinetDataSet 所对应的DataProvider的DataSet的字段静态加载固定列就好了。
但是我不想那样做。为何因为ClinetDataSet的这个bug,而让我们迁就它,作出许多影响我们开发效率的事情呢。希望有兴趣的朋友们讨论一下。怎样改写或者继承ClinetDataSet组件 来改正这个 过滤识别中文 存在的问题;如果有第三方的ClinetDataSet的替代组件也好啊!
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3468703
些什么能够处理这个问题?
希望不吝賜教
OnFilter事件中写代码比较灵活,可没ClinetDataSet.Filter来的方便.
(包括Locate、Lookup)都有相同问题。
解决方案就如同楼上所说。