在TDataset Delphi中交换两条记录的最佳方法是什么?

时间:2010-07-13 19:42:50

标签: database delphi swap tdataset

一般来说是delphi和数据库编程的新手,但是如果有更好的方法在TDataset中交换记录,我很好奇吗?我已经阅读了一些帮助,无法找到任何明显的方法。目前,我已经实施了一个程序,可以将记录向下移动到数据集中,直到它们到达Eof标记。但是,当我到达数据中的最后一条记录时,我得到了一些奇怪的错误。我所拥有的只是实现了一个标准的数组样式交换例程,试图在处理活动记录时保留数据和诸如此类的东西。

代码到目前为止

procedure TForm2.btnDownClick(Sender: TObject);
var
   sTmp,sTmp2  : string;
   iTmp,iTmp2  : integer;
begin
   tblMatched.DisableControls;
   if ( tblMatched.Eof <> true ) then
   begin
      // Grab data to swap
      tblMatched.GotoBookmark( tblMatched.GetBookmark );
      iTmp := tblMatched.Fields[0].AsInteger;
      sTmp := tblMatched.Fields[1].AsString;
      tblMatched.Next;
      iTmp2 := tblMatched.Fields[0].AsInteger;
      sTmp2 := tblMatched.Fields[1].AsString;

      // Swap data
      tblMatched.Prior;
      tblMatched.Edit;
      tblMatched.Fields[0].Value := iTmp2;
      tblMatched.Fields[1].Value := sTmp2;

      tblMatched.Next;
      tblMatched.Edit;
      tblMatched.Fields[0].AsInteger := iTmp;
      tblMatched.Fields[1].AsString := sTmp;
   end;
   tblMatched.EnableControls;
end;

1 个答案:

答案 0 :(得分:3)

看起来您正在使用内存数据集,例如TClientDataset。如果您只是在数据集上放置一个索引,它将为您保存订单,因此您不必手动重新排列它们。只需根据您希望使用的标准设置索引。