我采用了Delphi 5.X ADOMTSCOM高级程序设计篇 中第九章说述的架构想建立一个三层系统 。
软件环境 delphi 7 update1.1 数据库 oracle 10.2.0.1  
操作系统 XP SP2
客户端:放置 clientdataset1 ,datasource1 dbgrid1
查询协调对象(dbquerycoor,支持事务):
     放置一个clientdataset2,dcomconnect2
     添加 getRoles(var vDatas:olevariant); 客户端用来获取数据
     这个函数返回 clientdataset2.data
更新协调对象(dbupdatecoor,需要事务): 
  放置dcomconnect3
   添加 procedure  updateroles(vdatas:olevariant) 用于更新数据
MTS对象(dbmts)   
  放置一个 ADOConnectionacon4 ADOQuery4 DataSetProvider4
  数据库链接采用  oracle provider for ole db作为驱动。
  adoquery1 中只有一句简单的sql语句  select * from role
   添加 procedure updateDatas(vDatas: OleVariant; iMaxErrors: Integer;
      var iErrorCount: Integer); safecall;updateroles 原本想通过 dcomconnect3.AppServer来执行 ApplyUpdate,但是事实上无法调用。后来只能直接通过createremote来 直接执行 dbmts的AS_ApplyUpdates。
但是通过 dbmts 的 DataSetProvider4 的 onupdateerror 得到错误信息新事务不能登记到指定的事务处理器中。更新不成功!
如果  更新协调对象dbupdatecoor需要事务  变成不支持事务,则能更新成功 !