我将数据库的操作 业务逻辑封装到业务类中,然后在界面单元中引用业务逻辑单元文件。
现在的情况是,我的一个界面的按钮点击事件中,将执行三个业务操作,其中两个来自业务类A,一个来自业务类B。
此界面单元都已经引用了两个业务类的单元文件,且将这两个业务类作为自己的成员变量。那这样的情况,如何使用事务进行处理呢?这三个逻辑操作要么是全部操作成功,否则,全部撤销..
请高手指点?

解决方案 »

  1.   

    你的业务层与数据处理层总需要一个接口吧,在数据处理层的接口中加上事务处理不就行了?TA=class//业务类A
    TB=class//业务类B
    TC=class
    private
      FA:TA;//把A放到TC的内置类中,在构造函数中初始化
      FB:TB;
    public
      Constructor Create;
      Destroy     destroy;
      procedure   ExecuteBusiness;
    end;procedure   TC.ExecuteBusiness;
    var
      DbOperation:TDatabaseInterface
    begin
      //业务处理,使用对象的缓存功能
      DbOperation:=TDatabaseInterface.Create
      DbOperation.DBBroker();
    end;TDatabaseInterface=class
    public
      function DBBroker(SQL);//把该函数加上事务,这样当想要把缓存内的业务对象持久化时,可调用这个函数来处理
    end; 
      

  2.   

    在将对象转SQL时,建议把业务对象A与B生成的语句放到TStringList中,再把该StringList传给DBBroker中,用事务保护
      

  3.   


    你这个解决方法,那不是要在界面单元中开启?在界面单元中引用DataModule
    然后Datamodule1.ADOConnection1.BeginTrans??这样是不是违背了界面和业务逻辑分离了?笑青天的,我要 研究下,他的方法我没用过