try
fqdm.ADOCOM.BeginTrans;
with liquery do
begin
close;
sql.clear;
sql.add('select * from test1');
sql.add('where id=1');
open;
edit;
fieldbyname('a').asinteger := fieldbyname('a').asinteger - strtoint(nm.Text);
post;
end;//***************************
with tmpquery do
begin
close;
sql.clear;
sql.add('select * from test2');
sql.add('where id=2');
open;
edit;
fieldbyname('b').asinteger:=fieldbyname('b').asinteger+10;
post;
end;
//**************
//如果以上面*号引出来的语句用下面的语句表示,则第一个QUERY,LIQUERY不能保存数据,只有用了上面的语句两个库才能保存。test1,2为两旧不同的视图,修改的都是单一的表数据。
{ with Tmpquery do
begin
close;
sql.clear;
sql.add('update test2');
sql.add('set b=b+10');
sql.add('where id=2');
execsql;
end; } fqdm.adocom.CommitTrans;
except
fqdm.ADOCOM.RollbackTrans;
showmessage('error');
end;
fqdm.ADOCOM.BeginTrans;
with liquery do
begin
close;
sql.clear;
sql.add('select * from test1');
sql.add('where id=1');
open;
edit;
fieldbyname('a').asinteger := fieldbyname('a').asinteger - strtoint(nm.Text);
post;
end;//***************************
with tmpquery do
begin
close;
sql.clear;
sql.add('select * from test2');
sql.add('where id=2');
open;
edit;
fieldbyname('b').asinteger:=fieldbyname('b').asinteger+10;
post;
end;
//**************
//如果以上面*号引出来的语句用下面的语句表示,则第一个QUERY,LIQUERY不能保存数据,只有用了上面的语句两个库才能保存。test1,2为两旧不同的视图,修改的都是单一的表数据。
{ with Tmpquery do
begin
close;
sql.clear;
sql.add('update test2');
sql.add('set b=b+10');
sql.add('where id=2');
execsql;
end; } fqdm.adocom.CommitTrans;
except
fqdm.ADOCOM.RollbackTrans;
showmessage('error');
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货