客户方执行
cds1.applyupdates;
cds2.applyupdates;
分别更新两个表,这两个表要么都初更新,要么就一个也不更新,所以在服务器方要放在一个事务中处理,这样在服务器如何控制?因为cds1,cds2在服务器分别
对应dsp1和dsp2,会产生不同的updateerror事件,是否有必要在dsp1的updateerror中存一个变量做为cds1是否更新成功的标记,在dsp2更新事件中
判断这个标记,如果cds1更新出错,就不更新cds2了,可是这样服务器就成了有状态的了,我不想这样做,还有没有别的更好的办法??

解决方案 »

  1.   

    现在正在考绿调个接口传两个data过去。
    appserver.postbill(cds1.data,cds2.data)
    在那边用dsp1.data,dsp2.data来接,可是接完了他们会自动更新ado数据集或是数据么?
      

  2.   

    database.StartTransaction
    try
      cds1.app...
      cds2.app..
      database.Commit;
    except
      database.rollback;
    end;

      

  3.   

    请问楼上,你这个是在客户端用?Tdatabase是bde的吧?
      

  4.   

    1.在Client端
      if cds1.ApplyUpdate(0) = 0 then
         cds2.ApplyUpdate(0)
      else
        .....2.中间层用Mts/Com+
    try
      dsp1.ApplyUpdates(Datas)
      dsp2.ApplyUpdates(Datas)
      SetComplete
    except
      SetAbort
    end;
      

  5.   

    两种方案大的改动,用com+,客户端联中间件协调对象,中间件协调对象联两个处理对象,如sz1008(Need For Speed) 所说小的改动,clientdataset有beforeapplyupdata事件,在那里传递另外一个cds改动后的数据集,这样,一个ApplyUpdate就把两个cds的改动数据传回去了,后台对附带回来的再自己做处理吧,你自己做个实验,看后台的事务是从那个事件开始的,自己做处理的代码一定要在这之后。