1

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

1 に答える 1

3

TClientDataset などのインメモリ データセットを使用しているようです。データセットにインデックスを配置するだけで、順序が保持されるため、手動で並べ替える必要はありません。使用したい基準に基づいてインデックスを設定するだけです。

于 2010-07-13T20:11:22.730 に答える