这样子,我不知是该如何做才可以.主表新增后(未提交或是未存盘的时候),从表新增记录,从表的记录一存盘,就不见了(其实记录是应该还在的,因为UpdateBatch后就有了).难不成一定要到主表新增存盘之后从表才可以新增吗(这样从表存盘的数据才可见)?我搜索了却没有人有答案,你们都如何做的呢?
我用的是TADOQuery.

解决方案 »

  1.   

    主表的记录没增加,干吗要先增加从表的数据,那不是有可能会造成废数据吗。给你个例子看看:
      If  NOT ADOConnection1. InTransaction  THEN
           ADOConnection1.BeginTrans;
        Try                                          
           ADODSMaster.UpdateBatch;             // 先提交Master。
        Except                                  // 若提交Master失败,
           ADOConnection1.RollbackTrans;       // 回滚事务。
           abort;                               // 退出。
        End;
        Try
           ADODSDetail.UpdateBatch;     // 提交Master成功,再提交Detail。
           ADOConnection1.CommitTrans;  // 若提交Detail成功,提交事务。
        Except                           // 若提交Detail失败,
           ADODSMaster.CancelUpdates;   // 则取消对Master的更新操作。
           abort;
    End;
      

  2.   

    谢谢你!不过你说的我知道,我不是说提交主从表的所有数据时的问题.我可能没有说清楚,我是说主表新增一条记录,当主表还在dsInsert状态时,对从表添加了记录.然后从表post了,此时主表还在dsInsert状态.而我的意思是从表post后的那条记录就不见了.这时主从表都未到Update的时候,且主表还在dsInsert状态.我想不是要新增主表记录时,然后要对刚新增的记录进行添加的记录添加明细时不定要先post主表的那条记录吧.
      

  3.   

    按道理一定要先提交主表再提交从表。我的例子就是这样,如果主表提交失败,则不会去提交从表,从表如果失败也会将主表的提交回滚,这是相对安全的做法。如果向那么做,从表提交了,而主表却被cancel怎么办?从表的数据岂不是废了?