起步软件技术论坛-X3

 找回密码
 立即注册
搜索
楼主: lotus

【结贴】调用存储过程时返回的字串里面出现乱码?**

[复制链接]
发表于 2008-6-13 11:06:51 | 显示全部楼层
可能和字符集有关。 这个字在GB2312中是没有的,它在GBK中可以找到。
你试试在存储过程中是否可以设置一下字符集
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-13 11:11:27 | 显示全部楼层
应该是在前台设置吧。在后台可以显示那个字。
回复 支持 反对

使用道具 举报

发表于 2008-6-13 11:12:41 | 显示全部楼层
在前台数据表浏览中不是正常的吗?
你试一下
回复 支持 反对

使用道具 举报

发表于 2008-6-13 11:12:43 | 显示全部楼层
在前台数据表浏览中不是正常的吗?
你试一下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-13 12:09:39 | 显示全部楼层
在前台的DataGrid或者Memo中都可以正常显示那个在字。
就是从存储过程传过来就出现乱码了。
回复 支持 反对

使用道具 举报

发表于 2008-6-13 13:29:46 | 显示全部楼层

Re: 调用存储过程时返回的字串里面出现乱码?

最初由 lotus 发布
[B]我的存储过程返回的String字符串。。。 [/B]

楼主,用存储过程返回数据集试试,看还是不是乱码?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-13 15:02:19 | 显示全部楼层
问题是我现在就返回字符串的情况下出现乱码。跟返回数据集应该没什么关系吧。
存储过程在后台运行的结果并没有出现乱码。就是传到前台的时就出现了乱码。。。
调用代码如下:
static function TCCGCZYJ.GJHC(as_QDZ: string; as_ZDZ:string; as_GJXL:string; as_errormsg:string; Owner: TForm):String;
var
  lDataParam1,lDataParam2,lDataParam3,lDataParam4: TDataParam;//存储过程参数
  Storedproc1:TStoredProc;
   ErrorMsg : String;
   Result_GJXL:String;
begin
  StoredProc1 := TStoredProc.Create(Owner);
  with StoredProc1 do
   try
    StoredProc1.ConnectionString := 'DATABASEURL=Biz:\OAXT\OACCGCBSJK.Database';
    StoredProc1.StoredProcName := 'GJHC';
    StoredProc1.Params.Clear;

    lDataParam1 := StoredProc1.Params.CreateParam(TFieldType.ftString,  'as_QDZ',TParamType.ptInput);
    lDataParam2 := StoredProc1.Params.CreateParam(TFieldType.ftString,  'as_ZDZ',TParamType.ptInput);
    lDataParam3 := StoredProc1.Params.CreateParam(TFieldType.ftString,  'as_GJXL',TParamType.ptOutput);
    lDataParam4 := StoredProc1.Params.CreateParam(TFieldType.ftString,  'as_errormsg',TParamType.ptOutput);
    lDataParam1.AsString  := as_QDZ;
    lDataParam2.AsString  := as_ZDZ;
    StoredProc1.Execute;

   Result_GJXL:=  StoredProc1.Params.ParamByName('as_GJXL').AsString;
   ErrorMsg := StoredProc1.Params.ParamByName('as_errormsg').AsString;
  finally
    StoredProc1.Free;
  end;
  if ErrorMsg <> '' then
   Dialogs.ShowMessage(ErrorMsg);
Result := Result_GJXL;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-13 15:03:31 | 显示全部楼层
单步调试到这步的时候:Result_GJXL:=  StoredProc1.Params.ParamByName('as_GJXL').AsString;
就发现  StoredProc1.Params.ParamByName('as_GJXL').AsString的值就是乱码
回复 支持 反对

使用道具 举报

发表于 2008-6-13 15:16:03 | 显示全部楼层
TFieldType.ftWideString  
用这个类型返回试下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-13 15:34:19 | 显示全部楼层
早就已经试过了 。。。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-21 05:56 , Processed in 0.035626 second(s), 12 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表