none
Atribuir codigo de questões automaticamente RRS feed

  • Pergunta

  • Pessoal,

    Estou fazendo um formulario de pesquisa onde os alunos irão responder 23 questões, essas questões estão armazenadas em um banco de dados access, usando o codigo abaixo apresento a questão no formulario.

    Gostaria de saber como posso incrementar o codigo para que os codigos das questãoes sejam passadas automaticamente, pois da forma como esta tenho que passar manualmente.

     Private Sub preencherquestao()
    
                Dim dat1 As OleDbDataAdapter
                cn.Close()
                cn.Open()
                Dim myCommLin As OleDbCommand = cn.CreateCommand()
            Dim myCB As String = "SELECT * FROM tblquestoes where id=5"
                myCommLin.CommandText = myCB
    
                dat1 = New OleDbDataAdapter(myCommLin)
                Dim DS1 = New DataSet
                dat1.SelectCommand = myCommLin
                dat1.Fill(DS1, "tblquestoes")
    
                Dim dt2 As DataTable = New DataTable
                dt = DS1.Tables(0)
    
            Dim vquestao As String
                Dim vcod As String
                Dim dr As OleDbDataReader
                Dim resultado As Object = myCommLin.ExecuteScalar
                If Not resultado Is Nothing AndAlso Convert.ToInt32(resultado) > 0 Then
                    dr = myCommLin.ExecuteReader
                    If dr.HasRows Then
                        dr.Read()
                        vcod = dr("ID")
                        vquestao = dr("questoes")
    
                    End If
    
                    codquestoes.Text = dr("ID")
                    questao.Text = dr("questoes")
    
                    dr.Close()
    
                End If
            cn.Close()
        End Sub


    Julierme Felix - Aprendiz

    sexta-feira, 29 de junho de 2012 18:27

Respostas

  • o Problema do contador é simples,como você sempre filtra pelo cont então o código vai ser sempre o mesmo.

    Como te falei acima, você pode armazenar o id da próxima questão em um campo hidden no .aspx e quando salvar a questão você carregar a próxima questão com o id armazenado. 


    Não esqueça de marcar o post como útil caso tenha te ajudado.

    • Marcado como Resposta Julierme Felix segunda-feira, 2 de julho de 2012 11:11
    domingo, 1 de julho de 2012 20:15

Todas as Respostas

  • Olá,   voce tem duas opções!

    Criar todos os seus controles no codebehind

    How to: Add Controls to an ASP.NET Web Page Programmatically

    Dynamically Created Controls in ASP.NET

    Ou criar sua estrutura dinamicamente no .aspx com ajax


    Não esqueça de marcar o post como útil caso tenha te ajudado.

    sexta-feira, 29 de junho de 2012 18:42
  • faz um while depois do sei dr.hasrows faz assim

    If dr.HasRows Then
    
    	While dr.Read()
    	End While
    End If
    


    Junior

    sexta-feira, 29 de junho de 2012 18:44
  • Pessoal

    Fiz o while porem só aparece a ultima questão.

    While dr.Read()
    
                        vcod = dr("ID")
                        vquestao = dr("questoes")
    
                        codquestoes.Text = vcod.ToString 'dr("ID")
                        questao.Text = vquestao.ToString 'dr("questoes")
                    End While


    Julierme Felix - Aprendiz


    sexta-feira, 29 de junho de 2012 19:07
  • Pessoal,

    fiz uma alteração no codigo, agora consigo que apareça a primeira questão, mas ao clicar no botão para avança não passa para a proxima questãoo mostrando novamente a primeira questão

    segue o codigo

     Private Sub preencherquestao()
            Dim dr As OleDbDataReader
            Dim myCommLin As OleDbCommand = cn.CreateCommand()
    
                cn.Close()
                cn.Open()
            Dim cont As Integer = 0
            For cont = 1 To 2
                Dim myCB As String = "SELECT * FROM tblquestoes where id=@id"
                myCommLin.CommandText = myCB
                myCommLin.Parameters.Add("@id", OleDbType.VarChar).Value = cont
    
                dr = myCommLin.ExecuteReader
    
                If dr.HasRows Then
                    dr.Read()
                    Dim vquestao As String
                    Dim vcod As String
    
                    vcod = dr("ID")
                    vquestao = dr("questoes")
                    Label1.Text = ("Nome: " + dr.GetString(1) + ", ")
    
    
                    codquestoes.Text = vcod.ToString 'dr("ID")
                    questao.Text = vquestao.ToString 'dr("questoes")
    
                Else
            Label1.Text = "Não há registros na tabela"
                End If
                dr.Close()
            Next
            
            cn.Close()
            preencherprofes()
        End Sub


    Julierme Felix - Aprendiz

    domingo, 1 de julho de 2012 17:54
  • Em algum lugar você está passando como parametro a questão que você quer visualizar?

    Não esqueça de marcar o post como útil caso tenha te ajudado.

    domingo, 1 de julho de 2012 18:29
  • Pois bem,

    As perguntas vem do banco, fiz uma query para buscar as perguntas pelo id, aí que esta a questão como passar o proximo ID para a query.

    veja essa parte do codigo

    Dim myCB As String = "SELECT * FROM tblquestoes where id=@id"
            myCommLin.CommandText = myCB
            myCommLin.Parameters.Add("@id", OleDbType.VarChar).Value = cont

    fiz um teste usando um contador mas sempre que a pagina é carregada volta a apresentar somente  a primeira questão.

    Obs. exemplo: inicio o formulario chamado questoes, ele inclui a primeira questão e os nomes dos professores para serem respondida, ao clicar no botão salvar a pagina e reexibida porem gostaria que fosse a proxima questão, mas volta a questão anterior.



    Julierme Felix - Aprendiz

    domingo, 1 de julho de 2012 19:15
  • o Problema do contador é simples,como você sempre filtra pelo cont então o código vai ser sempre o mesmo.

    Como te falei acima, você pode armazenar o id da próxima questão em um campo hidden no .aspx e quando salvar a questão você carregar a próxima questão com o id armazenado. 


    Não esqueça de marcar o post como útil caso tenha te ajudado.

    • Marcado como Resposta Julierme Felix segunda-feira, 2 de julho de 2012 11:11
    domingo, 1 de julho de 2012 20:15
  • Resolvido,

    Usei um campo oculto como indicado. Na pagina anterior antribui o primeiro ID da questão depois recuperei com Request.QueryString("ID") e no campo oculto armazenei Request.QueryString("ID")+1

    Obrigado....


    Julierme Felix - Aprendiz

    segunda-feira, 2 de julho de 2012 11:11