搞不懂的BeforeUpdateRecord的顺序,你们有没有注意到MIDSA更新数据的流程?非常奇怪的现象(0分)

  • 主题发起人 主题发起人 xhyph
  • 开始时间 开始时间
X

xhyph

Unregistered / Unconfirmed
GUEST, unregistred user!
我在服务端的DataSetProvider的BeforeUpdateRecord事件添加下列代码
procedure TBook.m_DataSetProviderBeforeUpdateRecord(Sender: TObject;
SourceDS: TDataSet;
DeltaDS: TClientDataSet;
UpdateKind: TUpdateKind;
var Applied: Boolean);
var
i:Integer;
begin
case UpdateKind of
ukModify :SDIAppForm.m_Memo_1.Lines.Add('ukModify');
ukDelete :SDIAppForm.m_Memo_1.Lines.Add('ukDelete');
ukInsert :SDIAppForm.m_Memo_1.Lines.Add('ukInsert');
end;

for i:=0 to DeltaDS.RecordCount-1do
begin
if( pfInUpdate in DeltaDS.FieldByName('书名').ProviderFlags) then
SDIAppForm.m_Memo_1.Lines.Add(IntToStr(i)+':'+'pfInUpdate');
end;

SDIAppForm.m_ClientDataSet_DeltaDS.Data:=DeltaDS.Data;
SDIAppForm.m_Memo_1.Lines.Add(IntToStr(i)+':'+'Data');
我删除了一条记录,修改了一条记录
在m_Memo_1里
ukDelete
0:pfInUpdate
1:pfInUpdate
2:pfInUpdate
3:Data
ukModify
0:pfInUpdate
1:pfInUpdate
2:pfInUpdate
3:Data
看上面的顺序似乎MIDSA是记录逐条更新的
但是我不懂的是
SDIAppForm.m_ClientDataSet_DeltaDS.Data:=DeltaDS.Data;
既然是逐条更新的,那么m_ClientDataSet_DeltaDS.Data应该被赋予两次
也就是说m_ClientDataSet_DeltaDS.Data应该只保留最后那条我更新的记录
可是事实上它把我所有的更新过的记录都保留着
这怎么解释?


 
可能每次的更新类型不同,但deltads都是相同的。
 
大概是吧
 
后退
顶部