Para volver a una posición dentro de un Dataset puedes utilizar un BookMark.
Ejemplo de uso.
Código Delphi
[-]procedure TfrPVP.spbCambiarClick(Sender: TObject);
var
s1,s2:String;
begin
Try
s1:=DmPrix.IBDtsProveeCODIGO.Value;
s2:=Copy(DmPrix.IBDtsPVPCODIGO.Value,4,7);
DmPrix.IbDtsPVP.Edit;
DmPrix.IBDtsPVPCODIGO.Value:=s1+s2;
EdProvee.Text:=DmPrix.IBDtsProveeNOMBRE.Value;
spbCambiar.Visible:=False;
Donde:=DmPrix.IBDtsPVP.GetBookmark;
Actualizar_Codigo_Proveedor();
ShowMessage('Atención:El código de Proveedor se cambio con éxito.');
Except
ShowMessage('Atención: Se produjo un error al intentar cambiar el Código del Proveedor del producto.');
end;
DmPrix.IBDtsPVP.Open;
DmPrix.IBDtsPVP.GotoBookmark(donde);
end;
Un Saludo.