Radio Button e Checkbox no Banco de Dados

21/05/2012

0

Tenho uma aplicação em camadas como regra de negócio, tenho umas checkbox e uns radios buttons como posso adicionar os valores no bd.
Sigrids Lima

Sigrids Lima

Responder

Posts

21/05/2012

Joel Rodrigues

Você poderia detalhar melhor a situação? Que tipo de projeto você usa, como está trazendo os dados do BD, etc...
Assim facilitará para que alguém te ajude.
Responder

25/05/2012

Sigrids Lima

E o seguinte tem uma tela de cadastro de nomes, seque o link da aplicação:

http://www.igrejadarestauracao.net/tela.jpg

Nao estou conseguindo gravar os valores dos radio button e checkBox dentro de uma groupbox.
Ja os valores das textbox consigo gravar normalmente.
Segue o codigo para gravar:

public void InserirContato()
{
try
{
dal.ComandoSQl(INSERT INTO TBNOME(nome,endereco,sexo,estuda,obs) VALUES( + Nome + , + Endereco + , + Sexo + , + Estuda + , + Obs + ));
}
catch (Exception ex)
{
throw ex;
}

}

E o codigo do evento do botao gravar

private void btnSalvar_Click(object sender, EventArgs e)
{
if (txtNome.Text != )
{
RegraNegocio cln = new RegraNegocio();
cln.Nome = this.txtNome.Text;
cln.Endereco = this.txtEndereço.Text;
cln.Sexo = this.rdMasculino.Text;
cln.Sexo = this.rdFeminino.Text;
cln.Estuda = this.ckbEstuda.Text;
cln.Obs = this.rtbObs.Text;
cln.InserirContato();
negocio.PreencherDataGrid(dgvNome);
btnSalvar.Enabled = false;
btnAtualizar.Enabled = true;
btnExcluir.Enabled = true;

{
txtNome.Focus();
btnSalvar.Enabled = true;
}

LimparCampo();

MessageBox.Show(Nome cadastrado com sucesso, Sucesso,
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
txtNome.Focus();
btnNovo.Enabled = true;
btnSalvar.Enabled = true;
btnAtualizar.Enabled = true;
btnExcluir.Enabled = true;
btnPrimeiro.Enabled = true;
btnProximo.Enabled = true;
btnUltimo.Enabled = true;
btnAnterior.Enabled = true;

MessageBox.Show(Adicione um nome de Usuário, Atenção, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}

So conseguigo salvar os dados no banco quando retiro essas linhas:

cln.Sexo = this.rdMasculino.Text;
cln.Sexo = this.rdFeminino.Text;
cln.Estuda = this.ckbEstuda.Text;

Mesmo assim os valores do radio button e checkbox nao grava.


Responder

25/05/2012

Joel Rodrigues

Opa, a questão parece simples, você está passando as informações incorretas para as propriedades Sexo e Estuda. Quais são os tipos dessas duas propriedades?
Se Estuda for bool, você deve usar cln.Estuda = this.ckbEstuda.Checked;

Enfim, qual o tipo das duas propriedades problemáticas?
Responder

25/05/2012

Sigrids Lima

Não entendir qual o tipo de propriedade.

Sexo esta como nchar(1)
Estuda (bit)

se nao for como posso descobrir
ate
Responder

25/05/2012

Joel Rodrigues

Certo, então no banco a coluna ESTUDA é do tipo BIT e a SEXO é do tipo NCHAR(1). No código (C#), quais são os tipos? PROVAVELMENTE deve ser Bool e String, respectivamente. Sendo assim, você pode usar o código que falei na postagem anterior para a propriedade Estuda.
Já para a propriedade Sexo, que valore você vai armazenar? F/M, 0/1, H/M...?

Teste o seguinte:
cl.Estuda = ckbEstuda.Checked;
cl.Sexo = (rbMasculino.Checked?´´M´´:´´F´´);


Dessa forma você insere M ou F no sexo e True ou False no Estuda. Deu pra sacar a ideia?

Qualquer dúvida, é só falar.
Responder

26/05/2012

Sigrids Lima

Conseguir gravar o valor do checkbox blz porem coloquei como bool e coloquei a linha: cln.Estuda = this.ckbEstuda.Checked;
Agora ja o radio button nao conseguir, o que pode ser melhor como string ou bool e como seria o codigo?

exemplo:
cln.Sexo = this.rdMasculino.Checked;
cln.Sexo = this.rdFeminino.Checked;
Responder

27/05/2012

Joel Rodrigues

Deu algum erro pro Sexo?
Ao meu ver, como você tem um campo texto, pode gravar M ou F, foi o que fiz no exemplo acima. Qual foi o problema?
Responder

28/05/2012

Sigrids Lima

Conseguir resolver da seguinte maneira:

cln.Sexo = (rdMasculino.Checked?F:M);
cln.Sexo = (rdFeminino.Checked ? F : M);

coloquei como string e

cln.Estuda = this.ckbEstuda.Checked;

como bool. Ate ai blz, conseguir gravar os valore no db, so que coloquei um datagridview com um evento click, quando clico na grid, os valores das textbox aparecem normais, somente o do radio button e da checkbox nao vem selecionado e dando um erro Cannot implicitly convert type string to bool na linha ckbEstuda.Checked = dgvNome.CurrentRow.Cells[5].Value.ToString();
Obs. os radiobutton e checkbox estao dentro de group box.

private void dgvNome_Click(object sender, EventArgs e)
{
habilitarControles();
btnAtualizar.Enabled = true;
btnExcluir.Enabled = true;
btnSalvar.Enabled = false;
txtCodigo.Text = dgvNome.CurrentRow.Cells[0].Value.ToString();
txtNome.Text = dgvNome.CurrentRow.Cells[1].Value.ToString();
txtEndereço.Text = dgvNome.CurrentRow.Cells[2].Value.ToString();
rdMasculino.Text = dgvNome.CurrentRow.Cells[3].Value.ToString();
rdFeminino.Text = dgvNome.CurrentRow.Cells[4].Value.ToString();
ckbEstuda.Checked = dgvNome.CurrentRow.Cells[5].Value.ToString();
rtbObs.Text = dgvNome.CurrentRow.Cells[6].Value.ToString();
}

Aguardo amigo
Responder

30/05/2012

Joel Rodrigues

Antes, expliquemo o erro: quando você usa ´´ckbEstuda.Checked = dgvNome.CurrentRow.Cells[5].Value.ToString();´´, está tentando atribuir um string a uma propriedade bool, ou seja, visível incompatibilidade de dados.

Como os campos Sexo e Estuda estão aparecendo no GridView? True/False ou 0/1 e M/F?

Para o campo Estuda, você deve precisar de algo assim:
ckbEstuda.Checked = Convert.ToBoolean(dgvNome.CurrentRow.Cells[5].Value);

Outra coisa, como é que você está tratando o sexo? Tem dois campos? Reveja isso aí.
Responder

30/05/2012

Sigrids Lima

Conseguir resolver a parte da checbox como vc me falou, ja o radio button nao
Criei no banco a opção sexo como como nchar(1) e a propriedade como string e com valores M e F, criei dois radio buttons com os respectivos sexo M e F.

Olha o codigo para salvar
cln.Sexo = (rdMasculino.Checked?F:M);
cln.Sexo = (rdFeminino.Checked ? F : M);

So nao estou conseguindo voltar os valores quando clico na grid.
Tentei colocar assim mais nao deu certo

rdMasculino.Checked = dgvNome.Rows[0].Selected = true;
rdFeminino.Checked = dgvNome.Rows[0].Selected = true;
Responder

31/05/2012

Joel Rodrigues

Tente o seguinte:

rdMasculino.Checked = dgvNome.CurrentRow.Cells[COLUNA_SEXO].Value.ToString() == ´´M´´;
rdFeminino.Checked = dgvNome.CurrentRow.Cells[COLUNA_SEXO].Value.ToString() == ´´F´´;
Responder

31/05/2012

Sigrids Lima

Ok du certo, muito obrigado
ate
Responder

31/05/2012

Joel Rodrigues

Que bom que funcionou.
Até a próxima.
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar