Selección aleatoria de registros
-
JosechuPuerta
- Mensajes: 7
- Registrado: Lun Ene 13, 2020 6:24 pm
Selección aleatoria de registros
Hola compañeros, en primer lugar presentarme: me llamo Josechu y soy principiante en OpenOffice Base (aunque tenía cierta experiencia en Acces, versiones antiguas) y agradezco de antemano la ayuda que me podáis brindar para ir sacándole partido al soft.
En fin, a lo que me trae aquí. He buscado soluciones por todas partes pero no encuentro nada. Puede que ni siquiera se pueda hacer con esta herramienta.
La cuestión es que tengo una base de datos en la que voy registrando preguntas y respuestas tipo test de las pruebas que le pongo a unos alumnos que tengo en una academia. La idea, ahora, es conseguir hacer una selección aleatoria de X preguntas del tema Y (o bien de todos los temas) y de esa forma tener los simulacros de examen de forma automática.
Se trataría de tener un diálogo en el que el sistema pregunte por el tema (hay una tabla con los temas asociada a la de preguntas) y que solicite también el número de preguntas a seleccionar (insisto, de forma aleatoria) y lo presente en un formato predeterminado.
¿Esto es posible hacerlo con Base?
Gracias, de nuevo por vuestra atención y vuestro tiempo.
Un saludo.
Josechu Puerta
En fin, a lo que me trae aquí. He buscado soluciones por todas partes pero no encuentro nada. Puede que ni siquiera se pueda hacer con esta herramienta.
La cuestión es que tengo una base de datos en la que voy registrando preguntas y respuestas tipo test de las pruebas que le pongo a unos alumnos que tengo en una academia. La idea, ahora, es conseguir hacer una selección aleatoria de X preguntas del tema Y (o bien de todos los temas) y de esa forma tener los simulacros de examen de forma automática.
Se trataría de tener un diálogo en el que el sistema pregunte por el tema (hay una tabla con los temas asociada a la de preguntas) y que solicite también el número de preguntas a seleccionar (insisto, de forma aleatoria) y lo presente en un formato predeterminado.
¿Esto es posible hacerlo con Base?
Gracias, de nuevo por vuestra atención y vuestro tiempo.
Un saludo.
Josechu Puerta
OpenOffice 4.1.6/LibreOffice 6.3.4.2 en MacOs 10.14.6
Re: Selección aleatoria de registros
Hola
Sí, es posible.
Saludos
Sí, es posible.
Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
-
JosechuPuerta
- Mensajes: 7
- Registrado: Lun Ene 13, 2020 6:24 pm
Re: Selección aleatoria de registros
Gracias RMG por tu atención.
Yo he conseguido (con los manuales no es difícil) realizar una consulta con parámetros (es decir, me pide que le indique de qué tema tiene que seleccionar las preguntas), pero de ahí no he pasado.
¿Podrías orientarme que pasos serían los siguientes?
He de decir que, aunque hable de una academia, es una labor totalmente desinteresada. Preparamos a chavales para que se cualifiquen profesionalmente. Por eso el interés en hacer la base de datos de preguntas y que estas queden siempre a disposición de los orientadores y preparadores.
Un saludo.
JosechuPuerta
Yo he conseguido (con los manuales no es difícil) realizar una consulta con parámetros (es decir, me pide que le indique de qué tema tiene que seleccionar las preguntas), pero de ahí no he pasado.
¿Podrías orientarme que pasos serían los siguientes?
He de decir que, aunque hable de una academia, es una labor totalmente desinteresada. Preparamos a chavales para que se cualifiquen profesionalmente. Por eso el interés en hacer la base de datos de preguntas y que estas queden siempre a disposición de los orientadores y preparadores.
Un saludo.
JosechuPuerta
OpenOffice 4.1.6/LibreOffice 6.3.4.2 en MacOs 10.14.6
Re: Selección aleatoria de registros
Hola,
En este enlace tienes las funciones que se pueden aplicar en las consultas en Base, en las numéricas tienes la función RAND() que devuelve un número aleatorio, particularmente nunca la he usado en Base, pero si no es aplicable a lo que quieres hacer, puedes adjuntar un pequeño ejemplo explicando lo que que quieres conseguir, para ver como te podemos ayudar.
https://wiki.open-office.es/Funciones_i ... ffice_Base
Saludos
En este enlace tienes las funciones que se pueden aplicar en las consultas en Base, en las numéricas tienes la función RAND() que devuelve un número aleatorio, particularmente nunca la he usado en Base, pero si no es aplicable a lo que quieres hacer, puedes adjuntar un pequeño ejemplo explicando lo que que quieres conseguir, para ver como te podemos ayudar.
https://wiki.open-office.es/Funciones_i ... ffice_Base
Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Re: Selección aleatoria de registros
Hola,
Puesto que nunca he usado la función aleatoria RAND(), he querido probar para ver de su utilidad. Te adjunto una posible solución a lo que entiendo que quieres hacer.
A traves de un formulario y un botón, cargas una consulta con datos aleatorios del tema seleccionado, así como la cantidad de registros que le pides. Espero que te sirva.
Saludos
Puesto que nunca he usado la función aleatoria RAND(), he querido probar para ver de su utilidad. Te adjunto una posible solución a lo que entiendo que quieres hacer.
A traves de un formulario y un botón, cargas una consulta con datos aleatorios del tema seleccionado, así como la cantidad de registros que le pides. Espero que te sirva.
Saludos
- Adjuntos
-
- SeleccionAleatoria.zip
- (11.8 KiB) Descargado 252 veces
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
-
JosechuPuerta
- Mensajes: 7
- Registrado: Lun Ene 13, 2020 6:24 pm
Re: Selección aleatoria de registros
Hola de nuevo RMG.
Ya he probado lo que me has mandado y, aunque, en principio, no resuelve directamente mi necesidad, si que me ha servido como base para una solución, al menos provisional, mientras que voy averiguando como hacerlo más definitivo y/o elegante.
Adjunto te envío mi base de datos (no todos los registros, claro) y lo que yo estaba trabajando, además de la implementación de tu solución. Como puedes ver, hay dos consultas una (Consulta_preguntas*Tema) es la primera que yo hice; como observarás al introducir el criterio en la columna IDTema de la consulta, al ejecutar, pregunta de que tema queremos que se seleccionen las preguntas. Hasta ahí correcto.
Mi intención era que, además, preguntase cuantas preguntas queremos que seleccione (de ese tema) y que, al contestar y ejecutar, seleccionase de forma aleatoria del total de preguntas de ese tema, tantas como le hayamos especificado.
Al observar el funcionamiento de la consulta que me enviaste en tu ejemplo, me di cuenta que la columna RAND() lo único que hacía era ordenar, aleatoriamente, las preguntas, pero no seleccionaba un número aleatorio de ellas. Por otra parte, observo que en dicha columna aparece un valor numérico (aleatorio también) que cambia cada vez que se ejecuta la consulta; aprovechando esto, estableciendo un criterio en la misma columna RAND() con un valor cualquiera, observarás (en la otra consulta que he hecho) que combinado con la primera consulta que yo tenía (criterio en IDTema) ya tengo algo aproximado a lo que busco. Al menos para salir del paso por ahora me vale.
Seguiré trabajando en ello porque me gustaría poder especificar el número total de preguntas seleccionadas, por un lado, y añadirle al final el que si no se especifica tema, la selección la haga de todos los temas (creo que esto no es difícil, pero aún no me he puesto con ello).
En fin, agradecido de nuevo y te envío mi ejemple para que observes lo que te comento.
Un abrazo.
Josechu Puerta
Ya he probado lo que me has mandado y, aunque, en principio, no resuelve directamente mi necesidad, si que me ha servido como base para una solución, al menos provisional, mientras que voy averiguando como hacerlo más definitivo y/o elegante.
Adjunto te envío mi base de datos (no todos los registros, claro) y lo que yo estaba trabajando, además de la implementación de tu solución. Como puedes ver, hay dos consultas una (Consulta_preguntas*Tema) es la primera que yo hice; como observarás al introducir el criterio en la columna IDTema de la consulta, al ejecutar, pregunta de que tema queremos que se seleccionen las preguntas. Hasta ahí correcto.
Mi intención era que, además, preguntase cuantas preguntas queremos que seleccione (de ese tema) y que, al contestar y ejecutar, seleccionase de forma aleatoria del total de preguntas de ese tema, tantas como le hayamos especificado.
Al observar el funcionamiento de la consulta que me enviaste en tu ejemplo, me di cuenta que la columna RAND() lo único que hacía era ordenar, aleatoriamente, las preguntas, pero no seleccionaba un número aleatorio de ellas. Por otra parte, observo que en dicha columna aparece un valor numérico (aleatorio también) que cambia cada vez que se ejecuta la consulta; aprovechando esto, estableciendo un criterio en la misma columna RAND() con un valor cualquiera, observarás (en la otra consulta que he hecho) que combinado con la primera consulta que yo tenía (criterio en IDTema) ya tengo algo aproximado a lo que busco. Al menos para salir del paso por ahora me vale.
Seguiré trabajando en ello porque me gustaría poder especificar el número total de preguntas seleccionadas, por un lado, y añadirle al final el que si no se especifica tema, la selección la haga de todos los temas (creo que esto no es difícil, pero aún no me he puesto con ello).
En fin, agradecido de nuevo y te envío mi ejemple para que observes lo que te comento.
Un abrazo.
Josechu Puerta
- Adjuntos
-
- Base Preguntas.odb.zip
- (40.77 KiB) Descargado 233 veces
OpenOffice 4.1.6/LibreOffice 6.3.4.2 en MacOs 10.14.6
-
JosechuPuerta
- Mensajes: 7
- Registrado: Lun Ene 13, 2020 6:24 pm
Re: Selección aleatoria de registros
Por cierto, el sistema se ha comido otro mensaje que envié antes, cuando vi tu respuesta RMG y me bajé tu ejemplo. Supongo que habré sido yo mismo sin darme cuenta quien lo haya hecho desaparecer, pero no se como.
En fin, tan solo era para agradecer tu respuesta y tu ejemplo que, como ya te comento me he puesto con él enseguida.
Bueno, lo dicho, gracias.
Josechu Puerta.
En fin, tan solo era para agradecer tu respuesta y tu ejemplo que, como ya te comento me he puesto con él enseguida.
Bueno, lo dicho, gracias.
Josechu Puerta.
OpenOffice 4.1.6/LibreOffice 6.3.4.2 en MacOs 10.14.6
Re: Selección aleatoria de registros
Hola,
Bajo mi criterio a lo que interpreto como mejor solución, he modificado un poco tu BD.
En tabla preguntas he creado 2 campos nuevos uno para la cantidad de preguntas (NumPreguntas) y otro para las respuestas (Respuestas), tu tienes como dato la respuesta correcta (campo Correcta), pero no la respuesta que se obtiene para comparar con la correcta. Además de estos campo esta el campo calculado con la función RAND, necesario para cambiar las preguntas al hacer un ordenamiento.
Al abrir el formulario PREGUNTAS este no contiene datos hasta que no se lo indicas, si no seleccionas nada o seleccionas un registro vacio que he puesto en Temas la cantidad de preguntas aleatorias sera de todos los temas, si seleccionas un tema todos los registros serán de ese tema seleccionado, hasta que con el botón "Seleccionar cantidad", le indiques la cantidad.
Puedes navegar entre las preguntas con el control tabla para poder responderlas, y a través del botón "Ver respuestas" puedes ver si son correctas, por un nuevo formulario creado RESPUESTAS.
Espero que esta propuesta te sirva.
Saludos
Bajo mi criterio a lo que interpreto como mejor solución, he modificado un poco tu BD.
En tabla preguntas he creado 2 campos nuevos uno para la cantidad de preguntas (NumPreguntas) y otro para las respuestas (Respuestas), tu tienes como dato la respuesta correcta (campo Correcta), pero no la respuesta que se obtiene para comparar con la correcta. Además de estos campo esta el campo calculado con la función RAND, necesario para cambiar las preguntas al hacer un ordenamiento.
Al abrir el formulario PREGUNTAS este no contiene datos hasta que no se lo indicas, si no seleccionas nada o seleccionas un registro vacio que he puesto en Temas la cantidad de preguntas aleatorias sera de todos los temas, si seleccionas un tema todos los registros serán de ese tema seleccionado, hasta que con el botón "Seleccionar cantidad", le indiques la cantidad.
Puedes navegar entre las preguntas con el control tabla para poder responderlas, y a través del botón "Ver respuestas" puedes ver si son correctas, por un nuevo formulario creado RESPUESTAS.
Espero que esta propuesta te sirva.
Saludos
- Adjuntos
-
- Base Preguntas_RMG.zip
- (47.73 KiB) Descargado 242 veces
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
-
JosechuPuerta
- Mensajes: 7
- Registrado: Lun Ene 13, 2020 6:24 pm
Re: Selección aleatoria de registros
Muchas gracias RMG. Voy a ver todo lo que comentas, así leído en tu mensaje, sin ver las tablas y formularios, casi me pierdo.
En fin, me bajo tu trabajo y lo estudio.
Muchas gracias, un abrazo.
Josechu Puerta
En fin, me bajo tu trabajo y lo estudio.
Muchas gracias, un abrazo.
Josechu Puerta
OpenOffice 4.1.6/LibreOffice 6.3.4.2 en MacOs 10.14.6
-
JosechuPuerta
- Mensajes: 7
- Registrado: Lun Ene 13, 2020 6:24 pm
Re: Selección aleatoria de registros
Estimado amigo RMG, al intentar hacer funcionar la BD que me has enviado, me sale un error de Basic. Creo que es la línea 105. De todas formas te envío una captura de pantalla para que veas exactamente lo que te digo.
Un saludo.
Josechu Puerta.
Un saludo.
Josechu Puerta.
- Adjuntos
-
- Captura de pantalla 2020-01-22 a las 12.25.31.zip
- (111.99 KiB) Descargado 228 veces
OpenOffice 4.1.6/LibreOffice 6.3.4.2 en MacOs 10.14.6
Re: Selección aleatoria de registros
Hola,
Efectivamente, el error se produce cuando seleccionas el registro sin datos para recoger todas las preguntas. Cambia las últimas lineas de la función por esto.
Saludos
Efectivamente, el error se produce cuando seleccionas el registro sin datos para recoger todas las preguntas. Cambia las últimas lineas de la función por esto.
Código: Seleccionar todo
If oRes.Next Then
iTema = oRes.GetInt(1)
TEMA = iTema
End IfOpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Re: Selección aleatoria de registros
Hola,
Revisando esto he podido hacer uso de la función LIMIT que limita la cantidad de registros que devuelve, así se evita el campo de apoyo NumPreguntas. Por si te sirve.
Saludos
Revisando esto he podido hacer uso de la función LIMIT que limita la cantidad de registros que devuelve, así se evita el campo de apoyo NumPreguntas. Por si te sirve.
Código: Seleccionar todo
Sub CargaPreguntas(Evento)
Dim oConsulta As Object
Dim sSQL As String
Dim iTema As Integer
Dim iPreguntas As Integer
iTema = InputBox("¿Que tema?")
iPreguntas = InputBox("¿Cuantas preguntas?")
If iTema = 0 Or IsNull(iTema) Then 'si se cancela o se pone a cero salen todos los temas
sSQL = "SELECT Preguntas.*, RAND( ) AS Aleatorio FROM Preguntas ORDER BY Aleatorio ASC LIMIT "& iPreguntas
Else
sSQL = "SELECT Preguntas.*, RAND( ) AS Aleatorio FROM Preguntas WHERE ""ID Tema"" = "& iTema &" ORDER BY Aleatorio ASC LIMIT "& iPreguntas
End If
oConsulta = ThisDatabaseDocument.DataSource.QueryDefinitions.getByName ("NombreConsulta")'esta consulta debe estar creada
oConsulta.Command = sSQL
End SubOpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)