是Access/事务高手的请来拿分(100分)

  • 主题发起人 主题发起人 yihui
  • 开始时间 开始时间
Y

yihui

Unregistered / Unconfirmed
GUEST, unregistred user!
我在程序中需要Access数据库中对多个表进行统一提交,
查看了离线数据库,有的说Access不支持事务,
有的说必须通过BDE才能执行事务处理,
还有说必须通过ODBC才能执行事务处理...

请高手结合以上问题指点下面的代码.Thanks.


Var
TmpQry:TQuery;
....
Begin
.....
TmpQry:=TQuery.Create(dm); //dm是一个DataModule
TmpQry.DatabaseName:='dbMain'; //dmMain是DataModule上的DataBase,通过ODBC连接Access

TmpQry.Database.StartTransaction;

try
//第一个表fm执行删除
asql:='Delete From fm where JmNo='+inttostr(OldJmNo);
TmpQry.close;
TmpQry.SQL.clear;
TmpQry.sql.add(asql);
TmpQry.ExecSQL;

//第二个表Jm执行删除
asql:='Delete From Jm where JmNo='+inttostr(OldJmNo);
TmpQry.close;
TmpQry.SQL.clear;
TmpQry.sql.add(asql);
TmpQry.ExecSQL;

TmpQry.Database.commit;

except
TmpQry.database.rollback;
......
end;
....
 
ado+access支持事务的!不用bde,不用odbc。
我总是这样用的。
try
if ADOConnection.InTransaction=false then
ADOConnwage.BeginTrans;
ExecSQL;
...
ExecSQL;
Adoconnection.CommitTrans;
except
Adoconnection.RollbackTrans;
end;
上面的代码有误吗?

 
不用Ado就没有办法了吗?
 
access本身就支持事务的。
不用ado。odbc,bde也支持事务的,只不过用bde联access是通过odbc的.
 
access本身就支持事务的。
使用时用什么特别要注意的地方吗?


 
应该在begintrans前判断是否以经开始了事务,这样可以避免事务镶套。
if ADOConnection.InTransaction=false then
ADOConnwage.BeginTrans;
 
其它的不知道各位大虾有什么指教的。
 
接受答案了.
 
后退
顶部