我在中间层中采用TADOQuery控件,其中SQL语句为:
select * from TableName from TableField=:Fields
使用TDataSetProvider开放接口。
在客户端我用TClientDataSet(名字CD)接收调用:
CD.FetchParams;
CD.Params.ParamByName('Fields').AsString :=Fields;
CD.Open;
当Fields变量为英文字符时,调用成功,可是当Fields变量为带中文时,就出错,错误为
[ODBC SQL Server Driver]字符串数据,右截位。
如果改成两层结构,直接用TADOQuery控件时,中英文都没有问题。
select * from TableName from TableField=:Fields
使用TDataSetProvider开放接口。
在客户端我用TClientDataSet(名字CD)接收调用:
CD.FetchParams;
CD.Params.ParamByName('Fields').AsString :=Fields;
CD.Open;
当Fields变量为英文字符时,调用成功,可是当Fields变量为带中文时,就出错,错误为
[ODBC SQL Server Driver]字符串数据,右截位。
如果改成两层结构,直接用TADOQuery控件时,中英文都没有问题。
select * from table1 where name like :param1客户端
传 %english% 就行!
传 %中文% 到了服务器端就变成了 %中文
怪事!
CD.Params.ParamByName('Fields').AsString :=Fields+length(fields)个空格;//这里加上空格
CD.Open;
http://expert.csdn.net/Expert/topic/2109/2109363.xml?temp=.8700678