Question

Nouveau à Delphi et à la programmation de la base de données En général, mais je suis curieux s'il existe un meilleur moyen d'échanger des enregistrements dans un Tdataset?J'ai lu une certaine aide et je ne peux pas trouver des méthodes évidentes.Actuellement, j'ai une procédure mise en œuvre pour déplacer les enregistrements dans le jeu de données jusqu'à ce qu'ils touchent le marqueur EOF.Cependant, je reçois des erreurs étranges lorsque je vais au dernier enregistrement de mes données.Tout ce que j'ai est mis en œuvre une routine de swap de style réseau standard qui tente de préserver les données et de ce que tout en jonglant des enregistrements actifs.

Code jusqu'à présent

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;
Était-ce utile?

La solution

On dirait que vous utilisez un jeu de données en mémoire, tel que TClientDaTaset.Si vous mettez simplement un index sur le jeu de données, il gardera les choses commandées pour vous afin que vous n'ayez pas à les réorganiser manuellement.Il suffit de configurer l'index en fonction des critères que vous souhaitez utiliser.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top