手动提交Delta数据时遇到的问题 Delta & OleVariant??(300分)

  • 主题发起人 主题发起人 OpuBF
  • 开始时间 开始时间
O

OpuBF

Unregistered / Unconfirmed
GUEST, unregistred user!
想使用通用的过程提交ClientDataSet的Delta数据包,可是遇到一个预想不到的问题,
如果这样写
//直接提交
DCOMConnection.AppServer.Update('EMPLOYEE', cdsEmployee.Delta);
其中'EMPLOYEE'是查询ID,cdsEmployee是本地数据集,提交没有问题,可是如果Delta作为
参数传递后,或者将Delta付给一个临时变量再提交,会发生异常,例如
//作为参数提交,封装函数如下
//function InternalUpdate(QueryID: String;
vDelta: OleVariant): Integer;
InternalUpdate('EMPLOYEE', cdsEmployee.Delta);

//测试首先付给临时变量
var
vDelta: OleVariant;
begin
vDelta := cdsEmployee.Delta;
DCOMConnection.AppServer.Update('EMPLOYEE', vDelta);
end;

上面两种情况都会抛出异常"missing data provider or data packet",请问如何解决?
或者换一个解决方案也可以!
 
仍然不知道确切的原因,不过问题可以使用Early Binding的方式得到解决:
var
vDelta: OleVariant;
begin
vDelta := cdsEmployee.Delta;
//这样就可以了
(DCOMConnection.GetServer as IMyInterface).Update('EMPLOYEE', vDelta);
end;

如果过两天还没有人愿意谈谈实际原因 我能删了这帖吗? ;-)
 
我以前也遇过这种情况,GZ~~~~
可能是 DELPHI 的 BUG吧
 
后退
顶部