F_dm.ADOConnection1.BeginTrans; //启动事务
with ADOQuery3 do //将信息保存到进货主表
begin
Close;
SQl.Clear;
SQl.Add('select * from tb_warehouse_main where billcode='+''''+Trim(Edit2.Text)+'''');
open;
edit;
FieldByName('units').AsString:=Trim(Edit3.Text);
FieldByName('handle').AsString:=Trim(Edit4.Text);
FieldByName('op').AsString:=Trim(Edit1.Text);
FieldByName('summary').AsString:=Trim(Edit5.Text);
FieldByName('fullpayment').AsFloat:=strtofloat(panel1.Caption);
FieldByName('payment').AsFloat:=strtofloat(format('%10.4f',[strtofloat(Edit6.Text)]));
UpdateRecord;
post;
end;
With ADOQuery3 do
begin
Close;
SQL.Clear;
SQL.Add('delete from tb_warehouse_detailed where billcode ='+''''+Trim(Edit2.Text)+'''');
ExecSQL;
end;
with ADOQuery3 do //将信息保存到往来账明细表
begin
close;
SQL.Clear;
SQL.Add('select * from tb_currentaccount where billcode='+''''+Trim(Edit2.Text)+'''');
Open;
edit;
FieldByName('units').AsString:=Trim(Edit3.Text);
FieldByName('op').AsString:=Trim(Edit1.Text);
FieldByName('reducegathering').AsFloat:=strtofloat(panel1.Caption);
FieldByName('balance').AsFloat:=strtofloat(Edit6.Text)-strtofloat(panel1.Caption);
post;
end; For grow:=1 to strdbrows do
begin
with adoquery3 do
begin
with stringgrid1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from tb_stock where tradecode='+''''+Trim(Cells[1,grow])+'''');
Open;
edit;
fieldbyname('qty').AsFloat:=fieldbyname('qty').AsFloat+strtofloat(Cells[11,grow]);
fieldbyname('price').AsFloat:=strtofloat(format('%10.4f',[strtofloat(Cells[8,grow])]));
UpdateRecord;
post;
end;
end;
end; //保存往来单位表中的 累计应收 累计应付字段
with Adoquery3 do
begin
Close;
SQl.Clear;
SQl.Add('select * from tb_units where fullname='+''''+Trim(Edit12.Text)+'''');
open;
Edit;
FieldByName('payment').AsFloat:=strtofloat(format('%10.4f',[FieldByName('payment').AsFloat-strtofloat(panel1.Caption)+strtofloat(Edit6.Text)]));
updaterecord;
post;
end; with Adoquery3 do
begin
Close;
SQl.Clear;
SQl.Add('select * from tb_units where fullname='+''''+Trim(Edit3.Text)+'''');
open;
Edit;
FieldByName('payment').AsFloat:=strtofloat(format('%10.4f',[FieldByName('payment').AsFloat+strtofloat(panel1.Caption)-strtofloat(Edit6.Text)]));
updaterecord;
post;
end; with Adoquery3 do //将信息保存到进货明细表
begin
Close;
SQl.Clear;
SQl.Add('select * from tb_warehouse_detailed');
open;
For grow:=1 to strdbrows do //strdbrows记录当前表单的记录个数
begin
insert;
FieldByName('billdate').AsDateTime:=strtodate(formatdatetime('yyyy-mm-dd',datetimepicker1.Date));
FieldByName('billcode').AsString:=Trim(Edit2.Text);
FieldByName('op').AsString:=Trim(Edit1.Text);
FieldByName('handle').AsString:=Trim(Edit4.Text);
for gcol:=1 to 9 do
begin
Fields[gcol].AsVariant:=stringgrid1.Cells[gcol,grow];
end;
post;
end;
end;
F_dm.ADOConnection1.CommitTrans; //提交事务
Application.MessageBox('修改入库单成功','提示',mb_ok); except
F_dm.ADOConnection1.RollbackTrans; //回滚事务
Application.MessageBox('保存不成功','提示',mb_ok);
end;
F_jhcx.Button1.Click;
end;
这是入库表修改的源代码,我启用了事务控制,奇怪的是程序有时执行正确有时出现错误!
我是这样修改入库单的主明细表报表,入库主表我是根据入库单号进行修改数量和金额和供应商(这段没问题)
入库明细表我是首先删除所有相对应的入库明细表,然后再插入刚修改的明细表,这个方法比较笨,不知道有没有更好的方法,删除入库明细表没有问题,问题出现在插入修改的明细表,有时可以,有时却不能插入,只把原明细表删了,然没有插入修改的明细表,上面经色代码好为插入代码,代码应该本身没有问题,但有时却不执行,请高手指点,哪错了呀!
with ADOQuery3 do //将信息保存到进货主表
begin
Close;
SQl.Clear;
SQl.Add('select * from tb_warehouse_main where billcode='+''''+Trim(Edit2.Text)+'''');
open;
edit;
FieldByName('units').AsString:=Trim(Edit3.Text);
FieldByName('handle').AsString:=Trim(Edit4.Text);
FieldByName('op').AsString:=Trim(Edit1.Text);
FieldByName('summary').AsString:=Trim(Edit5.Text);
FieldByName('fullpayment').AsFloat:=strtofloat(panel1.Caption);
FieldByName('payment').AsFloat:=strtofloat(format('%10.4f',[strtofloat(Edit6.Text)]));
UpdateRecord;
post;
end;
With ADOQuery3 do
begin
Close;
SQL.Clear;
SQL.Add('delete from tb_warehouse_detailed where billcode ='+''''+Trim(Edit2.Text)+'''');
ExecSQL;
end;
with ADOQuery3 do //将信息保存到往来账明细表
begin
close;
SQL.Clear;
SQL.Add('select * from tb_currentaccount where billcode='+''''+Trim(Edit2.Text)+'''');
Open;
edit;
FieldByName('units').AsString:=Trim(Edit3.Text);
FieldByName('op').AsString:=Trim(Edit1.Text);
FieldByName('reducegathering').AsFloat:=strtofloat(panel1.Caption);
FieldByName('balance').AsFloat:=strtofloat(Edit6.Text)-strtofloat(panel1.Caption);
post;
end; For grow:=1 to strdbrows do
begin
with adoquery3 do
begin
with stringgrid1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from tb_stock where tradecode='+''''+Trim(Cells[1,grow])+'''');
Open;
edit;
fieldbyname('qty').AsFloat:=fieldbyname('qty').AsFloat+strtofloat(Cells[11,grow]);
fieldbyname('price').AsFloat:=strtofloat(format('%10.4f',[strtofloat(Cells[8,grow])]));
UpdateRecord;
post;
end;
end;
end; //保存往来单位表中的 累计应收 累计应付字段
with Adoquery3 do
begin
Close;
SQl.Clear;
SQl.Add('select * from tb_units where fullname='+''''+Trim(Edit12.Text)+'''');
open;
Edit;
FieldByName('payment').AsFloat:=strtofloat(format('%10.4f',[FieldByName('payment').AsFloat-strtofloat(panel1.Caption)+strtofloat(Edit6.Text)]));
updaterecord;
post;
end; with Adoquery3 do
begin
Close;
SQl.Clear;
SQl.Add('select * from tb_units where fullname='+''''+Trim(Edit3.Text)+'''');
open;
Edit;
FieldByName('payment').AsFloat:=strtofloat(format('%10.4f',[FieldByName('payment').AsFloat+strtofloat(panel1.Caption)-strtofloat(Edit6.Text)]));
updaterecord;
post;
end; with Adoquery3 do //将信息保存到进货明细表
begin
Close;
SQl.Clear;
SQl.Add('select * from tb_warehouse_detailed');
open;
For grow:=1 to strdbrows do //strdbrows记录当前表单的记录个数
begin
insert;
FieldByName('billdate').AsDateTime:=strtodate(formatdatetime('yyyy-mm-dd',datetimepicker1.Date));
FieldByName('billcode').AsString:=Trim(Edit2.Text);
FieldByName('op').AsString:=Trim(Edit1.Text);
FieldByName('handle').AsString:=Trim(Edit4.Text);
for gcol:=1 to 9 do
begin
Fields[gcol].AsVariant:=stringgrid1.Cells[gcol,grow];
end;
post;
end;
end;
F_dm.ADOConnection1.CommitTrans; //提交事务
Application.MessageBox('修改入库单成功','提示',mb_ok); except
F_dm.ADOConnection1.RollbackTrans; //回滚事务
Application.MessageBox('保存不成功','提示',mb_ok);
end;
F_jhcx.Button1.Click;
end;
这是入库表修改的源代码,我启用了事务控制,奇怪的是程序有时执行正确有时出现错误!
我是这样修改入库单的主明细表报表,入库主表我是根据入库单号进行修改数量和金额和供应商(这段没问题)
入库明细表我是首先删除所有相对应的入库明细表,然后再插入刚修改的明细表,这个方法比较笨,不知道有没有更好的方法,删除入库明细表没有问题,问题出现在插入修改的明细表,有时可以,有时却不能插入,只把原明细表删了,然没有插入修改的明细表,上面经色代码好为插入代码,代码应该本身没有问题,但有时却不执行,请高手指点,哪错了呀!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货