資料集嵌套﹐手動分離Delta中DataSetField?(100分)

  • 主题发起人 主题发起人 jeff86
  • 开始时间 开始时间
J

jeff86

Unregistered / Unconfirmed
GUEST, unregistred user!
三層﹐用UpdataSQL進行更新數據 ﹐可是是巢狀數據表﹐明細有Join其他資料表﹐于是要在
DataSetProvider.BeforeUpdateRecord分離Delta,得到嵌套的資料集﹐代入SetParams中的
Delta參數中﹐可是如何分離Delta,得到嵌套的資料集呢?多謝賜教﹖
 
很急﹐難到沒人會嗎﹖多謝賜教
 
用一个新的clientdataset.data=delta
然后用此clientdataset得到提交的数据,一般对一条记录的修改在此可看到2条,第一条记录与第二条记录相同,就是没有oldvalue。
 
对头,我以前一个程序更新也要自己分析Delta,很烦的
 
不用手动分离
if SourceDS = 主表 then
begin
//更新主表
end else
if SourceDS = 从表 then
begin
//更新从表
end;
end;
 
to shiningplus
能具體說一下嗎﹖譬如在那個事件寫等等﹖多謝
 
在中间层用Clientdataset 进行拆分,不知行不行。
 
在DatasetProvider的BeforeUpdateRecord事件

procedure TForm1.DataSetProvider1BeforeUpdateRecord(Sender: TObject;
SourceDS: TDataSet;
DeltaDS: TCustomClientDataSet;
UpdateKind: TUpdateKind;
var Applied: Boolean);
begin
if SourceDS = 主表 then
begin
//更新主表
end else
if SourceDS = 从表 then
begin
//更新从表
end;
end;
 
clientdataset_detail.datasetfield:=clientdataset_main.fieldbyname('XXXX') as TdatasetField;
 
to shiningplus:
if SourceDS = 主表 then
begin
//更新主表
end else
if SourceDS = 从表 then
begin
//更新从表
end;
難到更新的過程要自己寫嗎 ---(//更新从表﹐//更新主表)
 
就像原来的用UpdateSQL更新
主表用一个,从表用一个
 
后退
顶部