请教ado有无事务功能(20分)

  • 主题发起人 主题发起人 seafox
  • 开始时间 开始时间
S

seafox

Unregistered / Unconfirmed
GUEST, unregistred user!
我用 ado 连接access数据库,能不能进行事务控制,可以 rollback 等,有的话能否举个例子
 
当然有了,用起来很方便.
 
adoconnection1.begin
trans;
adoconnection1.commite;
adoconnection1.rollback;
 
to 幸福鸟
你的例子不知如何用到我这里,请看
if not adotable1.Eof then
with adotable1do
begin
try
if MessageDlg('你确认删除这条记录吗?',
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin

delete;
end;

except
//showmessage('数据删除错误');
application.messagebox('数据删除时发生错误!','警告',mb_ok+mb_iconstop);
end;
end;
 
但是,我从来就没有在:ADO中用好过事务。
最好的事务,是放在:存储过程,中。
 
if not adotable1.Eof then
with adotable1do
begin

if MessageDlg('你确认删除这条记录吗?',
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
TRY
COMMIT;
delete;
EXCEPT
ROLLBACK
end;

end;

 
with adoqrydo
begin
try
acnt.begin
trans;
close;
sql.clear;
add('');
execsql;
acnt.commite;

except
acnt.rollback;
end;
end;
 
这样可不可以,我觉的有点问题
with adotable2do
begin
adoconnection1.begin
trans;
try
open;
append;
edit;
fieldbyname('收费日期').AsDatetime :=datetimepicker1.Date ;
fieldbyname('户号').AsString :=maskedit1.Text ;
fieldbyname('姓名').AsString :=edit2.Text ;
fieldbyname('建筑面积').AsString :=edit4.Text ;
fieldbyname('收费标准').AsString :=dblookupcombobox1.Text ;
fieldbyname('年度').AsString :=dblookupcombobox2.Text ;
fieldbyname('应收供热').Asstring :=edit5.Text ;{(strtoint(edit4.Text)*strtoint(dblookupcombobox1.Text)) ;}
fieldbyname('欠款供热').AsString :=trim(maskedit6.Text) ;
fieldbyname('欠款其他').AsString :=trim(maskedit7.Text) ;
fieldbyname('交款单位').AsString :=trim(edit8.Text) ;
//post;
adoconnection1.CommitTrans;
//showmessage('数据已经正确存盘');
application.messagebox('数据已经正确存盘','确认',mb_ok+mb_iconinformation);
except
adoconnection1.RollbackTrans ;
//showmessage('数据添加时发生错误!!!');
application.messagebox('数据添加时发生错误!','警告',mb_ok+mb_iconstop);
end;
 
当然有了
adoconnection1.begin
Trans;
try
......
adoconnection1.CommitTrans;
except
adoconnection1.RollbackTrans;
end;
 
adoconnection1.begin
trans;
try
//你中间所插入的操作代码
Adoconnection1.commitTrans;
except
adoconnection1.rollbacktrans;
end;
 
不知道ACCESS支持不支持事务?
 
我试了一下,access 不支持事务,数据库中无noautocommit选项,控制不了
 
ADO是可以控制事务,Access真的不扶持吗?
我在PB中怎么支持呢?
Access应该可以支持事务。
 
在TADODataSet的BeforePost方法中用ADOConnection.begin
Trans
在TADODataSet的AfterPost方法中用ADOConnection.CommitTrans
在TADODataSet的PostError方法中用ADOConnection.RollbackTrans
 
Access 是不支持事務的.
 
to youngtaoll
你说的对,后来看书跟你说的一样,access支持事物
to all
谢谢大家
 
Access支持事务处理,我用了许多.
说不支持那是不知者...
不过,为方便控制事务,ADODataSet最好工作在BatchUpdate模式.
否则,只有:
在TADODataSet的BeforePost方法中用ADOConnection.begin
Trans
在TADODataSet的AfterPost方法中用ADOConnection.CommitTrans
在TADODataSet的PostError方法中用ADOConnection.RollbackTrans
 
后退
顶部