none
Lendo dados tipo BIT do sql para checkbox RRS feed

  • Pergunta

  • Bom dia,

    estou com uma duvida , fiz um form de cadastro e um form de pesquisa, logo quando clico no botão pesquisar retornar o form de cadastros todos os campos buscados no form pesquisa pelo metodo dgview.currentrow.cells[]...

    porém minha tabela do sql algumas colunas são do tipo "BIT" 1,0 (true,false) que é preenchida no momento do cadastro se o checkbox.checked=true;

    quando peço para ler esse valor do sql para o form ele da um erro. "Additional information: Não é possível converter um objeto do tipo 'System.Byte[]' no tipo 'System.IConvertible'."

     o codigo que estou usando para ler a coluna bit é.

    private void test_Click(object sender, EventArgs e)
            {
    
                bool tepp = Convert.ToBoolean(dgview.CurrentRow.Cells[3].Value);
                if (tepp == true)
                {
                    checkBox1.Checked = true;
                }
            } 

    os parametros que usei para inserir o checkbox na tabela é 

    string cb_adm = checkb_adm.Checked ? "1" : "0";

    comm.Parameters.AddWithValue("@adm", cb_adm);

    gostaria de saber se tem alguma forma de eu ler esses valores para preencher novamente os checkbox 

    segunda-feira, 19 de dezembro de 2016 13:19

Respostas

Todas as Respostas

  • Olá,

    Sua coluna no banco de dados é BIT mesmo?

    Tenta alterar seu código para isso:

            private void test_Click(object sender, EventArgs e)
            {
                checkBox1.Checked = dgview.CurrentRow.Cells[3].Value.ToString().Equals("1");
            } 

    OBS: Certifique-se que o valor que está vindo para sua célula da grid é realmente 0 ou 1

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco


    segunda-feira, 19 de dezembro de 2016 13:29
  • sim a coluna é do tipo bit , porém quando vejo pelo sql aparece true/false , caso eu faça um preview na data ele da como checkbox checked e unchecked.

    imagem da table e do preview do data set.

    usei o code que tu indicou porem ainda não da check no checkbox1

    usei o codigo abaixo e tentei substituir também o Equals("1") por Equals(1) Equals(True) Equals("True") 

     private void test_Click(object sender, EventArgs e)
            {
                checkBox1.Checked = dgview.CurrentRow.Cells[3].Value.ToString().Equals("1");
    
                //só para testar e ver que valor retorna...
                string c1 = dgview.CurrentRow.Cells[3].Value.ToString();
                textBox1.Text = c1; 
            }

    segunda-feira, 19 de dezembro de 2016 14:19
  • Ok e nesse código de teste que você fez, com que valor o textBox1.Text ficou?

    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    segunda-feira, 19 de dezembro de 2016 16:26
  • Ok e nesse código de teste que você fez, com que valor o textBox1.Text ficou?

    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    apareceu System.Byte[] no textbox.
    segunda-feira, 19 de dezembro de 2016 16:34
  • João,

    Agora observei um detalhe, tem certeza que é essa célula da grid que contém a checkbox?

    Lembre-se, a contagem inicia do 0 e não do 1.

    Tente fazer o mesmo código, porém ao invés de usar Cells[3], utilize Cells[4]


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    segunda-feira, 19 de dezembro de 2016 16:37
  • André , 

    Muito obrigado, realmente era [4],creio que confundi , por que o meu datagrid contem mais colunas , e quando eu usei o sqladapter para adpatar conforme minhas buscas, eu não selecionei umas colunas como password,e Arquivo "que no caso é a imagem em byte , dai eu estava contando as colunas sem essas que eu tinha desabilitado, deu tudo certo, aqui o codigo que usei agora foi .

     private void test_Click(object sender, EventArgs e)
            {
                checkBox1.Checked = dgview.CurrentRow.Cells[4].Value.Equals(true);
            }
    me tira uma outra duvida ?
    dgview.CurrentRow.Cells[4].Value \\pega o valor certo?

    dgview.CurrentRow.Cells[4].Value.ToString() \\pega o valor e passa pro formato String?

    Grato , o problema foi resolvido , agora posso continuar meu projeto...

    segunda-feira, 19 de dezembro de 2016 16:54
  • João,

    Se seu valor já está vindo como true/false, pode fazer direto assim:

    bool a = Convert.ToBoolean(sgview.CurrentRow.Cells[4].Value)

    Não tem a necessidade para converter para string com o .ToString()

    Não esqueça de marcar a opção que te ajudou como resposta para que outros identifiquem facilmente a solução!

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    segunda-feira, 19 de dezembro de 2016 17:03
  • João,

    Se seu valor já está vindo como true/false, pode fazer direto assim:

    bool a = Convert.ToBoolean(sgview.CurrentRow.Cells[4].Value)

    Não tem a necessidade para converter para string com o .ToString()

    Não esqueça de marcar a opção que te ajudou como resposta para que outros identifiquem facilmente a solução!

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    é ele já está vindo como true/false , vou mandar direto , obrigado por tudo.
    eu acho que marquei ali a resposta que funcionou , sou novo nesse mundo ,e no forum ainda não sei as funcionalidades ao certo, mas creio que marquei... vlw msm.
    segunda-feira, 19 de dezembro de 2016 17:38
  • Sim, tudo correto!

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    segunda-feira, 19 de dezembro de 2016 17:39