Hay varias formas. Programaticamente usando metodos como
Prior o Next dentro de un bucle y verificando las condiciones para ver si llegaste al registro que te interesa
Tambien tenes los metodos
Locate y Lookup en los que uno especifica la condicion que quiere que los campos cumplan y el DataSet se encarga de realizar la busqueda sobre si mismo, y posicionarse en el primer registro que satisface la condicion
Otra forma es usando los controles visuales, de este modo el DataSet se sincroniza automaticamente con el componente (ej. DBGrid).
Como vos estabas cerrando y abriendo el DataSet el registro actual cuando hacias el Edit es el primero y no el que el usuario habia seleccionado
Aca hay documentacion sobre
como modificar datos de un DataSet