Ver Mensaje Individual
  #10  
Antiguo 15-06-2018
orodriguezca orodriguezca is offline
Miembro
 
Registrado: ene 2009
Posts: 221
Reputación: 16
orodriguezca Va por buen camino
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; // para que el cursor, de los datos,
                                           // esté lado del cliente

  AdoQuery1.CursorType := ctKeyset; // hace un snapshot de los datos, de esta
                                    // manera los datos se puede recorrer en
                                    // cualquier dirección, es decir, podemos
                                    // avanzar o retroceder.

  ADOQuery1.SQL.Text := 'Select * from Categorias';
  ADOQuery1.Open;
  ADOQuery1.Last; // Forzamos a cargar todos los registros en memoria porque el
                  // cursor está del lado del cliente.  Casi siempre funciona!.
                  // Es la forma confiable de saber cuantos registros
                  // devolvió la consulta SQL usando el método AdoQuery1.RecordCount.


  AdoQuery1.RecNo := 2; // Nos posicionamos en la segunda fila recuperada,
                        // la segunda categoria, suponiendo que exista!.

  // Obtenemos el nombre de la categoría
  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.
Responder Con Cita