一般的に 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;