[RESOLVIDO] Dúvida: Salvar CheckBox no banco

12 respostas
Vander_Carlos

Boa tarde o/

Tenho que fazer uma ficha com algumas perguntas e tenho vários CheckBox para salvar e depois teria que imprimir um relatório com esses dados…

Ex:

Pergunta 1: CheckBox1 CheckBox2 CheckBox3 CheckBox4 CheckBox5
É melhor eu criar um campo do tipo BOOLEAN no BD para cada CheckBox ?

[]'s

12 Respostas

HenriqueBR

Existem várias maneiras de fazer isso, acredito que da forma que você falou seja uma boa opção, caso o usuário possa selecionar mais de uma opção na resposta.

L

Depende … Seriam varios checkbox para cada pergunta?
Seria sempre o mesmo número de checkBox para cada pergunta?
Poderia ser marcado mais de um checkbox para cada pergunta?

Vander_Carlos

Na primeira pergunta tem 9 CheckBox na segunda tem 7, podendo escolher vários CheckBox.

L

Uma idéia…

Porque vc não cria somente um campo no banco chamado resposta…
Então vc concatena todas as marcações da pergunta para uma string e grava no banco

Vc define como o checkbox marcado como S e não marcado como N e relaciona na posição 1 seria a marcação do checkbox 1 e assim por diante

por exemplo de reposta para pergunta 1 ficaria assim SSNNSNSNS
Então vc saberia que teria 9 checkbox sendo que
checkbox1 = Marcado
checkbox2 = Marcado
checkbox3 = Não Marcado
checkbox4 = Não Marcado
checkbox5 = Marcado
checkbox6 = Não Marcado
checkbox7 = Marcado
checkbox8 = Não Marcado
checkbox9 = Marcado

Vander_Carlos

Uma idéia…

Porque vc não cria somente um campo no banco chamado resposta…
Então vc concatena todas as marcações da pergunta para uma string e grava no banco

Vc define como o checkbox marcado como S e não marcado como N e relaciona na posição 1 seria a marcação do checkbox 1 e assim por diante

por exemplo de reposta para pergunta 1 ficaria assim SSNNSNSNS
Então vc saberia que teria 9 checkbox sendo que
checkbox1 = Marcado
checkbox2 = Marcado
checkbox3 = Não Marcado
checkbox4 = Não Marcado
checkbox5 = Marcado
checkbox6 = Não Marcado
checkbox7 = Marcado
checkbox8 = Não Marcado
checkbox9 = Marcado

Eu tinha pensado nisso, mas tem um problema quando eu for gerar o relatório como faria ?

No relatório quero fazer assim:

[ x ]checkbox1 [ ]checkbox2 [ ]checkbox3 [ x ]checkbox4 ...
[]'s

L

Simples…
2 opções…

1-na hora do relatório usa um if … se a posição da string de resposta for S ele escreve X senão deixa em branco

2- Em Vez de usar S ou N…usa X ou ‘espaço’… então não hora de fazer o relatório só colocar a letra que está na posição da string

HenriqueBR

Use um campo para cada resposta marcada. E se você tiver que aumentar a quantidade de respostas? e uma tiver que ficar bem no meio das outras?

Vander_Carlos

Eu vou fazer a 2 opção que o leopoldof falou.

Criar um campo para cada CheckBox e salvar um X ou o espaço em branco.

Depois posto o resultado aqui.

Valeu pela ajuda.

[]'s

A

Sugiro uma abordagem mais normalizada para isso.

Imagino que alguém cadastre Perguntas e Respostas Possíveis para estas, certo?

Crie uma tabela de Perguntas: idPergunta, descrição
Uma tabela de RespostasPossiveis: idResposta, idPergunta (fk), descrição
Uma tabela de RespostasDadas : idPergunta, idResposta, idUsuarioQueRespondeu

Com esta estrutura, fazer o relatório será bem mais simples depois.

E você mantém seu banco normalizado, o que costuma ser bom (até virar um gargalo).

Vander_Carlos

Fiz do jeito que o leopoldof mostrou e deu certo :smiley:

Salvei no banco e gerei o relatório.

Agradeço a todos pela ajuda 8’D

[]'s

guilherme.dio

Não é melhor usar o modo do SSNNSS, porém intercalando com dquote ?

Ex:

“S;S;N;N;S;S”

E então você faria:

String respostas = objRespostas.Select().get(5);
foreach(String resposta : respostas)
{
   //preenche os campos com o IF de Unica Linha: resposta.equals("S") ? "X" : " ";
}
Vander_Carlos

Por enquanto vai ficar essa D:

Depois vou tentar dessa forma como você falou e depois da forma que o AbelBueno disse.

[]'s

Criado 28 de março de 2012
Ultima resposta 30 de mar. de 2012
Respostas 12
Participantes 5