Visual Basic - consulta registros aleatorios

Life is soft - evento anual de software empresarial
 
Vista:

consulta registros aleatorios

Publicado por José Pérez (1 intervención) el 18/04/2010 08:41:13
Hola

estoy tratando de crearme una pequeña aplicación con visual basic referente a preguntas de examen tipo test, de las que siempre tienes 4 respuestas alternativas y sólo una es la correcta. la base de datos con la que trabajo es access 2003.

lo q pretendo es generarme test de diferentes temas con las condiciones de que quiero que me genere preguntas aleatorias no repetidas que me cumplan la condición de que sean de un tema "x", y que el tamaño que me muestre de registros en esa columna se lo indique yo por un parametro con entrada a través de una caja de texto.

el problema creo que lo tengo con la condición de aleatoriedad

la conexión la realizo a través de dataenmviroment

la cosulta que tengo en el mismo es la siguiente

SELECT * FROM preguntas WHERE id_t_p like ? ORDER BY rand(id_p) limit = ?

el número de preguntas que quiero obtener resultado de la consulta se lo quiero introducir con parámetro (es decir, unas veces serán 10 preguntas, otras 24, otras..., el campo id_t_p es el identificador del tema, es de tipo texto y el campo id_p es autonumérico (clave principal).

el error que me da dice algo tal que así

controlador odbc microsoft access. error de sintaxis (falta operador) en la expresión de consulta 'rand(id_p) limit = paramOO1'

no soy muy bueno que digamos con el vb, por lo que estoy tratando de modificar la consulta a otras similares como las siguientes que muestro, pero también me da el mismo tipo de error

SELECT * FROM preguntas WHERE id_t_p = ? ORDER BY rand(id_p) limit = ?

SELECT * FROM preguntas WHERE id_t_p like ? ORDER BY rand() limit = ?

SELECT * FROM preguntas WHERE id_t_p = ? ORDER BY rand() limit = ?

SELECT * FROM preguntas WHERE id_t_p like ? ORDER BY rand(id_p) limit ?

SELECT * FROM preguntas WHERE id_t_p = ? ORDER BY rand(id_p) limit ?

SELECT * FROM preguntas WHERE id_t_p like ? ORDER BY rand() limit ?

SELECT * FROM preguntas WHERE id_t_p = ? ORDER BY rand() limit = ?

.................................

gracias de antemano por la atención y comentarios
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:consulta registros aleatorios

Publicado por Pedro Luis (128 intervenciones) el 19/04/2010 09:06:17
No se pueden seleccionar registros aleatoriamente y el order by es para ordenar los registos por un campo.
Debes seleccionar todos los registros de un tema y a partir de ahí elegir los registros aleatoriamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar