“exception class EOleException message '任务对象版本不受支持或无效' ...”,大家进来看看了,高手请帮忙了。 (30分

  • 主题发起人 主题发起人 sunys
  • 开始时间 开始时间
S

sunys

Unregistered / Unconfirmed
GUEST, unregistred user!
“exception class EOleException message '任务对象版本不受支持或无效' ...”,大家进来看看了,高手请帮忙了。 (30分)<br />有关于COM+的问题。我做了个更新对象,什么修改,增加都可以的。
但是当有一条记录先被别人修改后,我在去修改时。客户端就出现“Project aa.exe raised
exception class EOleException message '任务对象版本不受支持或
无效' ...”,而且返回的参数中的IERRORCOUNT=0。就是说服务器不能返回错误记录个数的参数
通过对更新对象断点调试发现,更新对象中的ERRORCOUNT=1的。而且出错的错误是“RECORD
CHANGED BY OTHER USESR”这个也是对的。然后就是不能返回给客户端。不知道什么原因。
大家帮忙了。
服务器更新对象代码。
procedure TmtsUpdateco.UpdateMainDatas(vDatas: OleVariant;
iMaxErrors: Integer;
out iErrorCount: Integer;
var OwnerData: OleVariant;
out Delta: OleVariant);
var Serverobj: IAppServer;
begin
try
ServerObj:=fmydm.dcomcUpd.GetServer as IAppServer;
Delta:=ServerObj.AS_ApplyUpdates('dspMain',vDatas,iMaxErrors,iErrorCount,OwnerData);
SetComplete;
except
SetAbort;
end;
end;

客户端代码
procedure SendDatasA(cdsMain1:TClientDataSet;vOwnerDatas:OleVariant);
var
uCoor : ImtsUpdateCo;
vDelta : OleVariant;
iErrorCount : Longint;
begin
uCoor := ComtsUpdateCo.CreateRemote(asaServerName);
uCoor.UpdateMainDatas(cdsMain1.Delta, 0, iErrorCount,vOwnerDatas,vDelta);
if iErrorCount>0 then
begin
DealError();
cdsMain1.UndoLastChange(True);
end
else
cdsMain1.MergeChangeLog;
end;
 
利用reconceil
 
reconceil,这个是一个是出错处理,但是我现在的问题是参数不能回传客户端。
而且我这个客户端的CLIENTDATASET没有什么TDATASETPROVIDER。
 
bde or ado ?
 
ado呀,我分别在2台2000的机器上试。很奇怪,一台不出现上述情况,就是能够回传参数
而另外一台就是出现这个错误了,不能传回来参数。
 
1、你是用MSDTC服务(也就是Microsoft的MTS)管理COM+组件的吗?那么你用ADO应该没错,
因为ADO是Microsoft的"自己"的数据访问标准,它们应该不存在兼容问题,不关用ADO
或者BDE的问题。
2、很明显,所提示的错误以及你的跟踪调试,不关两端代码的问题。
3、你应该去检查一下服务器中目的COM+组件的事务属性,也就是在Windows的MTS平台查看
目的COM+组件的事务属性,改变不同的事务属性试试看。
 
多人接受答案了。
 
后退
顶部