一般来说,对 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/