ClientDataset如何过滤单个汉字。如:FieldName LIKE '%中%'(129分)

  • 主题发起人 主题发起人 kite20020304
  • 开始时间 开始时间
K

kite20020304

Unregistered / Unconfirmed
GUEST, unregistred user!
ClientDataset如何过滤单个汉字。如:FieldName LIKE '%中%'

另:听说D2006的Midas.dll解决了中文过滤的问题,不知有哪位富翁测试过?
如果可以的话,请发送一个D2006下的Midas.dll给我 xianguochen@21cn.com
 
D2006的midas是否解决了这个问题我不知道,但是delphi的filter是不支持单个汉字匹配过滤的,一般的处理办法是使用过滤事件:
clientdataset.filtered:=true;
procedure TForm1.ClientDataSetFilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
accept:=pos('中',dataset.fieldbyname('fieldname').asstring)>0;
end;
 
to TYZhang :
根据用户输入自动过滤,你的方法可行性不大
 
可以啊,你设一个到多个用于过滤的全局变量,比如ft:string;
1、在要的事件中(就是你原来写filter代码)的地方:
clientdataset.filtered:=false;
ft:='中';
//可以增加更多的判断条件
clientdataset.filtered:=true;

2、过滤事件:
procedure TForm1.ClientDataSetFilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
accept:=pos(ft,dataset.fieldbyname('fieldname').asstring)>0;
//可以增加更多的判断条件
end;
 
我们项目中使用的方式也是上面的!

是可以通过的!最好
var
s, D: WideString;
begin
S := '中国';
D := '中华人民共和国';
Pos(s, D);
end;
这样系统会自动调用:
procedure _WStrPos{ const substr : WideString; const s : WideString ) : Integer};

会避免中文单字符之间的组合错误!
 
感觉效率较低
 
clientdataset直接filter过滤汉字处理上是有点问题,采用处理过滤事件的方法比较稳妥,正如楼上TYZhang所说,也可以实现复杂的过滤,从效率上讲应该不是问题
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部