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;
但是当有一条记录先被别人修改后,我在去修改时。客户端就出现“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;