三层开发中,传递的参数是乱码的问题。(100分)

  • 主题发起人 主题发起人 blackgun
  • 开始时间 开始时间
B

blackgun

Unregistered / Unconfirmed
GUEST, unregistred user!
我在三层开发中,用ClientDataset的Params来向服务程序的query的Params传递参数,
但是我发现英文的话是正常的,但是中文的话传递的参数都是乱码##。
这应该如何解决。
 
你中间层用的是BDE还是什么,如果是BDE升个级试试.
 
是bde,在两层的时候一点问题也没有。就是在三层的时候出现了这个问题。[:D]
 
建议 : Params 的参数最好不要用汉字,会涉及到很多的问题的!
 
不是参数的名称是汉字,而是参数的内容是汉字。[:(]
 
我也曾经遇到过这个问题,通过下面的办法解决了:
for i:= 0 to Query.Parameters.Count-1 do
begin
case TVarData(pams).Vtype of
varSmallint : Parameters.Items.DataType := FtSmallint;
varInteger : Parameters.Items.DataType := FtInteger;
varSingle : Parameters.Items.DataType := FtFloat;
varDouble : Parameters.Items.DataType := FtFloat;
varCurrency : Parameters.Items.DataType := FtCurrency;
varDate : Parameters.Items.DataType := FtDateTime;
varOleStr : Parameters.Items.DataType := FtWideString;
varDispatch : Parameters.Items.DataType := FtIDispatch;
varBoolean : Parameters.Items.DataType := FtBoolean;
varVariant : Parameters.Items.DataType := FtVariant;
varUnknown : Parameters.Items.DataType := FtUnknown;
varString : Parameters.Items.DataType := FtMemo;
varArray : Parameters.Items.DataType := FtArray;
end;

if TVarData(pams).Vtype= varOleStr then
begin
TmpStr:= pams;
if TmpStr='' then Tmpstr:=' ';
Query.Parameters.Items.Size := Length(tmpStr);

Query.Parameters.Items.Value := TmpStr;
end;
end;
其中pams是OleVariant类型,原先是没有if TVarData(pams).Vtype= varOleStr 的判断的,但为了解决中文会传递错误加上的。
 
是bde的langdriver的设置问题。
 
多人接受答案了。
 
后退
顶部