我用ADO主从表缓存,主表的数据可以保存到数据库中,但从表数据却一个也没保存进去。
请大家帮忙解答一下

解决方案 »

  1.   

    設置成緩存模式的話,在post操作後還要做如下動作:
    ADODataSetMaster.UpdateBatch(arAll);
    ADODataSetDeatil.UpdateBatch(arAll);記住,最好在添加從表前,把主表Post。
      

  2.   

    在主表afterpost事件后加上
    ADODataSetDeatil.UpdateBatch(arAll);
      

  3.   

    其实你可以使用nested data的,这样就只需要更新一个主表就可以了
      

  4.   

    Sell_QY(主表控件用的是adoquery),SellChild_QY(从表控件用的是ADODataSet).
    sell_qy和sellchild_qy的locktype属性都设为ltBatchOptimistic.
    SellChild_QY的TParameters添加了一个CONID
    Sell_QY.sql.Add('select * from sell_tb order by autoid');
    SellChild_QY.commandtext:='select * from sellchild_tb where conid=:conid';
    主表的CONID字段是自动编号的,与从表的CONID字段相关联
    //---------------------------------------------
    procedure TDM_FM.SellChild_QYAfterInsert(DataSet: TDataSet);
    begin
            if sell_qy.State in [dsinsert,dsedit] then sell_qy.Post;
    end;procedure TDM_FM.SellChild_QYNewRecord(DataSet: TDataSet);
    begin
            SellChild_QY.FieldByName('Conid').Value:= SellChild_QY.Parameters[0].Value;
    end;procedure TDM_FM.Sell_QYAfterScroll(DataSet: TDataSet);
    begin
            SellChild_QY.Parameters[0].Value := Sell_QY.FieldByName('conid').AsInteger;
    end;按照ypnet(高原)所说的加了一条
    procedure TDM_FM.Sell_QYAfterPost(DataSet: TDataSet);
    begin
            SellChild_QY.UpdateBatch(arall);
    end;
    现在的情况是可以保存进去了,但关联字段没有与主表关联上
    保存语句:
            SellChild_QY.UpdateBatch;
            Sell_QY.UpdateBatch;
      

  5.   

    忘了说了,SellChild_QY(从表)的datasource属性也和主表关联了
      

  6.   

    tadoconnection有事务管理,开始事务,提交事务,错误回滚
      

  7.   

    to xhhero(平安一生) :
    能详细的说一下吗?事务我不懂的