procedure TForm_CGRKD.FormShow(Sender: TObject);//打開主明細表
begin
  With UnitDatamodule.DataModuleMRP do
 begin
   with ADOQueryCGRKMain do      //采購入庫主表
   begin
    DisableControls;
    Close;
    Connection:=ADOConnection;
    SQL.Clear ;
    SQL.Add('Select * from KC_CGRKDMain');
    EnableControls;
    Open;
    DataSourceCGRKDMain.DataSet :=ADOQueryCGRKMain;
    Edit_CGRKD.Text:=FieldValues['CGRKDBH'];
    MaskEdit_CGRKRQ.Text:=FieldValues['CGRKDRQ'] ;
    Edit_CGRKZHT.Text:=FieldValues['CGRKZHT'] ;
    Edit_CGDH.Text:=FieldValues['CGDH'] ;
    Edit_SHLCKBH.Text:=FieldValues['SHLCKBH'] ;
    Edit_SHLBMBH.Text:=FieldValues['SHLBMBH'] ;
    Edit_YSHRBH.Text:=FieldValues['YSHRBH'] ;
    Edit_SHDBH.Text:=FieldValues['SHDBH'] ;
    Edit_GYSHBH.Text :=FieldByName('ProviderID').AsString ;;//計算字段    Edit_GYSHMCH.Text :=FieldByName('ProviderName').AsString ;;//計算字段    Edit_SHLCKMCH.Text :=FieldByName('ckmch').AsString ;;//計算字段    Edit_SHLBMMCH.Text :=FieldByName('departmentname').AsString ;;//計算字段    Edit_YSHRMCH.Text :=FieldByName('Name').AsString ; ;//計算字段
   
     end; //end ADOQueryCGRKMain;
   with ADOQueryCGRKDetails do      //采購入庫明細表
   begin
    DisableControls;
    Close;
    Connection:=ADOConnection;
    SQL.Clear ;
    SQL.Add('Select * From KC_CGRKDDetails where CGRKDBH=:CGRKDBH');
    EnableControls;
    Open;
    DataSource:=nil;
    DataSource:=DataSourceCGRKDMain;
    DataSourceCGRKDDetails.DataSet :=ADOQueryCGRKDetails;
   end; //end ADOQueryCGRKDetails;
    with DBGridEhCGRKDetails do
    begin
      DataSource:=DataSourceCGRKDDetails; //采購入庫明細
      Columns[0].FieldName :='CGRKDBH';
      Columns[1].FieldName:='WLBH';               
      Columns[2].FieldName:='WLMCH';//計算字段
      Columns[3].FieldName :='Color';//計算字段
      Columns[4].FieldName:='JZHDW';//計算字段
      Columns[5].FieldName:='RKDW';
      Columns[6].FieldName:='HSY';
      Columns[7].FieldName :='RKL';
      Columns[8].FieldName:='PC';
      Columns[9].FieldName:='YXQ';
      Columns[10].FieldName :='ZHZDH';
      Columns[0].Width :=50;
      Columns[1].Width :=100 ;
      Columns[2].Width :=150;
      Columns[3].Width :=50 ;
      Columns[4].Width :=50;
      Columns[5].Width :=50 ;
      Columns[6].Width :=50;
      Columns[7].Width :=50 ;
      columns[8].Width :=50 ;
      Columns[9].Width :=60 ;
      Columns[10].Width :=60;
    end; //end cgdrkdetailsgrid
  end;
end;procedure TForm_CGRKD.ToolButton_NewClick(Sender: TObject);//添加一筆訂單
begin
 With UnitDatamodule.DataModuleMRP do
 begin
   with ADOQueryCGRKMain do      //采購入庫主表
   begin
    Append;
   end;   with ADOQueryCGRKDetails do      //采購入庫明細表
   begin    Append;
   end;
 end;//end data
end;//procedure TForm_CGRKD.ToolButton_saveClick(Sender: TObject);//保存訂單
var
  CGRKDBH:string;
  CGRKDBHLen:integer;
begin
 with UnitDatamodule.DataModuleMRP do
 begin
  Try
  ADOConnection.BeginTrans ;
  with ADOStoredProcCGDMAXDH do    //獲取最大的采購入庫單編號
   begin
    DisableControls;
    Close;
    Connection:=ADOConnection;
    ProcedureName:='prcKC_CGRKDMAXBH';
    Prepared:=True;
    EnableControls;
    Open;
    if RecordCount=0 then CGRKDBH:='CGRKD000001'
    else
     begin
      CGRKDBH:=FieldValues['CGRKDBH'];
      CGRKDBH:=Trim(Rightstr(CGRKDBH,6));
      CGRKDBHLen:=Length(IntTostr((strToInt(CGRKDBH)+1)));
      case CGRKDBHLen of
        1:CGRKDBH:='CGRKD00000'+IntTostr((strToInt(CGRKDBH)+1));
        2:CGRKDBH:='CGRKD0000'+IntTostr((strToInt(CGRKDBH)+1));
        3:CGRKDBH:='CGRKD000'+IntTostr((strToInt(CGRKDBH)+1));
        4:CGRKDBH:='CGRKD00'+IntTostr((strToInt(CGRKDBH)+1));
        5:CGRKDBH:='CGRKD0'+IntTostr((strToInt(CGRKDBH)+1));
        6:CGRKDBH:='CGRKD'+IntTostr((strToInt(CGRKDBH)+1));
      end;//end case
     end;//end else
    Edit_CGRKD.Text :=CGRKDBH;
   end; //end maxcgdbh
 
  with ADOQueryCGRKMain   do    //采購入庫單主表
   begin
    FieldValues['CGRKDBH']:=Edit_CGRKD.Text;
    FieldValues['CGRKDRQ']:=MaskEdit_CGRKRQ.Text ;
    FieldValues['CGRKZHT']:=Edit_CGRKZHT.Text ;
    FieldValues['CGDH']:=Edit_CGDH.Text ;
    FieldValues['SHLCKBH']:=Edit_SHLCKBH.Text ;
    FieldValues['SHLBMBH']:=Edit_SHLBMBH.Text ;
    FieldValues['YSHRBH']:=Edit_YSHRBH.Text ;
    FieldValues['SHDBH']:=Edit_SHDBH.Text ;
    case UpdateStatus of
     usUnmodified:showmessage('1');
     usModified:UpdateBatch(arAll);
     usInserted:UpdateBatch(arAll);
    end;
   end;   with ADOQueryCGRKDetails  do //采購入庫單明細表
   begin
    case UpdateStatus of
     usUnmodified:showmessage('11');
     usModified:showmessage('21');
     usInserted:begin
                 UpdateBatch(arAll);
                end;
    end;
    Close;
    Open;
   end;
   ADOConnection.CommitTrans ;
  Except
   ADOConnection.RollbackTrans ;
  end;//END try
 end;//end DATA  
end;ADOQueryCGRKMain,ADOQueryCGRKDetails都為緩存模式:locktype:=ltBatchOptimistic;第一次添加保存時正常 ,再接著添加訂單,則主表能保存,從表不能保存?邦我找找原因