database - 在 TDataset Delphi 中交换两条记录的最佳方法?

标签 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;

最佳答案

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

关于database - 在 TDataset Delphi 中交换两条记录的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3240836/

相关文章:

mysql - 将 mysql 表与查询 UNION 或 JOIN 结合起来?

database - 海量连接和并发写入选择什么数据库(网游)

c++ - Delphi/C++ Builder - 在 TDBGrid 中设置事件/选定行颜色

c - 使用空指针交换函数

c++ - unique_ptr 交换不起作用

database - MS Access 链接表问题

java - 缩放器全选错误

delphi - 不间断服务

delphi - 获取当前选定的组合框值并将其用作变量

sql-server - SQL Server如何交换日期和月份