在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。如果您只需在数据集上放置索引,它将保留为您订购的东西,因此您不必手动重新排列它们。刚刚根据要使用的任何标准设置索引。
不隶属于 StackOverflow