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.