Il modo migliore per scambiare due record in Tdataset Delphi?
Domanda
Nuovo alla programmazione delphi e del database in generale ma sono curioso se c'è un modo migliore per scambiare i record in un tdataset?Ho letto un aiuto e non riesco a trovare metodi ovvi.Attualmente ho una procedura implementata per spostare i record verso il basso il set di dati fino a quando non colpiscono il marcatore EOF.Comunque sto ottenendo alcuni errori dispari quando arrivo all'ultimo record nei miei dati.Tutto ciò che ho è implementato una routine di swap in stile array standard che tenta di conservare i dati e whatnot mentre si giocano a record attivi.
Codice così lontano
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;
. Soluzione
Sembra che tu stia utilizzando un set di dati in memoria, come TclientDataset.Se hai semplicemente inserito un indice sul set di dati, manterrà le cose ordinate per te in modo da non doverlo riorganizzare manualmente.Basta impostare l'indice in base a qualsiasi criterio che desideri averlo usato.