REGISTRAR RESPOSTA AO APERTAR UM BOTÃO NO TECLADO

28/10/2013

0

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;



}
Valdemir Bezerra

Valdemir Bezerra

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar