Pregunta

Nuevo en Delphi y la programación de bases de datos en general, pero con curiosidad, ¿si hay una mejor manera de intercambiar registros en un TDataSet?He leído a través de alguna ayuda y no puedo encontrar ningún método obvio.Actualmente tengo un procedimiento implementado para mover registros en el conjunto de datos hasta que golpeen el marcador EOF.Sin embargo, estoy obteniendo algunos errores extraños cuando llego al último registro en mis datos.Todo lo que he implementado, se implementa una rutina de intercambio de estilo de matriz estándar que intenta preservar los datos y no, mientras hace malabares con registros activos.

Código hasta ahora

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

Solución

Parece que está utilizando un conjunto de datos en memoria, como TclientDataset.Si simplemente coloca un índice en el conjunto de datos, mantendrá las cosas ordenadas para usted para que no tenga que reorganizarlas manualmente.Simplemente configure el índice según cualquier criterio que desee tenerlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top