向各位请教一个COM+环境下的主从表更新问题,还望赐教。 ( 积分: 100 )

  • 主题发起人 主题发起人 lifencheng
  • 开始时间 开始时间
L

lifencheng

Unregistered / Unconfirmed
GUEST, unregistred user!
我在COM+组件中利用两个TAdoQuery构造了一个主从关系,并通过一个TDataSetProvider和一个TClientDataSet使用接口方法向客户端提供数据:
如:
procedure GetMDData2(var VData: OleVariant);
begin
try
CDSmaster.Active:=False;
VData:=CDSmaster.Data;
SetComplete;
except
SetAbort;
end;
end;
在客户端使用一个TClientDataSet和一个二级TClientDataSet(使用TDataSetField字段)接收数据,能够正确的运行.
如:
begin
ClientDataSet2.DataSetField:='Adoqry1';//使用了TDataSetField字段
ClientDataSet1.Data:=Fmts.GetData;//由COM+组件返回数据
end;

但是在更新时出现了问题:
用于更新的TDataSetProvider作了如下设置
ResolveToDataSet = True
Options = [poFetchBlobsOnDemand, poCascadeDeletes, poCascadeUpdates, poAllowMultiRecordUpdates, poAllowCommandText, poRetainServerOrder]
更新用的接口方法如:
procedure UpdateDataMD2(VData: OleVariant);
begin
try
CDSmaster.Active:=True;
CDSmaster.Data:=VData;
CDSmaster.ApplyUpdates(-1);
SetComplete;
except
SetAbort;
end;
end;

1.只能更新主表 2。从表总是不能被更新 3.当从表数据有修改等时,主表的更新不被存盘.
请各位帮助看看,在此先谢各位了!!!!
 
我在COM+组件中利用两个TAdoQuery构造了一个主从关系,并通过一个TDataSetProvider和一个TClientDataSet使用接口方法向客户端提供数据:
如:
procedure GetMDData2(var VData: OleVariant);
begin
try
CDSmaster.Active:=False;
VData:=CDSmaster.Data;
SetComplete;
except
SetAbort;
end;
end;
在客户端使用一个TClientDataSet和一个二级TClientDataSet(使用TDataSetField字段)接收数据,能够正确的运行.
如:
begin
ClientDataSet2.DataSetField:='Adoqry1';//使用了TDataSetField字段
ClientDataSet1.Data:=Fmts.GetData;//由COM+组件返回数据
end;

但是在更新时出现了问题:
用于更新的TDataSetProvider作了如下设置
ResolveToDataSet = True
Options = [poFetchBlobsOnDemand, poCascadeDeletes, poCascadeUpdates, poAllowMultiRecordUpdates, poAllowCommandText, poRetainServerOrder]
更新用的接口方法如:
procedure UpdateDataMD2(VData: OleVariant);
begin
try
CDSmaster.Active:=True;
CDSmaster.Data:=VData;
CDSmaster.ApplyUpdates(-1);
SetComplete;
except
SetAbort;
end;
end;

1.只能更新主表 2。从表总是不能被更新 3.当从表数据有修改等时,主表的更新不被存盘.
请各位帮助看看,在此先谢各位了!!!!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
928
SUNSTONE的Delphi笔记
S
I
回复
0
查看
469
import
I
后退
顶部