none
conversao de int para string RRS feed

  • Pergunta

  • bem pessoal, estou com um problema com o tipo int

    declarei em meu bd, numero e inscricao estadual como INT, so que preciso passa-la para string para armazenar no banco,

    so que qdo vai salvar, so salva 0;

    ALGUEM PODE ME AJUDAR?

     acesso.sNumForn = Convert.ToInt32(txtNumForn.Text);

    OU

    acesso.sInscricao = int.Parse(txtInscricao.Text);

     txtNumForn.Text = dr["NUM"].ToString();

    domingo, 10 de julho de 2016 04:45

Respostas

  • O correto é no seu banco de dados gravar a inscricao como varchar(n), mas já que deixou como inteiro vamos tentar sanar seu problema provavelmente a conversão esta estourando, ok

    tente assim  :

     acesso.sNumForn = Convert.ToInt64(txtNumForn.Text);

    converta para 64 e não para 32 , entendeu ?


    Se foi útil e/ou resolveu seu problema, não esqueça de marcar como resposta.
    Visite : www.codigoexpresso.com.br
    • Marcado como Resposta Di Souza terça-feira, 12 de julho de 2016 13:45
    segunda-feira, 11 de julho de 2016 18:32

Todas as Respostas

  • Ola boa noite Di Souza

    Se no banco é int, você deve enviar int para o banco e não string conforme comentou.

    O seu código aparentemente esta correto, pois voce esta convertendo para Int e esta convertendo para string para devolver ao textBox.

    Só tem um porém.. 

    acesso.sNumForn = Convert.ToInt32(txtNumForn.Text);
    txtNumForn.Text = dr["NUM"].ToString();

    para gravar no banco você utilizou a propriedade 
    acesso.sNumForn
    e para recuperar do banco utilizou a propriedade 
    dr["NUM"]

    Não seria esse o problema?
    Possivelmente gravou na coluna SNumForn do banco e você esta enviando para o TextBox o campo Num 

    Verifique direto no banco também se salvou.

    domingo, 10 de julho de 2016 07:16
  • bom dia Michaeell,

    na verdade o que acontece e o seguinte eu crie uma classe  acesso para inserir e deletar dados do bd,

    nesse caso ai converti int para string pois o textbox n estava aceitando int. Do msm modo que fiz com o codigo,

    que funciona normal, passei para string e no banco entra o numero.

        AcessoDadosFornecedor acesso = new AcessoDadosFornecedor();
                if (sStatus == StatusCadastro.scEditando)
                {
                    acesso.nCodFornecedor = int.Parse(lblCodigo.Text);
                    acesso.sNumForn = Convert.ToInt32(txtNumForn.Text);
                    acesso.sInscricao = int.Parse(txtInscricao.Text);
                }                           

    public override void CarregaValores()
            {
                AcessoDadosFornecedor acesso = new AcessoDadosFornecedor(_nCodGenerico);
                DataRow dr = acesso.PesquisaID();


                if (dr != null)
                {

    lblCodigo.Text = dr["IDCODFOR"].ToString();
                    txtNomeFornecedor.Text = dr["NOMEFORN"].ToString();
                    txtCNPJ.Text = dr["CNPJ"].ToString();
                    txtEndForn.Text = dr["ENDFOR"].ToString();
                    txtBairroForn.Text = dr["BAIRRO"].ToString();
    txtNumForn.Text = dr["NUM"].ToString();

    so o codigo funciona, entra normalmente o valor incrementado, ja o numero e a inscricao estadual, armazena apenas 0.

    domingo, 10 de julho de 2016 15:58
  • So uma questão ... creio que você não precisa alterar o tipo de dados do seu campo na tabela, você quer alterar o tipo de dados para armazenar os pontos e traços do campo ? E se você formar isso no campo da tela eu geralmente não armazeno as pontuações deixo o campo "texto livre" e valido caso seja somente numerico é claro.

    Junior

    domingo, 10 de julho de 2016 22:21
  • O correto é no seu banco de dados gravar a inscricao como varchar(n), mas já que deixou como inteiro vamos tentar sanar seu problema provavelmente a conversão esta estourando, ok

    tente assim  :

     acesso.sNumForn = Convert.ToInt64(txtNumForn.Text);

    converta para 64 e não para 32 , entendeu ?


    Se foi útil e/ou resolveu seu problema, não esqueça de marcar como resposta.
    Visite : www.codigoexpresso.com.br
    • Marcado como Resposta Di Souza terça-feira, 12 de julho de 2016 13:45
    segunda-feira, 11 de julho de 2016 18:32