Delphi6对中文支持的两个Bug...
h_q_p 2002-07-18 09:00:56 近来,发现D6如下两与中文有的Bug,一是在TRemoteDataModule中,二是在DataSet(如TQuery,TTable,TClientDataSet等),测试环境如下:
一、TRemoteDataModule中:
1.建立一MIDAS应用程度服务器,在TRemoteDataModule加入:
ADOConnection1: TADOConnection;
ADOTable1: TADOTable;
ADOQuery1: TADOQuery;
ADODataSetProvider1: TDataSetProvider;
Table1: TTable;
Database1: TDatabase;
Query1: TQuery;
DataSetProvider1: TDataSetProvider;
在客户端用ClientDataSet1动态传入CommandText,如:select * from Orders where CustName=:CN
现象:
当ClientDataSet1的ProviderName连接ADODataSetProvider1时,当参数CN的值为英文时(如'Huawei')时正常;但为中文时(如:'中国电信')查询结果不对,但当值为'中国电信中国电信'或'中国电信中中中中'时(即要查询值长度的两倍时),能查出客户名称为'中国电信'的资料。
当ClientDataSet1的ProviderName连接DataSetProvider1时,正常。
即服务器端为ADO控件是,对中文支持有问题,为BDE控件是正常。
2.DataSet之Filter中:
测试环境承上:
现欲筛选CustName中包含某个字符的资料则用Filter为
ClientDataSet1.Filter := '('+'CustName'+' LIKE '
+''''+'%'+Edit1.Text+ '%'+''''+')';
当Edit1.Text为英文字符时,正常;
但当Edit1.Text为单个汉字时,筛选不正确,为二个以上汉字时,又正常。
即筛选条件为单个汉字是,DataSet筛选出错;英文及多汉字正常。
原因还没查出。