Usuário com melhor resposta
Selecionar um registro de uma tabela por vez ao clicar num botão

Pergunta
-
Estou desenvolvendo um Quiz em Visual C++ e preciso selecionar as perguntas e suas respostas na tabela. No entanto, quando clico no botão pra isso todos os registros são selecionados de uma vez. Veja:
private: System::Void btnResponder_Click(System::Object^ sender, System::EventArgs^ e) {
tbPergunta->Text="";
rbAlt1->Text="";
rbAlt2->Text="";
rbAlt3->Text="";
rbAlt4->Text="";
String^ constring=L"datasource=localhost;port=3306;username=root;password=jr";
MySqlConnection^ conDataBase=gcnew MySqlConnection(constring);
MySqlCommand^ cmdDataBase=gcnew MySqlCommand("select * from quizmania.perguntas;",conDataBase);
MySqlDataReader^ myReader;
try {
conDataBase->Open();
myReader=cmdDataBase->ExecuteReader();
while(myReader->Read()){
tbPergunta->Text+=(myReader->GetString(0));
rbAlt1-> Text+=(myReader->GetString(1));
rbAlt2-> Text+=(myReader->GetString(2));
rbAlt3-> Text+=(myReader->GetString(3));
rbAlt4-> Text+=(myReader->GetString(4));
}
} catch(Exception^ ex) {
MessageBox::Show(ex->Message);
}
}Ao clicar nesse botão quero que as perguntas sejam mostradas uma de cada vez. Com os código acima todas as perguntas e suas alternativas, da tabela, são mostradas de uma vez:
A persistência e determinação são, por si sós, onipotentes.
Respostas
-
Junior,
Veja este tópico, ach oque é o que está ocorrendo para você, agora:
http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/961b833a-56ff-4010-a47f-c83945e72b2b/
Fabio Rosa.
- Sugerido como Resposta Programar é viver quarta-feira, 29 de maio de 2013 17:09
- Marcado como Resposta Felipo Gonçalves quinta-feira, 13 de junho de 2013 19:48
Todas as Respostas
-
Olá Junior,
Pelo que vi, seu comando select está buscando todas as perguntas da base de dados, onde acredito que deveria buscar somente uma. Provavelmente você tem um ID para cada pergunta no banco de dados não é? Então o que podes fazer é criar um loop na chamada do form, passando sempre o código da próxima pergunta e fazer com que este seu comando select busque somente a pergunta da vez. Por exemplo, na primeira chamada do form passaria o código da primeira pergunta que supomos que seja 1. Então você faz o select filtrando por este código e apresenta a pergunta e opções de resposta dela. Ao fechar o form, tanto no responder como no pular, o código vai voltar para o loop e então você incrementa o código da próxima pergunta, por exemplo 2 (1 + 1), então na próxima chamada vai ler a pergunta de ID igual a 2... assim por diante até a última pergunta cadastrada....
Att.
Fabio Rosa.
-
Fábio, eu criei uma variável de controle e modifiquei o SELECT dessa forma:
#pragma endregion
int np=1;...
String^ constring=L"datasource=localhost;port=3306;username=root;password=jr";
MySqlConnection^ conDataBase=gcnew MySqlConnection(constring);
MySqlCommand^ cmdDataBase=gcnew MySqlCommand("select * from quizmania.perguntas WHERE id="+ np +";",conDataBase);
MySqlDataReader^ myReader;
try {
conDataBase->Open();
myReader=cmdDataBase->ExecuteReader();
while(myReader->Read()){
tbPergunta->Text+=(myReader->GetString(0));
rbAlt1-> Text+=(myReader->GetString(1));
rbAlt2-> Text+=(myReader->GetString(2));
rbAlt3-> Text+=(myReader->GetString(3));
rbAlt4-> Text+=(myReader->GetString(4));
}
} catch(Exception^ ex) {
MessageBox::Show(ex->Message);
}
np = np+1;
}No entanto surge o erro: "only static data members can be initialized inside a ref class or value type"
Pode me dizer o que está errado?
A persistência e determinação são, por si sós, onipotentes.
-
Junior,
Veja este tópico, ach oque é o que está ocorrendo para você, agora:
http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/961b833a-56ff-4010-a47f-c83945e72b2b/
Fabio Rosa.
- Sugerido como Resposta Programar é viver quarta-feira, 29 de maio de 2013 17:09
- Marcado como Resposta Felipo Gonçalves quinta-feira, 13 de junho de 2013 19:48