TDataset Delphiで2つのレコードを交換するための最良の方法?
質問
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;
. 解決
TcrientDataSetなどのメモリ内データセットを使用しているようです。データセットにインデックスを入力するだけでは、手動でそれらを並べ替える必要はないので、それはあなたのために注文されたことを保つでしょう。使用したい条件に基づいてインデックスを設定するだけです。
所属していません StackOverflow