假设我有一个与TDataSetProvider的ClientDataSet1链接来访问数据库,我已经打开ClientDataSet1准备编辑并做了一些更改,所以最后我有一些delta。在调用ClientDataSet1.ApplyUpdates之前,将delta分配给TPacketDataSet以便于解析。反正有没有找到TPacketDataSet的当前记录实际上指向TClientDataSet中的哪条记录而没有调用TDataSet.Locate,因为我相信TDataSet.Locate可能会降低性能。我想在遍历TPacketDataSet时找到TClientDataSet记录以进行某些编辑。我有理由不在TDataSetProvider.OnUpdateData中执行此操作,因为我之前遇到的问题here。
procedure Test;
var P: TPacketDataSet;
begin
P := TPacketDataSet.Create(nil);
try
P.Data := ClientDataSet1.Delta;
P.First;
while not P.Eof do begin
if P.UpdateStatus = usUnmodified then begin
P.InitAltRecBuffers(True);
//How to know the current record in P point to which record in ClientDataSet1
end;
P.Next;
end;
finally
P.Free;
end;
end;
谢谢!
答案 0 :(得分:0)
如果您的源TClientDataset中有索引,则可以使用FindKey。但我不相信Locate会成为一个大问题。