Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

pedrovisk

Prova Online - Questões Randômicas

Recommended Posts

Turma,

 

Estou trabalhando no ponto onde faço com que as Questões sejam aleatórias. Estou utilizando o exemplo de um sisteminha que baixei, o BrQuiz (página Quiz.asp). Adaptei ao meu código, conforme abaixo, mas a linha que deveria exibir o registro <%= Trim((rsQ.Fields.Item("Questao").Value)) %> está dando como vázio. Já dei um Response.Write(SQL), conforme abaixo, e exibe o código SQL SELECT * FROM dbo.SGQ_Prova_Questao WHERE IDTreinamento = 11 e nele constam os seguinte registros:

 

IDQue | IDTreinamento | Questao

1 | 11 | você....

2 | 11 | Vai querer...

 

As RESPOSTAS de cada QUESTÃO aparecem normalmente, mas a Questão não.

 

Eu quero saber onde está o problema, pois testei o BrQuiz e funciona perfeitamente, mas na minha adaptação não.

 

<%
Response.Expiresabsolute = Now() - 1
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "no-cache"

Av 	= Request.QueryString("Av")
Insc 	= Request.QueryString("Insc")

Call Abre_Conexao

Session.TimeOut = "1"
SQL = "SELECT * FROM dbo.SGQ_Prova_Questao WHERE IDTreinamento = "&Av
Set rsQ = Server.CreateObject("ADODB.Recordset")
rsQ.CursorType = 3
rsQ.CursorLocation = 3
rsQ.LockType = 3
Response.Write(SQL)
'Response.End()
rsQ.Open SQL, Conx

Dim Arr()
Dim i, RowCount
RowCount = rsQ.RecordCount
Redim Arr(RowCount - 1)
For i = 0 To RowCount - 1
Arr(i) = rsQ("IDQue")
rsQ.movenext
Next

Randomize
IDQuestao = Arr(Int((Ubound(arr) + 1) * rnd))

'rsQ.Close

SQL2 = "SELECT * FROM SGQ_Prova_Resposta WHERE IDQuestao = "&IDQuestao&""
Set rsP = Server.CreateObject("ADODB.Recordset")
Response.Write(SQL2)
'Response.End()
rsP.Open SQL2, Conx

' Verifica se existe a pergunta selecionada aleatoreamente, se não houver a página será recarregada...

If rsP.EOF then
	URL = "Avaliacao_Treinamento.asp?Insc="&Insc&"&Av="&Av
	'Response.Write(URL)
	'Response.End()
	Response.Redirect(URL)
End If
%>

Muito obrigado a quem puder ajudar.

 

Pedro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela dica.

 

Mas agora gerou esta:

 

Tipo de erro:

(0x80020009)

Exceção.

/Qualidade/Treinamento/Avaliacao_Treinamento.asp, line 148

 

Justamente na linha do recordset <%= Trim(rsQ("Questao")) %>

 

Pedro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Augusto,

 

Consegui fazer o Random sem usar o ASP. Procurei no fórum e encontrei uma dica do nosso amigo Salgado e ficou assim:

 

SELECT IDQue, IDTreinamento, Questao FROM dbo.SGQ_Prova_Questao WHERE IDTreinamento = "&Av&" ORDER BY NEWID()

Agora eu gostaria que o usuário visualizasse, apenas uma única vez cada Questão, pois fiz um teste, teclando F5, e visualizo a mesma questão umas duas vezes em seguida ou fazer com que após responder a questão, a mesma voltasse desabilitada ou não fosse selecionada.

 

Obrigado pela ajuda,

 

Pedro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá uma olhada neste link, e faça uma pesquisa no forum k tem bastante tópicos de como nao repetir um dado aleatório...

qualquer coisa posta ai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Xan,

 

Conforme a dica do Salgado funciona muito bem. Agora eu preciso "ocultar" as perguntas que já foram respondidas por aquele aluno e que não devem mais aparecer para ele.

Eu tenho uma tabela onde armazeno o que o aluno selecionou como Resposta, Prova_Resultado. Nessa tabela eu armazeno os ID's da Questão, Resposta e Treinamento. Estou tentando ocultar essas questões fazendo um novo recordset com os dados que tem nela, mas não sei como finalizar.

 

Obrigado pela ajuda,

 

Pedro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.