如何查找 TPacketDataSet 中当前的 Delta 记录指向 TClientDataSet 中的哪条记录?

3
假设我有一个名为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;

谢谢!

1个回答

0
如果您在原始TClientDataset中有一个索引,您可以使用FindKey。但我不认为Locate会成为一个大问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接