H
huzhaowei
Unregistered / Unconfirmed
GUEST, unregistred user!
请问用adotable,adoquery控件,如何进行数据的更新与回滚的,假如有如下一段代码:
try
with DataModule1.product do
begin
Append;
FieldByName('产品类号').AsString:=edit1.Text;
FieldByName('产品编号').AsString:=edit1.Text+'.'+(edit5.Text);
FieldByName('产品名称').AsString:=trim(edit2.Text);
FieldByName('产品类别').AsString:=trim(edit1.Text);
FieldByName('成品率').AsString:=trim(edit6.Text);
FieldByName('规格型号').AsString:=trim(edit3.Text);
FieldByName('计量单位').AsString:=trim(edit7.Text);
FieldByName('产品说明').AsString:=trim(edit8.Text);
FieldByName('产品图片').AsString:=pimagepath;
FieldByName('最大单位').AsString:=trim(edit14.Text);
FieldByName('最小单位').AsString:=trim(edit15.Text);
FieldByName('换算关系').AsFloat:=strtofloat(trim(edit16.Text));
FieldByName('是否审核').AsString:='0';
Post;
end;
if stringgrid1.Cells[0,1]<>'' then
begin
for i := 1 to StringGrid1.RowCount -2 do
begin
DataModule1.productc.Append;
DataModule1.productc.FieldByName('产品编号').AsString:=edit1.Text+'.'+(edit5.Text);
DataModule1.productc.FieldByName('材料编号').AsString:=trim(StringGrid1.Cells[0,i]);
DataModule1.productc.FieldByName('材料名称').AsString:=trim(StringGrid1.Cells[1,i]);
DataModule1.productc.FieldByName('材料价格').AsString:=trim(StringGrid1.Cells[2,i]);
DataModule1.productc.FieldByName('材料数量').AsString:=trim(StringGrid1.Cells[3,i]);
DataModule1.productc.FieldByName('材料单位').AsString:=trim(StringGrid1.Cells[4,i]);
DataModule1.productc.FieldByName('材料用途').AsString:=trim(StringGrid1.Cells[5,i]);
DataModule1.productc.Post;
end;
end;
except
showmessage('添加数据失败!');
exit;
end;
如果下一个表productc提交错误,或未能提交,则将上一个表的提交取消,应当如何回滚。
try
with DataModule1.product do
begin
Append;
FieldByName('产品类号').AsString:=edit1.Text;
FieldByName('产品编号').AsString:=edit1.Text+'.'+(edit5.Text);
FieldByName('产品名称').AsString:=trim(edit2.Text);
FieldByName('产品类别').AsString:=trim(edit1.Text);
FieldByName('成品率').AsString:=trim(edit6.Text);
FieldByName('规格型号').AsString:=trim(edit3.Text);
FieldByName('计量单位').AsString:=trim(edit7.Text);
FieldByName('产品说明').AsString:=trim(edit8.Text);
FieldByName('产品图片').AsString:=pimagepath;
FieldByName('最大单位').AsString:=trim(edit14.Text);
FieldByName('最小单位').AsString:=trim(edit15.Text);
FieldByName('换算关系').AsFloat:=strtofloat(trim(edit16.Text));
FieldByName('是否审核').AsString:='0';
Post;
end;
if stringgrid1.Cells[0,1]<>'' then
begin
for i := 1 to StringGrid1.RowCount -2 do
begin
DataModule1.productc.Append;
DataModule1.productc.FieldByName('产品编号').AsString:=edit1.Text+'.'+(edit5.Text);
DataModule1.productc.FieldByName('材料编号').AsString:=trim(StringGrid1.Cells[0,i]);
DataModule1.productc.FieldByName('材料名称').AsString:=trim(StringGrid1.Cells[1,i]);
DataModule1.productc.FieldByName('材料价格').AsString:=trim(StringGrid1.Cells[2,i]);
DataModule1.productc.FieldByName('材料数量').AsString:=trim(StringGrid1.Cells[3,i]);
DataModule1.productc.FieldByName('材料单位').AsString:=trim(StringGrid1.Cells[4,i]);
DataModule1.productc.FieldByName('材料用途').AsString:=trim(StringGrid1.Cells[5,i]);
DataModule1.productc.Post;
end;
end;
except
showmessage('添加数据失败!');
exit;
end;
如果下一个表productc提交错误,或未能提交,则将上一个表的提交取消,应当如何回滚。