Pergunta

Novo em Delphi e programação de banco de dados em geral, mas estou curioso para saber se existe uma maneira melhor de trocar registros em um TDataset?Li alguma ajuda e não consigo encontrar nenhum método óbvio.Atualmente tenho um procedimento implementado para mover os registros para baixo no conjunto de dados até atingirem o marcador Eof.No entanto, estou recebendo alguns erros estranhos quando chego ao último registro dos meus dados.Tudo o que tenho é implementado uma rotina de troca de estilo de array padrão tentando preservar dados e outros enfeites enquanto faz malabarismos com registros ativos.

Código até agora

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;
Foi útil?

Solução

Parece que você está usando um conjunto de dados na memória, como TClientDataset.Se você simplesmente colocar um índice no conjunto de dados, ele manterá as coisas ordenadas para que você não precise reorganizá-las manualmente.Basta configurar o índice com base nos critérios que você deseja que ele use.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top