比如我在中间层放了一个ADOQuery1,一个DataSetProvider1,客户端放一个ClientDataSet1。然后ADOQuery1.sql:='select * from Employee where name=:man_name ' 然后在ADOQuery1.(TParameters)中有个参数:man_name。
在客户端连接这个DataSetProvider1后得到ClientDataSet1.(TParams),该参数值不能输入中文。跟踪发现在服务器端得到的参数值被截取了。如:ClientDataSet1.Params.ParamByName('man_name').value:='小明',在服务器得到 ADOQuery1.Parameters.ParamByName('man_name').value:='小';
感觉好像是把一个中文认为一个字符,而截取了一个字。用Sql Server 事件跟踪发现得到的参数长度为varchar(2)。如用三个中文就得到varchar(3)。
所以请问不知这是什么原因。怎样解决???多谢!!!
在客户端连接这个DataSetProvider1后得到ClientDataSet1.(TParams),该参数值不能输入中文。跟踪发现在服务器端得到的参数值被截取了。如:ClientDataSet1.Params.ParamByName('man_name').value:='小明',在服务器得到 ADOQuery1.Parameters.ParamByName('man_name').value:='小';
感觉好像是把一个中文认为一个字符,而截取了一个字。用Sql Server 事件跟踪发现得到的参数长度为varchar(2)。如用三个中文就得到varchar(3)。
所以请问不知这是什么原因。怎样解决???多谢!!!
例如SubString函数,取长度时中文字的长度也认为是1。应该和UNICODE字符编码标准有关。
然后在客户端调用就行了。参数类型用*variant