假设我有一个名为ClientDataSet1的链接到TDataSetProvider的客户端数据集,用于访问数据库中的数据,并且我已经打开了ClientDataSet1以供编辑并进行了一些更改,因此最终我有一些增量。增量被分配给TPacketDataSet以便于解决目的,然后我调用ClientDataSet1.ApplyUpdates。是否有任何方法可以找出TPacketDataSet的当前记录实际上指向TClientDataSet中的哪个记录,而不调用TDataSet.Locate,因为我认为TDataSet.Locate可能会降低性能。我想在遍历TPacketDataSet进行某些编辑目的时定位TClientDataSet记录。由于我之前遇到了一些问题,我有一些原因不在TDataSetProvider.OnUpdateData中执行此操作,详情请参见这里。
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;
谢谢!