Ver Mensaje Individual
  #4 (permalink)  
Antiguo 09/07/2003, 02:35
Avatar de AlexNV
AlexNV
 
Fecha de Ingreso: junio-2003
Ubicación: Madrid
Mensajes: 289
Antigüedad: 21 años, 10 meses
Puntos: 1
Bajo mi punto de vista, este problema solo tiene una solución.

Todas las respuestas que he visto sobre este tema son posicionar el puntero en un registro aleatoriamente y mostrarlo, pero eso no te da por ejemplo 10 registros de un conjunto de 100 diferentes, aleatorios y sin orden pre-establecido.

Mi solución pasa por poner un campo más en la tabla, por ejemplo ORD_ID, recorrer toda la tabla y ir asignando a ese campo un valor aleatorio cada vez que quieras recuperar los diez registros.

Código:
totRec = rs.RecordCount
do while not rs.eof
    rs.edit
    rs("ORD_ID") = Int(totRec * Rnd())
    rs.Update
    Randomize()
loop
Una vez que lo has actualizado, abre de nuevo el recordset ordenado por ese nuevo campo

Código:
SELECT TOP 10 * FROM TABLA ORDER BY ORD_ID
Eso te devolverá lo que quieres. Quizás no sea tan rápido como si fuera una sola consulta, pero me temo que es la única manera de llevar a cabo esa tarea.

Si alguien conoce otra forma más eficiente, que lo ponga. Sería de interés para todos.

Espero que te sirva.

Última edición por AlexNV; 09/07/2003 a las 03:08