K
kingspeed
Unregistered / Unconfirmed
GUEST, unregistred user!
//问题:
//事务不能控制,回滚不了,采用了以下几种方法
//win2000/com+, winnt4/mts2.0 都试过了,结果不行
//Oracle8.0.5.2.2不行, 改成Sybase 11.9.2还是不行.
//到底是怎么回事,有没有谁实现过,请指教!!
//分不够可以再加,可以付出我的全部家当.
//add过程,为向指定表中插入一条记录
//中间层控制事务的方法
procedure Tsucc.srvtrans;
var
tst: Isucc;
begin
if objectcontext.IsInTransaction then
//显示是在事务环境中
showmessage('InTransaction')
else
showmessage('Not in transaction');
OleCheck(ObjectContext.CreateInstance(CLASS_succ,
Isucc, tst));
tst.add;
DisableCommit;
end;
procedure Tsucc.srvtrans2;
begin
add;
setabort;
//应该回滚,但实际结果是提交
end;
//或者采用Client事务环境,在客户端编写
procedure TForm1.btnTransClick(Sender: TObject);
var
TransactionContextEx: ITransactionContextEx;
tt: Isucc;
begin
TransactionContextEx := CreateTransactionContextEx;
OleCheck(TransactionContextEx.CreateInstance(CLASS_succ,
Isucc, tt));
tt.add;
TransactionContextEx.Abort;
//应该回滚,但结果仍然是提交的
end;
//事务不能控制,回滚不了,采用了以下几种方法
//win2000/com+, winnt4/mts2.0 都试过了,结果不行
//Oracle8.0.5.2.2不行, 改成Sybase 11.9.2还是不行.
//到底是怎么回事,有没有谁实现过,请指教!!
//分不够可以再加,可以付出我的全部家当.
//add过程,为向指定表中插入一条记录
//中间层控制事务的方法
procedure Tsucc.srvtrans;
var
tst: Isucc;
begin
if objectcontext.IsInTransaction then
//显示是在事务环境中
showmessage('InTransaction')
else
showmessage('Not in transaction');
OleCheck(ObjectContext.CreateInstance(CLASS_succ,
Isucc, tst));
tst.add;
DisableCommit;
end;
procedure Tsucc.srvtrans2;
begin
add;
setabort;
//应该回滚,但实际结果是提交
end;
//或者采用Client事务环境,在客户端编写
procedure TForm1.btnTransClick(Sender: TObject);
var
TransactionContextEx: ITransactionContextEx;
tt: Isucc;
begin
TransactionContextEx := CreateTransactionContextEx;
OleCheck(TransactionContextEx.CreateInstance(CLASS_succ,
Isucc, tt));
tt.add;
TransactionContextEx.Abort;
//应该回滚,但结果仍然是提交的
end;