Radio Button e Checkbox no Banco de Dados
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
Curtidas 0
Respostas
Joel Rodrigues
21/05/2012
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.
Assim facilitará para que alguém te ajude.
GOSTEI 0
Sigrids Lima
21/05/2012
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.
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.
GOSTEI 0
Joel Rodrigues
21/05/2012
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?
Se Estuda for bool, você deve usar cln.Estuda = this.ckbEstuda.Checked;
Enfim, qual o tipo das duas propriedades problemáticas?
GOSTEI 0
Sigrids Lima
21/05/2012
Não entendir qual o tipo de propriedade.
Sexo esta como nchar(1)
Estuda (bit)
se nao for como posso descobrir
ate
Sexo esta como nchar(1)
Estuda (bit)
se nao for como posso descobrir
ate
GOSTEI 0
Joel Rodrigues
21/05/2012
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:
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.
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.
GOSTEI 0
Sigrids Lima
21/05/2012
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;
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;
GOSTEI 0
Joel Rodrigues
21/05/2012
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?
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?
GOSTEI 0
Sigrids Lima
21/05/2012
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
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
GOSTEI 0
Joel Rodrigues
21/05/2012
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í.
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í.
GOSTEI 0
Sigrids Lima
21/05/2012
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;
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;
GOSTEI 0
Joel Rodrigues
21/05/2012
Tente o seguinte:
rdMasculino.Checked = dgvNome.CurrentRow.Cells[COLUNA_SEXO].Value.ToString() == ´´M´´;
rdFeminino.Checked = dgvNome.CurrentRow.Cells[COLUNA_SEXO].Value.ToString() == ´´F´´;
rdMasculino.Checked = dgvNome.CurrentRow.Cells[COLUNA_SEXO].Value.ToString() == ´´M´´;
rdFeminino.Checked = dgvNome.CurrentRow.Cells[COLUNA_SEXO].Value.ToString() == ´´F´´;
GOSTEI 0
Sigrids Lima
21/05/2012
Ok du certo, muito obrigado
ate
ate
GOSTEI 0
Joel Rodrigues
21/05/2012
Que bom que funcionou.
Até a próxima.
Até a próxima.
GOSTEI 0