--上面的语句检查是否符合保存条件
DMMain.conMain.StartTransaction;
try
try
if bSaveAdd then
begin
sProcess := '更新单据编号发生错误';
msqry_Zb.Edit;
msqry_Zb.FieldByName('crkzb_Dh').AsString := sNewDjbh;
UpdateNewDjBh(spuDjlxBh, sNewDjbh);
end
else //如查为单据修改操作则更新修改次数
begin
msqry_Zb.Edit;
msqry_Zb.FieldByName('CRKZB_XGCS').Value := msqry_Zb.FieldByName('CRKZB_XGCS').OldValue + 1;
end;
sProcess := '更新单据明细单号发生错误';
UpdateMxDjbh;
sProcess := '保存单据明细数据发生错误';
msqry_Mx.ApplyUpdates;
sProcess := '保存付款明细数据发生错误';
msqry_Sk.ApplyUpdates;
sProcess := '保存单据主表数据发生错误';
msqry_Zb.Post;
sProcess := '提交数据库事务更新';
DMMain.conMain.Commit;
Result := True;
except
on E: Exception do
begin
msqry_Mx.RestoreUpdates;
msqry_Sk.RestoreUpdates;
DisPoseDBTranExcept(sProcess, E);
end;
end; //end try except
if Result then
begin
msqry_Mx.CommitUpdates;
msqry_Sk.CommitUpdates;
if bSaveAdd then
spuDjBh := sNewDjbh;
end;
finally
CheckInTranRollBack;
end; //end try finally
DMMain.conMain.StartTransaction;
try
try
if bSaveAdd then
begin
sProcess := '更新单据编号发生错误';
msqry_Zb.Edit;
msqry_Zb.FieldByName('crkzb_Dh').AsString := sNewDjbh;
UpdateNewDjBh(spuDjlxBh, sNewDjbh);
end
else //如查为单据修改操作则更新修改次数
begin
msqry_Zb.Edit;
msqry_Zb.FieldByName('CRKZB_XGCS').Value := msqry_Zb.FieldByName('CRKZB_XGCS').OldValue + 1;
end;
sProcess := '更新单据明细单号发生错误';
UpdateMxDjbh;
sProcess := '保存单据明细数据发生错误';
msqry_Mx.ApplyUpdates;
sProcess := '保存付款明细数据发生错误';
msqry_Sk.ApplyUpdates;
sProcess := '保存单据主表数据发生错误';
msqry_Zb.Post;
sProcess := '提交数据库事务更新';
DMMain.conMain.Commit;
Result := True;
except
on E: Exception do
begin
msqry_Mx.RestoreUpdates;
msqry_Sk.RestoreUpdates;
DisPoseDBTranExcept(sProcess, E);
end;
end; //end try except
if Result then
begin
msqry_Mx.CommitUpdates;
msqry_Sk.CommitUpdates;
if bSaveAdd then
spuDjBh := sNewDjbh;
end;
finally
CheckInTranRollBack;
end; //end try finally