Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Problema con la función rnd Access

Estas en el tema de Problema con la función rnd Access en el foro de Bases de Datos General en Foros del Web. Buen día foro En un pequeño proyecto que estoy ejecutando, estoy utilizando Access como "base de datos" por su portabilidad y porque las consultas que ...
  #1 (permalink)  
Antiguo 01/03/2011, 07:57
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Problema con la función rnd Access

Buen día foro

En un pequeño proyecto que estoy ejecutando, estoy utilizando Access como "base de datos" por su portabilidad y porque las consultas que requiero no son muy complejas.

Sin embargo me he dado cuenta de un serio problema con la función rnd de access.

Tengo esta consulta:
Código SQL:
Ver original
  1. SELECT TOP 8 circuito, nro_tramos
  2. FROM t_nro_tramos_circuito
  3. WHERE nro_tramos>1
  4. ORDER BY rnd(id);

Cuando abro access y ejecuto esta consulta me trae siempre los mismos 8resultados. Cuando la vuelvo a ejecutar, me trae otros 8 resultados "aleatorios". La vuelvo a ejecutar y me trae otros 8 registros "aleatorios".

Cierro access... lo vuelvo a abrir y me trae los primeros 8 registros. Los vuelvo a ejecutar y me trae los mismos 8 (de la segunda ejecución). La ejecuto por tercera vez y me trae los mismos 8 registros (de la tercera ejecución).

Tengo la esperanza que esté haciendo mal uso de la función y pueda solventar mi problema haciendo un ordenamiento verdaderamente aleatorio.

Alguien tiene alguna sugerencia de como puedo obtener una cantidad de registros realmente aleatorios?

Muchas gracias a todos.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #2 (permalink)  
Antiguo 02/03/2011, 10:16
 
Fecha de Ingreso: julio-2006
Ubicación: Madrid
Mensajes: 943
Antigüedad: 18 años, 4 meses
Puntos: 56
Respuesta: Problema con la función rnd Access

Hola,

Pues no creo que lo estés haciendo mal, o en ese caso, somos dos.
A mí me pasaba lo mismo que a tí y no encontré forma de solucionarlo, por lo que llegué a la conclusión de que rnd se comportaba de ese modo y punto.

Me busqué la vida haciendo una tabla con clave principal autonumérica, pero no incremental sino aleatoria.

A través de una consulta de datos anexados, le pasaba todos los valores a esa tabla, ordenaba en ascendente o descendente por el id y cogía los n primeros que me interesaban.

Una vez finalizada, eliminaba todos los registros de la tabla, para volver a repetir los pasos en el caso de necesitar nuevamente n aleatorios.

Los pasos los metí en una macro que corría con un botón.

Así, la macro vaciaba la tabla, generaba la consulta de anexados y ejecutaba una consulta de selección que me pedía cuantos registros aleatorios deseaba recuperar.

Espero que te sirva o te ayude algo.

Saludos.
  #3 (permalink)  
Antiguo 02/03/2011, 10:56
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Problema con la función rnd Access

Efectivamente.

En conclusión access no es realmente aleatorio.
Mi solución ya fue desde .net generando una lista aleatoria y codificando la tabla de access basado en esta lista. El ordenamiento ya lo hacia sin la función rnd por lo que todos los registros si me quedaban aleatorios.

Muchas gracias por tu aporte jchuk.

Te mando un poco de karma.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #4 (permalink)  
Antiguo 03/03/2011, 06:26
 
Fecha de Ingreso: julio-2006
Ubicación: Madrid
Mensajes: 943
Antigüedad: 18 años, 4 meses
Puntos: 56
Respuesta: Problema con la función rnd Access

Gracias,

Me alegro si te sirvió o aportó algo.

Un saludo

Etiquetas: access
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:08.