tclientdatset不支持中文过滤大家是如何解决的?(50分)

  • 主题发起人 主题发起人 franklky
  • 开始时间 开始时间
F

franklky

Unregistered / Unconfirmed
GUEST, unregistred user!
tclientdataset的filter对于a%这种形式的过滤是支持的,但是对于%s%这种形式的过滤却不支持,我找了网络上的想关资料不是修改adodb.pas就是利用onfilterrecord处理,现在问题是我想利用filter解决,觉得修改adodb.pas应该可以解决,可是试了下,这个方法还是不行,不知道是网络上说的不对还是自己没有正确处理,希望解决这个问题的朋友可以把自己的解决经验与大家分享!!
 
支持,主要是你的midas.dll的版本问题你换成 delphi7.0的midas.dll,就可以了!
 
to dcms:感谢您提供的方法,但是我想说的是目前我所装的正是delphi7.0,难道还要更新么?
 
ClientDataSet1.Filtered:=false;
ClientDataSet1.Filter:='字段名 ='+#39+中文变量+#39;
ClientDataSet1.Filtered:=true;
这样写应该可以的.
 
to hebei_ty:
ClientDataSet1.Filtered:=false;
ClientDataSet1.Filter:='字段名 ='+#39+'%'+中文变量+'%'+#39;
ClientDataSet1.Filtered:=true;
你这样写试试!
 
to hebei_ty:
ClientDataSet1.Filtered:=false;
ClientDataSet1.Filter:='字段名 like'+#39+'%'+中文变量+'%'+#39;
ClientDataSet1.Filtered:=true;
一着急错了,你这样试试!!
 
你的字段是不是Nvarchar 类型,把它改为非 nvarchar类型吧. borland 的 midas.dll 目前还不支持宽字符串过滤.
 
to mcw:
非常感谢您的回答,我的RDBMS用的是Ms Sqlserver,数据类型是varchar,这个还需要修改么??
 
filters := 'inv_no like' + vartosql(pub_dataset.fieldbyname('inv_no').Value+'%');
filters := filters + ' and dir_name=' + vartosql(pub_dataset.fieldbyname('dir_name').Value);
pub_dataset.Filter := filters;
pub_dataset.Filtered := true;
這是我按條件過濾打印報表,中文也ok.
 
to delphisuccess:
感谢您的回答,不过您的是后缀模糊匹配,就是这样的形式:a%,(a表示中文)而且这样%a也可以,只有%a%这样的形式是有问题的,不相信你可以试,前两种我都用过没问题,全字匹配就不行了,呵呵!!
 
补充一下,但是当%a%形式的时候,如果a的字符很多比如大于5个字符可能也会有效果哦,呵呵!
 
没人回答啊,顶一下!!
 
后退
顶部