Hola
Copernico, Estoy de acuerdo con los compañeros que ya han hecho sus aportes que el planteamiento de tu problema es algo desquiciado; pero bueno, para seguirte la corriente, y suponiendo que entendí el problema, propongo el siguiente fragmento de código como ejemplo de una posible solución;
Código Delphi
[-]
begin
ADOQuery1.Close;
AdoQuery1.CursorLocation := clUseClient;
AdoQuery1.CursorType := ctKeyset;
ADOQuery1.SQL.Text := 'Select * from Categorias';
ADOQuery1.Open;
ADOQuery1.Last;
AdoQuery1.RecNo := 2;
Edit1.Text := ADOQuery1.FieldByName('Nombre').AsString;
end;
Nota: Una sentencia SQL
select sin un
order by, en la mayoría de los motores de bases de datos, puede regresar información en un orden totalmente aleatorio y no coincidir con el orden en que suponemos esta grabada la información en la tabla, sobre todo cuando el motor de bases de datos está haciendo uso de multithreading y/o paralelismo y sobre todo si se está haciendo reuso de registros borrados.