我没有DCOM或Socket连接,我用MTS返回一个Data给客户端,客户保存时调用一个方法
procedure TMyServer.Save(Delta: OleVariant; out ErrorCount: Integer;out   EMsg: string);
begin
  try
    DataSetProvider1.ApplyUpdates(Delta, 0, ErrorCount);
  except
    on E: Exception do
      EMsg := E.Message;
      我想在这里返回一个错误消息;怎么也返回不到,我怎么才能把UpdateError中返回的错误放到这里来啊
  end;
end;

解决方案 »

  1.   

    因为是批量更新,异常信息可能不只一条,
    MIDAS设计是把所有的错误信息封装在一个OLEVARIANT型里面,
    作为DataSetProvider.ApplyUpdates的返回值传回客户端.
    所以你这样直接抓异常是抓不到.
      

  2.   

    这个方法不会抛出异常,只能检测 ErrorCount 的值来确定是否成功
      

  3.   

    我知道不会抛出异常,但是我怎么把错误的内容传给客户端呢,如果是用DCOM连接可以通过
    ReconcileError来返回错误的消息
      

  4.   

    可以试试用它的 OnUpdateError 事件
      

  5.   

    我本想在这个事件里面
    raise Exception,但是我的那个函数捕捉不到
      

  6.   

    procedure TMyServer.DataSetProvider1UpdateError(...)
    begin
      AEMsg=E.Message;
    end;
    procedure TMyServer.Save(Delta: OleVariant; out ErrorCount: Integer;out   EMsg: string);
    begin
      AEMsg:='';
      DataSetProvider1.ApplyUpdates(Delta, 0, ErrorCount);
      EMsg:=AEMsg;
    end;
      

  7.   

    我发现raise exception.create也行,搞定,谢谢,分都给你了