让我说我有一个与TDataSetProvider的ClientDataSet1链接来访问数据库以获取数据,我已经打开ClientDataSet1准备进行编辑并进行了一些更改,因此最后我有了一些增量。在我调用ClientDataSet1.ApplyUpdates之前,将三角洲分配给TPacketDataSet以便于解决。无论如何有没有发现TPacketDataSet的当前记录实际上是指向TClientDataSet中的哪个记录而不调用TDataSet.Locate的,因为我相信TDataSet.Locate可能会降低性能。我想在遍历TPacketDataSet时出于某些编辑目的而定位TClientDataSet记录。由于某些我遇到较早的here的问题,我有一些理由不在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;
谢谢!
最佳答案
如果原始TClientDataset中有索引,则可以使用FindKey。但是我不认为“定位”会是一个很大的问题。