在使用ClientDataSet作过滤时,发现它不支持中文,有解决的办法吗?(100分)

  • 主题发起人 主题发起人 程云
  • 开始时间 开始时间
应该是'optype=''购入'''
 
如果是模糊查询则用
ClientDataSet1.Filter:='optype like ''%购入%''';
否则用
clientdataset1.filter:='optype =''购入''';
ClientDataSet1.Filtered:=True;
这里无非是一个字符串的处理而已!
 
to tsp and smj_9547:
不行,我试过了,如这么简单就行,我也就不用在这里问了。
它不支持中文的。
 
天啊,程云老兄,我也碰见这问题了
正焦头烂额呢?该怎么办?
 
各位老大,我也碰到这个问题了,怎么办呀!!!!!!!!
 
ADO/MTS/COM+做多层的,汉字传递被截断很正常!我不知道为什么,但
一个办法可以解决!在中文字符后加上总字符长度的一般回车键!
富翁论坛版权所有
问题:ClientDataSet中的查找 ( 积分:50, 回复:9, 阅读:76 )
分类:MIDAS / DCOM ( 版主:Chenlili, 房客 )
来自:JackyKen, 时间:2003-3-31 17:20:00, ID:1725494 [显示:小字体 | 大字体]
ClientDataSet1.Locate('用户名称',Search_String,[loCaseInsenSitive,loPartialKey]);
如上所示的语句中,假若Search_String中包含汉字,则查找不到所要查找的,只有全是数字(如Search_String:='1111')
才能查找得到,请问是怎么回事?急!!!!!!!!


来自:龙龙, 时间:2003-3-31 17:24:00, ID:1725525
ClientDataSet1.Locate('用户名称',vararray([Search_String,[loCaseInsenSitive,loPartialKey]]));


来自:JackyKen, 时间:2003-3-31 17:30:00, ID:1725560
龙龙,你试过了吗??
不对啊,编译通不过


来自:JackyKen, 时间:2003-3-31 18:02:00, ID:1725677
哪位来帮帮忙啊,急!!!!!!!啊


来自:lgxyy, 时间:2003-3-31 18:23:00, ID:1725727
将[]中的参数去掉



来自:xeen, 时间:2003-3-31 18:29:00, ID:1725745
http://www.delphibbs.com/delphibbs/dispq.asp?lid=583696


来自:jrq, 时间:2003-3-31 19:08:00, ID:1725833
这样:ClientDataSet1.Locate('用户名称',Search_String,[]);
‘用户名称’是字段名,Search_String是字段值,没问题的。


来自:52free, 时间:2003-3-31 19:29:00, ID:1725884
这个问题早就有人讨论了若干次
在三层中,确实对中文字符串的处理是不正确的
它会将字串截半
比如说对一个sqlserver中的存储过程的参数赋值‘我爱中华’
到事件探查器里看看,那个参数值变成了‘我爱’
所以在三层中最好不要传中文参数


来自:JackyKen, 时间:2003-4-1 9:21:00, ID:1726826
这个问题只有在用Access数据库时有,用SQL就没问题。
我看到以前的问题里,有人提出了解决方法,就是将Access默认的TWideString改为
TString,只是我找了半天也没找到在哪里改。
希望有知道的告诉我一下,帮帮忙啊


来自:ctyfy11111, 时间:2003-4-1 14:30:00, ID:1727684 | 编辑
一样的情况,有一个好办法
function gethzcount(s:string):integer;//得到汉字的个数
var i,j:integer;
begin
result:=0;
j:=0;
for i:=1 to length(s)do
begin
if (S>#128) and (j<i) then
begin
j:=i+1;
result:=result+1;
end;
end;
end;
function getenterch(s1:string):string;
begin
Result:=S1+StringOfChar(#13,gethzcount(s1));
end;



 
这个问题我还未能解决,
现在换用Delphi7了,
用中文作为过滤是没问题了,
但用 like 作模糊过滤还是有问题。
这样是可以:
cdsMain.Filter := ' ssr like 三%' 。
这样就不成了:
cdsMain.Filter := ' ssr like %三' 。
这样也是不成:
cdsMain.Filter := ' ssr like %三%' 。
 
肯定支持,就写在这样
ClientDataSet.filter='optype='+#39+'购入'+#39;
 
我也是不行呀, 我用的是STOREPROC, 在传中文参数, 但是得不到结果
 
没发现不支持中文呀
我使用这种方法来进行简单的查询
很管用的
我的数据库是orcale
 
可能字段是TWideStringField类型有关系.你把他改成TStringField试试.
我在ADO+ Access200中碰到相同的问题,用该方法解决.
 
极度关注中
我用Delphi做三层开发,如果不支持可就麻烦了
 
我测试了一下,我用本地文件进行中文过滤,好像很正常啊,没有什么问题的
D6 update2
 
好像的确和TWideStringField有关系
 
有有,非常正确,我也碰见了.
解决办法是删除半个汉字,哈哈哈
没办法
 
呵呵,我找到了一个Midas.dll ,大小只有184kB ,过滤起来一点问题都没有,
这么看来,是Borland的Midas.dll本身的问题啦
不知道Delphi7的Midas.dll有没有问题
 
Delphi中的Midas.dll似乎和Delphi6中的是一样的,都是不能进行中文过滤
不知道程云是怎么做到的?
 
好像加回车也不行的,
我的这个Midas.dll的替代品谁要,没问题可以用的,我试过了,
程云兄要不要试试
原始下载地址,是免费的,拥有MIDAS III的全部功能,不需要用户许可的
http://www.vglib.com/link-4.html
 
后退
顶部