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;
.
È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top