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;第一次添加保存時正常 ,再接著添加訂單,則主表能保存,從表不能保存?邦我找找原因
UpdateBatch是否内部已经有了事务,所以最后的RollBack没有恢复数据?