try
  if not DM.sc.Connected then DM.sc.Connected := True;
  Obj := IDBAccessObjDisp(IDispatch(DM.sc.AppServer));
  Obj.UpdateData(avData1, aiMaxError, aiErrorCount);
  Obj.UpdateData(avData2, aiMaxError, aiErrorCount);
  SetComplete;
except
  SetAbort;
end; 其中avData1更新不成功,但系统将我的avData2更新进了数据库,请问应该怎么写?

解决方案 »

  1.   

    上面代码在中间层更新协调对象中,avData1、avData2是客户端传入的数据包,该层事务为需要,
    rdm为支持
      

  2.   

    UpdateData 的代码呢?另外,Provider.pas 需要修改的地方,你改了吗?
      

  3.   

    学习,楼上的怎么PROVIDER.PAS还得改啊?听上去好可怕,难道本身有问题么
      

  4.   

    你不可以在COM+里面使用CreateCOMObject你改了DCOMConnection了吗
      

  5.   

    试过改动两个.pas文件,也不行
      

  6.   

    To manboo(非典型天使):
    你不可以在COM+里面使用CreateCOMObject,请明示,要改的话应该怎么改?
    希望能够得到解决的方法
    我用的SocketConnection
      

  7.   

    TDataSetProvider.InternalApplyUpdates 需要修改。参看李维的书!另外,如果你的系统为 win2k 以上的版本,可以不用修改 DCOMConnection。
      

  8.   

    在delphi6里边不需要修改什么代码不知道你用了pooling没有,如果用了 就要对对象进行初始化还有如果更新不成功是否除法了异常?你的代码有点不全 用的数据库是什么啊?服务器段组件之间的建立一定要用dcom 关于事务处理我有一篇以前讲过,问题是可以解决的
      

  9.   

    beginer001(beginer001) (    socketconnection是不行的
      

  10.   

    To ytwxw(wxw):  SocketConnection 是能够连接 COM+ 中间层。我就是这样做的。不信你试试! ^_^
      

  11.   

    我开发的操作系统是win2k
    客户端通过
    FObj := coObj.CreateRemote(sAddress);
    语句来创建中间层协调对象并通过FObj调用其接口;中间层方法为:
    var
      Obj: IDBAccessObjDisp;
    begin
      try
        try
          if not DM.sc.Connected then DM.sc.Connected := True;
          Obj := IDBAccessObjDisp(IDispatch(DM.sc.AppServer));
          Obj.UpdateData(avData1, aiMaxError, aiErrorCount);
          Obj.UpdateData(avData2, aiMaxError, aiErrorCount);
          SetComplete;
        except
          SetAbort;
        end; 
      finally
        DM.cds.Close;
        Obj := nil;
      end;
    end;RDM方法为:
    try
      try
        dsp.ApplyUpdates(avData, aiMaxError, aiErrorCount);
        SetComplete;
      except
        SetAbort;
      end;
    finally
      conn.Connected := False;
    end;请教:
    1、如题;
    2、在客户端创建中间层协调对象 与 在中间层协调对象创建RDM 有什么方法上的差异(请简单写两
       条代码);
    3、上面兄弟说到的Pooling要对对象进行初始化能再说得明白一点吗?我目前测试的做法只是在
      Type Library Editor中将Object pooling复选框选中,给Creation Timeout赋了一个值;
    4、COM+之间的相互调用为什么不能用SocketConnection联接呢?有没有相关的资料,我也想看看
      这方面的书,用Delphi开发COM+的书我一直没有找着;
    5、哪位能给我发个麻雀虽小、五脏俱全的范例吗?李唯书上的例子距离实际工程还有距离,理论展
      开也不够(可能是我理解的不好罢了),帮助中也没着重讲解基于这种架构利用数据封包的COM+
      技术;    期待你的来信,感激不尽!!!!!
      

  12.   

    to leapmars(流铭) 
    的确我知道socket是可以连接com+中间层的但是我的意思是如果我们要实现com+的事务控制的话 那么基础客户端(李老师的叫法)是可以用socket而且最好用socket但是如果要在com+中进行com+之间的互联 那么一定要用dcom进行连接 否则事务功能不能实现 这个我是作国实验的
      

  13.   

    有关问题见:
    http://expert.csdn.net/Expert/topic/1600/1600678.xml?temp=5.466861E-02