¿Cómo implemento una función en visual basic para acceso a base de datos access de forma aleatoria?

Estoy haciendo mi proyecto en Visual Basic 6.0 para mi escuela. Tengo el siguiente problema:
Mi programa es muy similar al juego "Who wants to be millonarie?" y por tal razón debe mostrar preguntas aleatorias. Tengo todas las preguntas con sus respuestas en una base de datos pero necesito que los registros no se muestren en forma ordenada, más bien en forma aleatoria.
Me dijeron que se debía usar el RANDOMIZE pero no se como se manipulan los registros de una base de datos en Access. Quiero que cada que se acceda a las preguntas, siempre se muestren en órdenes diferentes, ya que actualmente se presentan en el orden en el cual la creé.

1 Respuesta

Respuesta
1
Yo haría esto:
En primer lugar poner en la base de datos de Access, en la tabla de preguntas un campo autonumérico. Esto proporcionará una identificación numérica a cada uno de los registros que se rellenará automáticamente con números consecutivos cada vez que se añada una pregunta a la tabla.
Este campo autonumérico lo pones como clave de la tabla, de manera que la tabla se vea siempre ordenada por este campo
Supongamos que la tabla de preguntas es "Preguntas" y el campo autonumérico lo llamas "Orden"
En tu programa, pon un control Data con la propiedad DataBaseName apuntando a tu base de datos y la propiedad RecordSource="Preguntas"
Cuando abras el formulario (en el evento LOAD) pon un código para calcular el Valor mayor y menor del dato "Orden" Teniendo en cuenta que la tabla está ordenada por ese dato serán los valores del primero y del último registro, así que haz esto:
Public Mayor as long
Public Menor as long
Data1.Recordset.MoveFirst
Menor=Data1.Recordset.Fields("Orden")
Data1.Recordset.MoveLast
Mayor=Data1.Recordset.Fields("Orden")
Luego, cuando necesites moverte a una pregunta nueva (por ejemplo en el evento click de un botón) haz esto:
Dim Aleatorio as long
Randomize
Aleatorio = Int((Mayor - Menor + 1)* Rnd + Menor)
Esto dará a "Aleatorio" un valor aleatorio comprendido entre Mayor y Menor. Para situar el registro de Preguntas que tenga ese número como registro activo haz esto:
Data1.Recordset.FindFirst "Orden =" & Aleatorio
Cada vez que se ejecute el procedimiento te situará en un registro distinto en orden aleatorio
Suerte :-)

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas