clientdataset的Filter模糊查询汉字问题

thncn 2016-05-13 11:02:16

clientdataset.filtered:=false;
clientdataset.filter:='itemname like ''%'+edit1.text+'%'''
clientdataset.filtered:=true;


Edit1中输入字母和数字、符号都可以正常筛选数据,但是输入汉字就没有记录,这是编码的问题吗?有什么方法可以解决?
...全文
1297 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyhoo163 2017-01-08
  • 打赏
  • 举报
回复
这是ClientDataset的缺陷。
lyhoo163 2017-01-08
  • 打赏
  • 举报
回复
引用 5 楼 thncn 的回复:
[quote=引用 3 楼 lyhoo163 的回复:] 放弃这种用法吧,汉字仅支持,首部开始汉字字符串。不支持中间是汉字的过滤。
大侠,有什么简便的办法实现汉字查询的功能?[/quote] 放弃FilterRecord事件中过滤,真通过SQL语句过滤:
  SQL:='Select * From 增值税发票_开票信息 '+
       'where (受票人名称 LIKE '+#39+'%'+S+'%'+#39+') and '+
       '(日期>='+#39+sDate1+#39+') and (日期<='+#39+sDate2+#39+') order by ''受票人名称'',''日期''';
  DataModule1.ClientDataSet1.Active:=False;
  DataModule1.ClientDataSet1.DataRequest(SQL);
  DataModule1.ClientDataSet1.Active:=True;
代码这样,是可靠的。
santiaodahan 2017-01-07
  • 打赏
  • 举报
回复
在Clientdataset的FilterRecord事件中添加一行: Accept:=Pos(Edit1.Text, DataSet.FieldByName('itemname').AsString)>0; 就可以了。
gogogocsdn 2017-01-07
  • 打赏
  • 举报
回复
可以用第三方控件TxQuery,连接clientdataset写SQL查询,用法和普通ADOQuery差不多
thncn 2016-12-14
  • 打赏
  • 举报
回复
引用 3 楼 lyhoo163 的回复:
放弃这种用法吧,汉字仅支持,首部开始汉字字符串。不支持中间是汉字的过滤。
大侠,有什么简便的办法实现汉字查询的功能?
lyhoo163 2016-05-16
  • 打赏
  • 举报
回复
放弃这种用法吧,汉字仅支持,首部开始汉字字符串。不支持中间是汉字的过滤。
chengangcsdn 2016-05-16
  • 打赏
  • 举报
回复
有空格或其它的吗,应该是可以的啊 贴一下过滤语句值和数据库里的值
jjpweb 2016-05-16
  • 打赏
  • 举报
回复
这个问题确实存在
thncn 2016-05-13
  • 打赏
  • 举报
回复
没有人遇到这个问题吗?

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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