用delphi写了一个需要事务的com+,当中间层和服务器不在同一台机器上,提示:
错误"新事务不能登记到指定的事务处理器"???但是当中间层和服务器在同一台机器上就不会出现该问题
请问各位大侠,这是什么错误呀?
谢谢了!
这个问题捆饶我好几天了,查了n多资料都不没能找到解决的办法!!
错误"新事务不能登记到指定的事务处理器"???但是当中间层和服务器在同一台机器上就不会出现该问题
请问各位大侠,这是什么错误呀?
谢谢了!
这个问题捆饶我好几天了,查了n多资料都不没能找到解决的办法!!
解决方案 »
- 在Edit的onkeydown事件中写一段代码,鼠标指针消失?
- 一开始用Delphi做C/S架构的数据库程序就遇到问题了,请教
- 如何播放AVI,VOB文件
- 救助,关于监控
- invaild floating point operation 什么意思?
- SQL Server 中 使用convert函数将日期型转换为字符型时是: Feb 3 2002 12:00AM ?
- 如何将c/s结构的系统,转换为多层结构
- delete ,select 语句中使用where的问题
- 求各位大牛指点指点学习Delphi xe3的学习方法,不胜感激
- 请大家一定帮帮我,谢谢……我只有77分,关于ListView的问题!!!!!!
- 论文
- 到底学校和社会对软件的看法是否不同?
我把代码贴上来,让大家看看是不是我的代码有问题!谢谢
如果还不行,我也没招了
GOOD LUCK
unit DMUnit;{$WARN SYMBOL_PLATFORM OFF}interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComServ, ComObj, VCLCom, StdVcl, bdemts, DataBkr, DBClient,
MtsRdm, Mtx, TranData_TLB, DB, ADODB;type
TTTranData = class(TMtsDataModule, ITTranData)
AC: TADOConnection;
ADO: TADOQuery;
procedure MtsDataModuleActivate(Sender: TObject);
procedure MtsDataModuleDeactivate(Sender: TObject);
private
{ Private declarations }
protected
class procedure UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); override;
function Test: WideString; safecall;
public
{ Public declarations }
end;var
TTranData: TTTranData;implementationuses Variants;{$R *.DFM}class procedure TTTranData.UpdateRegistry(Register: Boolean; const ClassID, ProgID: string);
begin
if Register then
begin
inherited UpdateRegistry(Register, ClassID, ProgID);
EnableSocketTransport(ClassID);
EnableWebTransport(ClassID);
end else
begin
DisableSocketTransport(ClassID);
DisableWebTransport(ClassID);
inherited UpdateRegistry(Register, ClassID, ProgID);
end;
end;procedure TTTranData.MtsDataModuleActivate(Sender: TObject);
begin
try
AC.ConnectionString := 'Provider=SQLOLEDB.1;Password=PS;Persist Security Info=True;User ID=sa;Initial Catalog=master;Data Source=ServerIP';
AC.Connected := True;
except
ON E: Exception do
raise ERangeError.Create('ACActive'+E.Message);
end;
end;
procedure TTTranData.MtsDataModuleDeactivate(Sender: TObject);
begin
try
AC.Connected := False;
except
ON E: Exception do
raise ERangeError.Create('ACDeactivate'+E.Message);
end;
end;
function TTTranData.Test: WideString;
begin
with ADO do
begin
SQL.Clear;
SQL.Text := 'Select top 1 name FROM dbo.syscolumns';
try
open;
Result := FieldByName('name').AsString;
SetComplete;
except
ON E: Exception do
begin
SetAbort;
raise ERangeError.Create('ADOOpen'+E.Message);
end;
end;
end;
end;initialization
TComponentFactory.Create(ComServer, TTTranData,
Class_TTranData, ciMultiInstance, tmBoth);
end.------------------------------
Client:
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(OPSData.Test);
end;procedure TForm1.FormCreate(Sender: TObject);
begin
try
OPSData := CoTTranData.CreateRemote('中间层IP');
except
ON E: Exception do
raise ERangeError.Create('client'+E.Message);
end;
end;错误提示:
ACActive新事务不能登记到指定的事务处理器中。希望大家能帮我看看,究竟是什么原因,再次谢谢了!
你可以参考《Delphi深度编程及其项目应用开发》里面有例子
我这里买书不方便的,谢谢!
这个帖子跟你有点相似
你去看看,我在里面也回答了