none
REGISTRAR RESPOSTA AO APERTAR UM BOTÃO NO TECLADO RRS feed

  • Pergunta

  • Pessoal, bom dia.

    Tenho o seguinte código que exibe uma imagem e salva a informação imputada de acordo com ela. É um questionário e após clicar ela mostrar uma outra imagem e assim por diante. Contudo ao executa-lo, ele repete pela a primeira imagem e registra os dados como sendo resposta da imagem anterior. Preciso que seja exibida a primeira imagem sem repetição e que seja salvo a resposta com a imagem correta. Há uma consulta prévia a um banco de dados (onde está armezenado os caminhos da imagens) e onde pego o primeiro e último registro  e realizo um sorteio no qual elas não se repetem. Esta parte está funcionando sem problemas menos a parte de registrar as respostas corretamente. O código só leva em conta valores digitados de 1 a 4 registrando as respostas.

    Segue o código:

    namespace exibe
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();


            }

            MySqlConnection conexao;
            MySqlCommand comando;
            MySqlDataReader reader;
            MySqlDataReader reader2;
            MySqlDataReader leUser;
            int LenLocal;
            String respCorreta;
            DateTime DataRealizacao;
            string registraNome;
            DateTime cronInicial = DateTime.Now;
            DateTime cronFinal;
            int colheudados = 5;
            List<int> ArrayImagemSorteada = new List<int>();
            string LerPrimeiroIdImagem;
            int PrimeiroId;
            int  UltimoId;
            int conta = 0;
            string IdUsuario;
            string Results;
            string RelevanciaImg;
            string NomePasta;
            string CaminhoPasta;
            
            
            

            string caminho = "SERVER=localhost; DATABASE=imagens; UID=root; PASSWORD=;";


            protected override bool ProcessCmdKey(ref Message msg, Keys keyData) //capta o que foi digitado no teclado
            {
               
                
              

                    if (keyData == Keys.Escape)//fecha se apertar esc
                    {
                        this.Close(); return true;
                    }

                    if (keyData == Keys.Enter)//inicia execução do teste
                    {
                        IniciaMensagem.Start();
                         //Pegar os valores e registrar
                        DataRealizacao = DateTime.Now;
                       
                        comando.CommandText = "INSERT INTO infoparticipante (DataExecucao) VALUES (@DATAREA)";
                        comando.Parameters.AddWithValue("DATAREA", DataRealizacao);
                       
                        comando.ExecuteNonQuery();

                        comando.Parameters.Clear();

                        comando.CommandText = "SELECT * FROM infoparticipante ORDER BY IdParticipante DESC LIMIT 1";
                        leUser = comando.ExecuteReader();
                        leUser.Read();
                        IdUsuario = leUser["IdParticipante"].ToString();
                        leUser.Close();

                    }


                    if ((keyData == Keys.D1) || (keyData == Keys.NumPad1)) //se digitar um no teclado normal ou no numerico ele recolhe informação
                    {
                        colheudados = 1;

                    }

                    if ((keyData == Keys.D2) || (keyData == Keys.NumPad2))
                    {
                        colheudados = 2;


                    }

                    if ((keyData == Keys.D3) || (keyData == Keys.NumPad3))
                    {
                        colheudados = 3;


                    }

                    if ((keyData == Keys.D4) || (keyData == Keys.NumPad4))
                    {
                        colheudados = 4;


                    }




                    if (colheudados != 0) //Aqui eu forço a primeira execução da busca para mostrar as imagens.
                    {
                   
                        mostramarcador.Start();
                        
                       
                        comando.Parameters.Clear();
                        comando.CommandText = "SELECT * FROM armazenaimagens WHERE Id = '" + ArrayImagemSorteada[conta] + "'";

                       
                        reader = comando.ExecuteReader();


                        reader.Read();


                         //Carrega a imagem
                        ImgVisualiza.Load(reader["caminho"].ToString());

                        ImgVisualiza.SizeMode = PictureBoxSizeMode.StretchImage;

                        registraNome = reader["Nome"].ToString();

                        respCorreta = reader["Resposta_certa"].ToString();

                        RelevanciaImg = reader["Relevancia"].ToString();


                        if (respCorreta == Convert.ToString(colheudados))
                        {
                            Results = "CORRETO";
                        }

                        else
                        {
                            Results = "ERRADO";
                        }



                      
                        reader.Close();

                        if (colheudados < 5)
                        {





                            cronFinal = DateTime.Now;
                            TimeSpan diferencaTempo = cronFinal.Subtract(cronInicial);




                            string tempoReacao = diferencaTempo.TotalSeconds.ToString("00:00:00");

                          

                            comando.Parameters.Clear();
                            comando.CommandText = "INSERT INTO armazenarespostas (nome, IdVoluntario, tempoResposta, respostaCerta, repostaDada, resultado, relevancia) VALUES (@NOME_IMG_REG, @IDUSS, @TEMPO_RES1, @RESP_CERTA1, @RESP_DADA1, @RESUL, @RELEV)";
                            comando.Parameters.AddWithValue("NOME_IMG_REG", registraNome);
                            comando.Parameters.AddWithValue("IDUSS", IdUsuario);
                            comando.Parameters.AddWithValue("TEMPO_RES1", tempoReacao);
                            comando.Parameters.AddWithValue("RESP_CERTA1", respCorreta);
                            comando.Parameters.AddWithValue("RESP_DADA1", colheudados);
                            comando.Parameters.AddWithValue("RESUL", Results);
                            comando.Parameters.AddWithValue("RELEV", RelevanciaImg);


                            comando.ExecuteNonQuery();

                            lblMarcador.Visible = true;
                            cronInicial = DateTime.Now;

                            conta = conta + 1; 

                         

                        }

    segunda-feira, 28 de outubro de 2013 11:04