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

  • 主题发起人 主题发起人 程云
  • 开始时间 开始时间
这个问题绝对存在,我是使用D5或D6时,在NT4系统上。
如哪位老兄让还认为支持汉字的话,请先试试好吗?
因为我试过太多次了,也请朋友们试过了,这个问题确实存在的。
一定要注意,是TClientDataSet这个控件,其它的DataSet控件上没这个问题。
看来这个问题是解决不了了。 :-(
 
哦哦,我差点忘了这个帖子。
我试了试试,过滤中文没有问题的啊。
Win98+Delphi5没打补丁+TClientDataSet
 
不…不…不会吧,
你哪天来我这里,给我试试看
 
这个问题与Delphi无关,只与你使用的数据库有关系,如你使用的是Access数据库就会
出现这种情况。在Access中字符型字段都默认为Unicode你将它改过来就行了。
 
先试一下 ClientDataSet.filter='optype like '%购入%''
如果不行的话可以考虑clientdataset建内部计算字段,在其中用代码。
如果你的程序是要循环的话,可考虑如下方法:
with clientdataset1do
begin
first;
while not eofdo
begin
if fieldbyname('optype').asstring='购入' then
begin
........
end
else
.......
next;
end;
end;
 
不是delphi的错
 
可不要乱下结论哟,MIDAS怎么可能会不支持中文,它可是DELPHI中的精华呀,CLIENTDATASET
采用的是XML格式,而XML支持UNICODE字符集,所以也支持中文了,而且更多!
之所以不正确,是因为你的过滤表达式的语法不正确呀,应该这样写:
procedure FilterProc(DataSet:TDataSet);
var
x:String;
begin
x:='optype=';
x:=x+''''+'购入'+'''';
DataSet.Filted:=True;
DataSet.Filter:=x;
end;

以上这段代码copy于楼上的一一兄的可以的支持中文问题在于中文两边的" ' "
处理好了就可以了,遮断代码可以用的
 
我经过多次测试,发现这得确不能算是Delphi的错误。
我使用ClientDataSet,三层结构,连接ACCESS97时,就不支持中文
而把数据库换成SQL Server7,此时就没有问题。
而,我使用ADODataSet,走两层结构时,不论使用哪个数据库都不存在这个问题。
所有测试都使用的ADO2.5引擎来链接数据库。
感谢大伙的帮忙,我过几天就发分。
to whsunbin:
>>"在Access中字符型字段都默认为Unicode你将它改过来就行了。"
这个如何改呢?我没有找到。
 
上次silicon不是也碰到这个问题了吗?他已经解决了,你们没聊过吗?
 
来自:silicon, 时间:2001-9-12 16:44:00, ID:622103 | 编辑
在这里我首先要谢谢大家!然后再告诉我自己的解决办法,绝对是一个让人想不到的办法!
我的解决方法是:
Access数据库你加入字段时它默认字符串是TWideStringField型。这就是一切罪恶的根源!
(有人可能想到了)
把所有的TWideStringField统统地改为 TStringField型就行了!多谢多谢!发分了!

 
老兄呀!我来晚了一步!教父和Chenlili他们先行我一步了。
其实这分应该给我的对不对!
 
检查你的ClientDataSet的FieldDefs属性,如果是TWideStringField
就有问题,可在论坛查找我的所有贴子,有这方面的讨论
 
问题是,如果FieldDefs属性是TWideStringField,
我双如何把它改成TStringField呢?
直接改这个属性可以吗?
 
我在用BCB5做多层结构系统时,我在Server端加入了一个取得服务器IP地址的方法:GetServerIP它的参数是vIP:Variant *,IN方式,并在服务端实现了这个方法,
加入的代码如下:
*vIP="192.168.0.01";最后我注册成功。
可是在我开发客户端程序时,我用TSocketConnection
当取得它的服务时我是这样做的:
Variant* vip;
SocketConnection1->AppServer.GetServerIP(vip);
Edit1->Tex=vip;
可 是我在运行程序时出错,没有编译通过。
它说getserverIP不是variant的成员
getserverIP is not a memober of variant
请问?
我该如何去调用这个方法呢?
请各位大侠多多指教?
小生的QQ:65466700(24小时在线恭候)
MAIL: alongsun@sina.com
 
附带问:
MS sql 7.0英文版在Delphi5中不用BDE可以显示中文内容吗?
 
to Alongsun:
用这个 TVariant 试试
 
对WideString不太好处理,简单的办法是在过滤事件中(而不是属性)
用xxxx.AsString='购入'即可解决。
 
to riota:
当然可以了,以前用的MSSQL6.0也都可以显示中文,何况7.0。
*****************************************************
这个问题还是依旧,还是不能使用过虑
 
后退
顶部