在数据操纵组件中提供了一个更新数据的方法,此方法要返回代表其执行结果的一个整数,如果成功则返回0,否则返回预定的错误编码。本人在另一个中间层组件(业务逻辑)中调用此方法,当出现错误(如主键重复)时却不能返回其错误码,不知是为何?示意代码如下:
数据组件提供的更新方法:
function ExecuteCommand(sSQL:string):Integer;
begin
   try
     ado_test.sql.add(sSQL);
     Result:=ado_test.execSQL;//执行成功则返回受影响的行
   except    //但当错误发生时不能 执行下面部分               
     on e:Exception do
        Case 数据库返回的错误码 of
        000XXX:Result:=123;//根据数据库返回的错误码解释成预定的错误码
        111XXX:Result:=321;
        else:  Result:=999;
        end;
   end;
end;其它业务层组件:function AddOperator(UserInfo:Variant):Integer;
var
  I:IRDM;
begin
  try
  I:=CoPooler.Create;
  Result:=I.ExecuteCommand(UserInfo);
  except
    //不能创建对象或其它处理
  end;
end;当在客户端调用 AddOperator发生错误时却时反回了“灾难性故障”的提示!,各位老兄,如何才能正确处理中间层的错误呢?并返回指定的错误码?
    
   
     
   

解决方案 »

  1.   

    你开两个DELPHI跟踪一下看看,一个看客户端程序,一个看中间层程序
      

  2.   

    开发MTS/COM+应用系统最令人头痛的问题便是如何调试MTS/COM+组件了。由于
    MTS/COM+是执行在MTS/COM+的执行环境中,因此Delphi 的程序员无法像Delphi的分
    布式多层应用系统一样可以直接在Delphi 的IDE 中设定应用程序服务器的断点来调
    试。
    事实上, Delphi 仍然可以在Delphi 的集成开发环境中调试MTS/COM+组件,也
    可以让程序员在集成开发环境中在MTS/COM+组件的程序单元中设定断点,然后执行客
    户端应用程序调用MTS/COM+组件。此时Delphi 便会把执行控制权带到Delphi 的集
    成开发环境中,并且暂停在程序员设定的断点上让程序员开始调试。从此开始,程序员
    就可以像调试一般的应用程序一样来调试MTS/COM+组件了。不过要如此调试MTS/COM+
    组件,程序员必须先做一些设定。
    不管是对MTS或COM+,Delphi 5 都能够让程序员调试MTS/COM+组件。以下分别说
    明如何在MTS或COM+中调试MTS/COM+组件:
    如何调试MTS 组件:在Delphi 的集成开发环境中激活要被调试的MTS 组件项目,
    然后点选Run|Parameters 菜单,在对话框的Host Application处输入“M T X 的路径”
    \mtx.exe,并且在Parameters 处输入“/ p :你的套件组件名称”。然后在Delphi 的
    集成开发环境中设定断点,执行此MTS 套件组件,再执行客户端应用程序即可调试。
    如何调试COM+对象:使用和上面一样的步骤,只是在对话框的HostAppli cation
    处输入“Windows 2000 的目录”\system32\dllhost.e x e,并且在Par ameters 处输
    入“/ProcessID :你的套件组件的GUID”。然后在Delphi 的集成开发环境中设定断点,
    执行此MTS 套件组件,再执行客户端应用程序即可调试。此外,你还必须先在
    Component Services 中打开调试的功能。请参考稍后的实例说明。
    经过以上步骤你应该可以在Windows 95/98、Windows NT和Windows 2000中调试
    MTS/COM+应用系统了。
    ===摘自李维的ado三层开发