900分(一),请大家来分析下ClientDataSet的更新过程,弄明白更新原理,使程序做得更好,越细越好。---ApplyUpdaes!(300分)

  • 主题发起人 主题发起人 天地弦
  • 开始时间 开始时间

天地弦

Unregistered / Unconfirmed
GUEST, unregistred user!
900分,大家来分析下TCustomClientDataSet.ApplyUpdates(MaxErrors: Integer): Integer;越细越好
请大家来分析下ClientDataSet的更新过程,弄明白更新原理,使程序做得更好,越细越好!
做三层有一段时间了,虽然我没有用到ClientDataSet的自带的更新方法。但是Cds的更新方法是有值得借鉴的地方,拿出900出来分给高手。请各位高手帮帮忙,希望能把各行代码都弄明白他的意思!
function TCustomClientDataSet.ApplyUpdates(MaxErrors: Integer): Integer;
var
RootDataset: TCustomClientDataset;
begin

01 CheckBrowseMode;
02 RootDataset := Self;
03 while RootDataset.FParentDataSet <> nildo
04 RootDataset := RootDataset.FParentDataset;
05 with RootDatasetdo
06 if ChangeCount = 0 then
07 Result := 0 else
08 Reconcile(DoApplyUpdates(Delta, MaxErrors, Result));
end;

这个函数好讲送分。:)
 
01、檢查瀏覽模式:編輯、插入,當這模式是時就更新緩沖數據
02、取本地數據源
03、數據源是否為空
04、取數據集
05、這個就不用說with RootDatasetdo
06、判斷數據源是否有更新緩沖
07、沒更新緩沖將返回0
08、調用中間服務層更新數據到數據庫裡,然後返回更新數量。
 
三层联盟
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1543819
 
谢谢bbscom
to bbscom
02 RootDataset := Self;
03 while RootDataset.FParentDataSet <> nildo
04 RootDataset := RootDataset.FParentDataset;
RootDataset里面存的是什么东西
RootDataSet.FParentDataSet是什么东西。
 
多人接受答案了。
 
后退
顶部