我的MTS事务还没人回答,可能是没有讲清楚,再加300分,恳请回答!!!(100分)

  • 主题发起人 主题发起人 kingspeed
  • 开始时间 开始时间
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;

 
不好意思,分数填错了(填成100了),一定补上!
 
Please Wait for some days.
 
如果使用ClientDataSet的话,有命令可以控制,
其他的话,只好通过Com/DCom对象自己处理了。
 
to CJF:
>>如果使用ClientDataSet的话,有命令可以控制,
>>其他的话,只好通过Com/DCom对象自己处理了。
How todo
it?

to Chenlili:
>>Please Wait for some days.
Please as soon as possible!
Thanks!!
 
不太清楚你的程序,MTS的事务是由MTS自己控制的
由事务属性控制(Requred,Requred New,Supported...)
EnableCommit,DisableCommit 用于控制事务何时提交
Client端不能控制任何事务,所以不起作用
有没有更详细的Code?
 
MTS还用控制事物吗?
那还要MS Transaction Server干吗?
我也不太明白
哪位大虾介绍一下
 
请把完整的代码(组件和客户端)寄过来,我也在做MTS,softquery@sina.com
 
安装补丁包试试!d4 pack3.
 
如果你使用了BDE就会出现这样的结果,改用ADO丢掉BDE吧。
我从前也向你一样被困了足足一个月,还得许多代码都要从新改写。
ADO + SQL Server 最好!
 
灌水!和吴剑明的问题是否一致?
 
客户端这样写呢:
procedure TForm1.btnTransClick(Sender: TObject);
var
TransactionContextEx: ITransactionContextEx;
tt: Isucc;
begin
TransactionContextEx := CreateTransactionContextEx;
try
OleCheck(TransactionContextEx.CreateInstance(CLASS_succ,
Isucc, tt));
tt.add;
TransactionContextEx.Commit;
except
TransactionContextEx.Abort;
//应该回滚,但结果仍然是提交的
end;
end;
 
并不是所有的数据库都能由MTS来控制事务的。
我的印象中好像要在MTS中用ORACLE的话,需要安装ORACLE的MTS
支持包。
 
是有这个问题,我也发现了。
是不是Delphi的BUG?
 
后退
顶部