代码为: procedure Tformvali.savedata(sender:tobject); var curda:string; CURDATASET:TDBDATASET; begin with datamod do begin curda:=uppercase(trimright(tdbdataset(sender as tdbdataset).databasename)); CURDATASET:=tdbdataset(sender as tdbdataset); CurDataset.DisableConstraints; //是否有未更新的数据在缓存中,检查当前数据集是否已经作了修改 if (curdataset.UpdatesPending) OR (curdataset.UpdateSTATUS<>usUnmodified) THEN BEGIN IF CurDa='SYS' THEN //SYS if not dbase.intransaction then begin dbase.StartTransaction; end; IF CurDa='BOM' THEN //BOM if not dbasebom.InTransaction then begin dbasebom.StartTransaction; end; IF CurDa='COP' THEN //COP if not dbasecop.InTransaction then begin dbasecop.StartTransaction; end; IF CurDa='PUR' THEN //PUR if not dbasepur.InTransaction then begin dbasepur.StartTransaction; end; IF CurDa='MOC' THEN //MOC if not dbasemoc.InTransaction then begin dbasemoc.StartTransaction; end; IF CurDa='INV' THEN //INV if not dbaseinv.InTransaction then begin dbaseinv.StartTransaction; end; IF CurDa='SNWEB' THEN //SNWEB if not dbaseweb.InTransaction then begin dbaseweb.StartTransaction; end; try CurDataSet.UpdateCursorPos; CurDataSet.ApplyUpdates; IF CurDa='SYS' THEN //SYS dbase.Commit; IF CurDa='BOM' THEN //BOM dbasebom.Commit; IF CurDa='COP' THEN BEGIN //COP dbasecop.Commit; END; IF CurDa='PUR' THEN //PUR dbasepur.Commit; IF CurDa='MOC' THEN //MOC dbasemoc.Commit; IF CurDa='INV' THEN //INV dbaseinv.Commit; IF CurDa='SNWEB' THEN //SNWEB dbaseweb.Commit; //CurDataset.CommitUpdates; except IF CurDa='SYS' THEN //SYS dbase.Rollback; IF CurDa='BOM' THEN //BOM dbasebom.Rollback; IF CurDa='COP' THEN //COP dbasecop.Rollback; IF CurDa='PUR' THEN //PUR dbasepur.Rollback; IF CurDa='MOC' THEN //MOC dbasemoc.Rollback; IF CurDa='INV' THEN //INV dbaseinv.Rollback; IF CurDa='SNWEB' THEN //SNWEB dbaseweb.Rollback; APPLICATION.MessageBox('数据写入服务器失败,请修改数据','提示信息',0+16); raise; end; CurDataset.EnableConstraints; end; end;procedure Tformcorderedit.BtnsaveClick(Sender: TObject); var ypno:string; begin ypno:=datamod.tcordercno.AsString; with datamod.qmodcop,DataMod do begin close; sql.clear; sql.add(format('select sum(sums) as sums from corderedit where pno='+'''%s''',[ypno])); open; tcorder.edit; tcordersums.AsFloat:=fieldbyname('sums').asfloat; end; inherited; tabc1.Enabled:=false; end;inherited内的代码: if (saveedit.DataSource <>nil) and ( dbgrid1.DataSource <>nil) then begin formvali.savedata(tdbdataset(saveedit.datasource.dataset)); formvali.savedata(tdbdataset(dbgrid1.datasource.dataset)); end else if dbgrid1.DataSource <>nil then formvali.savedata(tdbdataset(dbgrid1.datasource.dataset)) else if saveedit.DataSource <>nil then formvali.savedata(tdbdataset(saveedit.datasource.dataset)); dbgrid1.options := dbgrid1.Options -[dgediting]; tabc.Enabled := false; Datamod.Isedit := False; btnstate(Datamod.isedit);
原代码: procedure Tformvali.savedata(sender:tobject); var curda:string; CURDATASET:TDBDATASET; begin with datamod do begin curda:=uppercase(trimright(tdbdataset(sender as tdbdataset).databasename)); CURDATASET:=tdbdataset(sender as tdbdataset); CurDataset.DisableConstraints; //是否有未更新的数据在缓存中,检查当前数据集是否已经作了修改 if (curdataset.UpdatesPending) OR (curdataset.UpdateSTATUS<>usUnmodified) THEN BEGIN IF CurDa='SYS' THEN //SYS if not dbase.intransaction then begin dbase.StartTransaction; end; IF CurDa='BOM' THEN //BOM if not dbasebom.InTransaction then begin dbasebom.StartTransaction; end; IF CurDa='COP' THEN //COP if not dbasecop.InTransaction then begin dbasecop.StartTransaction; end; IF CurDa='PUR' THEN //PUR if not dbasepur.InTransaction then begin dbasepur.StartTransaction; end; IF CurDa='MOC' THEN //MOC if not dbasemoc.InTransaction then begin dbasemoc.StartTransaction; end; IF CurDa='INV' THEN //INV if not dbaseinv.InTransaction then begin dbaseinv.StartTransaction; end; IF CurDa='SNWEB' THEN //SNWEB if not dbaseweb.InTransaction then begin dbaseweb.StartTransaction; end; try CurDataSet.UpdateCursorPos; CurDataSet.ApplyUpdates; IF CurDa='SYS' THEN //SYS dbase.Commit; IF CurDa='BOM' THEN //BOM dbasebom.Commit; IF CurDa='COP' THEN BEGIN //COP dbasecop.Commit; END; IF CurDa='PUR' THEN //PUR dbasepur.Commit; IF CurDa='MOC' THEN //MOC dbasemoc.Commit; IF CurDa='INV' THEN //INV dbaseinv.Commit; IF CurDa='SNWEB' THEN //SNWEB dbaseweb.Commit; //CurDataset.CommitUpdates; except IF CurDa='SYS' THEN //SYS dbase.Rollback; IF CurDa='BOM' THEN //BOM dbasebom.Rollback; IF CurDa='COP' THEN //COP dbasecop.Rollback; IF CurDa='PUR' THEN //PUR dbasepur.Rollback; IF CurDa='MOC' THEN //MOC dbasemoc.Rollback; IF CurDa='INV' THEN //INV dbaseinv.Rollback; IF CurDa='SNWEB' THEN //SNWEB dbaseweb.Rollback; APPLICATION.MessageBox('数据写入服务器失败,请修改数据','提示信息',0+16); raise; end; CurDataset.EnableConstraints; end; end;procedure Tformcorderedit.BtnsaveClick(Sender: TObject); var ypno:string; begin ypno:=datamod.tcordercno.AsString; with datamod.qmodcop,DataMod do begin close; sql.clear; sql.add(format('select sum(sums) as sums from corderedit where pno='+'''%s''',[ypno])); open; tcorder.edit; tcordersums.AsFloat:=fieldbyname('sums').asfloat; end; inherited; tabc1.Enabled:=false; end;inherited内的代码: if (saveedit.DataSource <>nil) and ( dbgrid1.DataSource <>nil) then begin formvali.savedata(tdbdataset(saveedit.datasource.dataset)); formvali.savedata(tdbdataset(dbgrid1.datasource.dataset)); end else if dbgrid1.DataSource <>nil then formvali.savedata(tdbdataset(dbgrid1.datasource.dataset)) else if saveedit.DataSource <>nil then formvali.savedata(tdbdataset(saveedit.datasource.dataset)); dbgrid1.options := dbgrid1.Options -[dgediting]; tabc.Enabled := false; Datamod.Isedit := False; btnstate(Datamod.isedit);
procedure Tformvali.savedata(sender:tobject);
var curda:string;
CURDATASET:TDBDATASET;
begin
with datamod do begin
curda:=uppercase(trimright(tdbdataset(sender as tdbdataset).databasename));
CURDATASET:=tdbdataset(sender as tdbdataset);
CurDataset.DisableConstraints;
//是否有未更新的数据在缓存中,检查当前数据集是否已经作了修改
if (curdataset.UpdatesPending) OR (curdataset.UpdateSTATUS<>usUnmodified) THEN BEGIN
IF CurDa='SYS' THEN //SYS
if not dbase.intransaction then begin
dbase.StartTransaction;
end;
IF CurDa='BOM' THEN //BOM
if not dbasebom.InTransaction then begin
dbasebom.StartTransaction;
end;
IF CurDa='COP' THEN //COP
if not dbasecop.InTransaction then begin
dbasecop.StartTransaction;
end;
IF CurDa='PUR' THEN //PUR
if not dbasepur.InTransaction then begin
dbasepur.StartTransaction;
end;
IF CurDa='MOC' THEN //MOC
if not dbasemoc.InTransaction then begin
dbasemoc.StartTransaction;
end;
IF CurDa='INV' THEN //INV
if not dbaseinv.InTransaction then begin
dbaseinv.StartTransaction;
end;
IF CurDa='SNWEB' THEN //SNWEB
if not dbaseweb.InTransaction then begin
dbaseweb.StartTransaction;
end;
try
CurDataSet.UpdateCursorPos;
CurDataSet.ApplyUpdates;
IF CurDa='SYS' THEN //SYS
dbase.Commit;
IF CurDa='BOM' THEN //BOM
dbasebom.Commit;
IF CurDa='COP' THEN BEGIN //COP
dbasecop.Commit;
END;
IF CurDa='PUR' THEN //PUR
dbasepur.Commit;
IF CurDa='MOC' THEN //MOC
dbasemoc.Commit;
IF CurDa='INV' THEN //INV
dbaseinv.Commit;
IF CurDa='SNWEB' THEN //SNWEB
dbaseweb.Commit;
//CurDataset.CommitUpdates;
except
IF CurDa='SYS' THEN //SYS
dbase.Rollback;
IF CurDa='BOM' THEN //BOM
dbasebom.Rollback;
IF CurDa='COP' THEN //COP
dbasecop.Rollback;
IF CurDa='PUR' THEN //PUR
dbasepur.Rollback;
IF CurDa='MOC' THEN //MOC
dbasemoc.Rollback;
IF CurDa='INV' THEN //INV
dbaseinv.Rollback;
IF CurDa='SNWEB' THEN //SNWEB
dbaseweb.Rollback;
APPLICATION.MessageBox('数据写入服务器失败,请修改数据','提示信息',0+16);
raise;
end;
CurDataset.EnableConstraints;
end;
end;procedure Tformcorderedit.BtnsaveClick(Sender: TObject);
var ypno:string;
begin
ypno:=datamod.tcordercno.AsString;
with datamod.qmodcop,DataMod do
begin
close;
sql.clear;
sql.add(format('select sum(sums) as sums from corderedit where pno='+'''%s''',[ypno]));
open;
tcorder.edit;
tcordersums.AsFloat:=fieldbyname('sums').asfloat;
end;
inherited;
tabc1.Enabled:=false;
end;inherited内的代码: if (saveedit.DataSource <>nil) and ( dbgrid1.DataSource <>nil) then
begin
formvali.savedata(tdbdataset(saveedit.datasource.dataset));
formvali.savedata(tdbdataset(dbgrid1.datasource.dataset));
end else
if dbgrid1.DataSource <>nil then
formvali.savedata(tdbdataset(dbgrid1.datasource.dataset))
else if saveedit.DataSource <>nil then
formvali.savedata(tdbdataset(saveedit.datasource.dataset));
dbgrid1.options := dbgrid1.Options -[dgediting];
tabc.Enabled := false;
Datamod.Isedit := False;
btnstate(Datamod.isedit);
procedure Tformvali.savedata(sender:tobject);
var curda:string;
CURDATASET:TDBDATASET;
begin
with datamod do begin
curda:=uppercase(trimright(tdbdataset(sender as tdbdataset).databasename));
CURDATASET:=tdbdataset(sender as tdbdataset);
CurDataset.DisableConstraints;
//是否有未更新的数据在缓存中,检查当前数据集是否已经作了修改
if (curdataset.UpdatesPending) OR (curdataset.UpdateSTATUS<>usUnmodified) THEN BEGIN
IF CurDa='SYS' THEN //SYS
if not dbase.intransaction then begin
dbase.StartTransaction;
end;
IF CurDa='BOM' THEN //BOM
if not dbasebom.InTransaction then begin
dbasebom.StartTransaction;
end;
IF CurDa='COP' THEN //COP
if not dbasecop.InTransaction then begin
dbasecop.StartTransaction;
end;
IF CurDa='PUR' THEN //PUR
if not dbasepur.InTransaction then begin
dbasepur.StartTransaction;
end;
IF CurDa='MOC' THEN //MOC
if not dbasemoc.InTransaction then begin
dbasemoc.StartTransaction;
end;
IF CurDa='INV' THEN //INV
if not dbaseinv.InTransaction then begin
dbaseinv.StartTransaction;
end;
IF CurDa='SNWEB' THEN //SNWEB
if not dbaseweb.InTransaction then begin
dbaseweb.StartTransaction;
end;
try
CurDataSet.UpdateCursorPos;
CurDataSet.ApplyUpdates;
IF CurDa='SYS' THEN //SYS
dbase.Commit;
IF CurDa='BOM' THEN //BOM
dbasebom.Commit;
IF CurDa='COP' THEN BEGIN //COP
dbasecop.Commit;
END;
IF CurDa='PUR' THEN //PUR
dbasepur.Commit;
IF CurDa='MOC' THEN //MOC
dbasemoc.Commit;
IF CurDa='INV' THEN //INV
dbaseinv.Commit;
IF CurDa='SNWEB' THEN //SNWEB
dbaseweb.Commit;
//CurDataset.CommitUpdates;
except
IF CurDa='SYS' THEN //SYS
dbase.Rollback;
IF CurDa='BOM' THEN //BOM
dbasebom.Rollback;
IF CurDa='COP' THEN //COP
dbasecop.Rollback;
IF CurDa='PUR' THEN //PUR
dbasepur.Rollback;
IF CurDa='MOC' THEN //MOC
dbasemoc.Rollback;
IF CurDa='INV' THEN //INV
dbaseinv.Rollback;
IF CurDa='SNWEB' THEN //SNWEB
dbaseweb.Rollback;
APPLICATION.MessageBox('数据写入服务器失败,请修改数据','提示信息',0+16);
raise;
end;
CurDataset.EnableConstraints;
end;
end;procedure Tformcorderedit.BtnsaveClick(Sender: TObject);
var ypno:string;
begin
ypno:=datamod.tcordercno.AsString;
with datamod.qmodcop,DataMod do
begin
close;
sql.clear;
sql.add(format('select sum(sums) as sums from corderedit where pno='+'''%s''',[ypno]));
open;
tcorder.edit;
tcordersums.AsFloat:=fieldbyname('sums').asfloat;
end;
inherited;
tabc1.Enabled:=false;
end;inherited内的代码: if (saveedit.DataSource <>nil) and ( dbgrid1.DataSource <>nil) then
begin
formvali.savedata(tdbdataset(saveedit.datasource.dataset));
formvali.savedata(tdbdataset(dbgrid1.datasource.dataset));
end else
if dbgrid1.DataSource <>nil then
formvali.savedata(tdbdataset(dbgrid1.datasource.dataset))
else if saveedit.DataSource <>nil then
formvali.savedata(tdbdataset(saveedit.datasource.dataset));
dbgrid1.options := dbgrid1.Options -[dgediting];
tabc.Enabled := false;
Datamod.Isedit := False;
btnstate(Datamod.isedit);
1.不用dbgrid显示text类型的字段.
2.如果text类型的字段只是存放一定长度的字符串, 用长字符串类型代替.