COM+的事务问题,分数不够再加哦!!!!!高手去哪了????

morphia 2001-08-29 09:55:52
我做了一个COM+的组件,主要用于产生一个标识的下一个ID的,组件中使用事务的代码如下:

function TIdenGen.GetNextID(const str_IdenName: WideString): Integer;
var
TransactionContextEx: ITransactionContextEx;
IdenGetObj: IIdenGet;
IdenSetObj: IIdenSet;
IdenAddObj: IIdenAdd;
CurrentID: Integer;
begin
TransactionContextEx := CreateTransactionContextEx;
try
OleCheck(TransactionContextEx.CreateInstance(CLASS_IdenGet, IID_IIdenGet, IdenGetObj));
CurrentID := IdenGetObj.GetIDByName(str_IdenName);
if CurrentID = -1 then
begin
OleCheck(TransactionContextEx.CreateInstance(CLASS_IdenAdd, IID_IIdenAdd, IdenAddObj));
IdenAddObj.AddIDByName(str_IdenName);
Result := 0;
end else
begin
Inc(CurrentID);
OleCheck(TransactionContextEx.CreateInstance(CLASS_IdenSet, IID_IIdenSet, IdenSetObj));
IdenSetObj.SetIDByName(str_IdenName, CurrentID);
Result := CurrentID;
end;
TransactionContextEx.Commit;
except
TransactionContextEx.Abort;
raise;
end;
end;

但是,我使用下面程序调用:

procedure TForm1.Button2Click(Sender: TObject);
var
obj: Variant;
begin
obj := CreateOleObject('iden.idengen');
Log.Lines.Add(IntToStr(obj.GetNextID('test')));
obj := Unassigned;
end;

第一次可以通过,但是第二次再点击BUTTON2时,出现错误:
“分布式事务已经完成,请将此会话登记到新事务或NULL事务中”

我不知道这是怎么回事,请帮我看看哦,高手们。


我头都大了!!!!!!!!!
...全文
291 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tense 2001-08-31
  • 打赏
  • 举报
回复
关注
morphia 2001-08-31
  • 打赏
  • 举报
回复
up
morphia 2001-08-31
  • 打赏
  • 举报
回复
楼上的,你怎么知道?
Hyphoon 2001-08-31
  • 打赏
  • 举报
回复
To morphia:你是广州人吗?
morphia 2001-08-31
  • 打赏
  • 举报
回复
问题已经解决,结
morphia 2001-08-30
  • 打赏
  • 举报
回复
up
morphia 2001-08-30
  • 打赏
  • 举报
回复
to szgs(szgs):
我那一段创建事务的代码是协调对象中的,在其它的对象中都是使用SetComplete及SetAbort来说明本组件的运行状态。

控制事务好象只有用程序来控制吧,你有什么方法呢?
谢谢
猛禽 2001-08-29
  • 打赏
  • 举报
回复
帮你UP一下。
sxgs 2001-08-29
  • 打赏
  • 举报
回复
建议不要自己创建事务环境,而是通过组件管理器的属性设置,自否则就会出现各种莫名奇妙的问题。
morphia 2001-08-29
  • 打赏
  • 举报
回复
高手高手高手高手高手高手高手!!!!!!!!!!!!!!!1
出来出来出来出来出来出来出来出来出来出来!!!!!!!!!!!!!!!!1

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧