clientdataset的filter不支持中文过滤?

lmgt 2004-05-09 02:51:46
使用ado+access+socketserver做的多层系统,

使用filter过滤条件时,它不支持中文.

在clientdataset的filter属性中写入name='李华'
filtered设为true时,

查不到任何记录.(表中确实有name为李华的记录)
...全文
172 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
楚人无衣 2004-05-10
  • 打赏
  • 举报
回复
fenger8293(风):
我是用一个ADOQuery的sname字段试可以,我想name为Jet中关键字,这样用会好些;
我贴那个网址对楼主问题有很多的讨论,大家去看看也许会有一些帮助~~
耙子 2004-05-10
  • 打赏
  • 举报
回复
有多少人真正的研究过,呵呵
Heyongfeng 2004-05-10
  • 打赏
  • 举报
回复
中文过滤是没问题的,是因为数据库字段类型是CHAR时,用ADO取出来的数据后面都用空格填充位数的。想办法把取出来的数据空格去掉或过滤时补上空格就可以了。
手指风 2004-05-10
  • 打赏
  • 举报
回复
weizi2000(秋风啊)
你的这句代码好象不行吧.Filter := '[name]=''李华''';

楚人无衣 2004-05-10
  • 打赏
  • 举报
回复
http://www.delphibbs.com/delphibbs/dispq.asp?lid=583696
owencai 2004-05-10
  • 打赏
  • 举报
回复
中文的=是没问题的,我试过了, 我的环境和你一样, 出问题的是like
耙子 2004-05-10
  • 打赏
  • 举报
回复
ClientDataSet 的确对中文支持的有问题,这个问题由来已久了。

这应该是VCL对双字节内码支持的局限,

建议使用SQL查询来替换
楚人无衣 2004-05-10
  • 打赏
  • 举报
回复
我用ADOQuery就可以过滤,没用ClientDataSet,我想应该也可以;
...
.Filter := '[name]=''李华''';
...
再试试;数据库中若是char型的其后可能会有空格,改一下格式看看
lmgt 2004-05-10
  • 打赏
  • 举报
回复
to: pazee(耙子)(灵感点亮生活)

:) 多谢指点~~
耙子 2004-05-10
  • 打赏
  • 举报
回复
改用sql查询的确可以,但是如果数据量庞大,sql查询就显得有些欠缺了。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

你说的恰恰相反,如果数据量庞大,SQL才有优势,因为Filter是在把数据集都返回到本地,再查询,效率上肯定不如SQL,但是对于二次查询,肯定用SQL要麻烦些。
lmgt 2004-05-10
  • 打赏
  • 举报
回复
to: pazee(耙子)(灵感点亮生活)

改用sql查询的确可以,但是如果数据量庞大,sql查询就显得有些欠缺了。

然而又似乎没有其它可以解决类似问题的办法了。


to:weizi2000(秋风啊)

你粘的网址的确与我现在遇到的问题类同,可是依然没有任何可以完美解决问题的方法。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧