none
Erro incluir RRS feed

  • Pergunta

  • Boa noite

    Estou com um problema ao incluir um cadastro, pelo pouco que sei, me parece que é alguma coisa referente à conversão dos dados numpericos. Deixo abaixo o código e o erro que está aparecendo

    Erro => Cadastro não permitido value was either too large or too small for an Int32

        private void Incluir_Aviarios()
        {
          string incluirSQL = " ";
          FbConnection connAviarios = new FbConnection(DiplomataConn);
          FbCommand commIncluir = new FbCommand();
          FbParameter[] prmParametro = new FbParameter[15];
    
          incluirSQL = "insert into CADASTRO_AVIARIOS (NOME, CPF, LINHA, CIDADE, CEP, ESTADO, FONE_R, "+
            "FONE_C, INCRA, PNSA, CAPACIDADE_SILOS, QUANTIDADE_SILOS, CAPACIDADE_ALOJAMENTO, AVIARIOS, TIPO_AVIARIO)" +
            "values (@NOME, @CPF, @LINHA, @CIDADE, @CEP, @ESTADO, @FONE_R, @FONE_C, @INCRA, @PNSA," +
          "@CAPACIDADE_SILOS, @QUANTIDADE_SILOS, @CAPACIDADE_ALOJAMENTO, @AVIARIOS, @TIPO_AVIARIO)";
          
          prmParametro[0] = new FbParameter("@NOME", txtNome.Text);
          double CPF = Convert.ToInt64(mtxtCPF.Text);
          prmParametro[1] = new FbParameter("@CPF", CPF);
          prmParametro[2] = new FbParameter("@LINHA", txtLinha.Text);
          prmParametro[3] = new FbParameter("@CIDADE", txtCidade.Text);
          double CEP = Convert.ToInt64(mtxtCEP.Text);
          prmParametro[4] = new FbParameter("@CEP", CEP);
          prmParametro[5] = new FbParameter("@ESTADO", txtEstado.Text);
          double FONE_R = Convert.ToInt64(mtxtFone_Residencial.Text);
          prmParametro[6] = new FbParameter("@FONE_R", FONE_R);
          double FONE_C = Convert.ToInt64(mtxtFone_Celular.Text);
          prmParametro[7] = new FbParameter("@FONE_C", FONE_C);
          double INCRA = Convert.ToInt32(txtINCRA.Text);
          prmParametro[8] = new FbParameter("@INCRA", INCRA);
          prmParametro[9] = new FbParameter("@PNSA", cbPNSA.SelectedValue.ToString());
          double C_SILOS = Convert.ToInt32(txtCapacidade_Silos.Text);
          prmParametro[10] = new FbParameter("@CAPACIDADE_SILOS", C_SILOS);
          double Q_SILOS = Convert.ToInt32(txtSilos.Text);
          prmParametro[11] = new FbParameter("@QUANTIDADE_SILOS", Q_SILOS);
          double C_ALOJAMENTO = Convert.ToInt32(txtCapacidade_Alojamento.Text);
          prmParametro[12] = new FbParameter("@CAPACIDADE_ALOJAMENTO", C_ALOJAMENTO);
          double AVIARIOS = Convert.ToInt32(txtAviarios.Text);
          prmParametro[13] = new FbParameter("@AVIARIOS", AVIARIOS);
          prmParametro[14] = new FbParameter("@TIPO_AVIARIO", cbTipo_Aviario.SelectedValue.ToString());
          
          if (txtNome.Text == "")
          {
            MessageBox.Show("Por favor, cadastre um aviário", "Atenção", MessageBoxButtons.OK);
            txtNome.Focus();
            return;
          }
    
          foreach (FbParameter p in prmParametro)
          {
            commIncluir.Parameters.Add(p);
          }
          try
          {
            connAviarios.Open();
            commIncluir.Connection = connAviarios;
            commIncluir.CommandType = CommandType.Text;
            commIncluir.CommandText = incluirSQL.ToString();
            commIncluir.ExecuteNonQuery();
            Consultar_Aviarios();
          }
          catch (Exception ex)
          {
            MessageBox.Show("Cadastro não permitido. " + ex.Message, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error);
          }
          finally
          {
            if ((commIncluir != null))
            {
              commIncluir.Dispose();
            }
            if (connAviarios.State != ConnectionState.Closed)
            {
              connAviarios.Close();
              connAviarios.Dispose();
            }
          }
          Limpar_Aviarios();
          txtNome.Select();
        }
    
    Aguardo ajuda
    Atenciosamente
    Paulo
    sexta-feira, 15 de outubro de 2010 00:03

Respostas

  • Achei o erro...

    O problema estaa ocorrendo no banco de dados, pois estava como INTEGER, e tive que colocar como BIGINT, ai funcionou normal

    Vlw

    • Marcado como Resposta Psmerlo sexta-feira, 15 de outubro de 2010 14:16
    sexta-feira, 15 de outubro de 2010 14:16

Todas as Respostas

  • Oi... uns detalhes... vc faz um Convert para inteiro para atribuir uma variavel Double... ex...

    "double INCRA = Convert.ToInt32(txtINCRA.Text);"

    converta ela para double direto:

    double INCRA = Convert.ToDouble(txtINCRA.Text);

    sobre o erro... um valor inteiro Int32 deve ser maior que "-2147483648" e menor que "2147483647"
    vc deve ta fazendo um Convert.ToInt32 em algum campo de texto que tenha um numero maior que 2147483647


    What would Brian Boitano do ?
    ((2B || !2B) is Question) ?
    There is no place like 127.0.0.1
    Só existem 10 tipos de pessoas no mundo... as que leem em binario e as outras...
    Se não da certo como voce esta fazendo... Tente fazer de um jeito totalmente diferente....
    sexta-feira, 15 de outubro de 2010 00:18
    Moderador
  • Bom dia

    Coloquei para fazer a conversão para In64 e mesmo para double, mas o erro persiste

     

    sexta-feira, 15 de outubro de 2010 13:11
  • Amigo, qual linha esta ocorrenco o erro ?

    por que você nao debuga a aplicação e vai passando linha por linha e ve quais são os dados que estão sendo convertidos, pode ser que assim vc consiga ver qual esta dando erro


    Olavo Oliveira Neto luke_neto@hotmail.com
    sexta-feira, 15 de outubro de 2010 13:32
  • Tente também usar um double.TryParse(). Vai ver o item passado não pode ser convertido. Na hora de depurar, verifique o valor de txtINCRA.Text.
    Coragem não é ausência de medo e sim o controle dele. Cursando Tecnologia em Análise e Desenvolvimento de Sistemas - Unopar
    sexta-feira, 15 de outubro de 2010 13:39
  • Está passando todos as linhas de código e o erro está dando no catch, exatamente na mensagem de erro. O pior é q não está me mostrando via código onde está o erro, somente a tela da mensagem do catch
    sexta-feira, 15 de outubro de 2010 13:50
  • vc trocou todos os Convert.ToInt32 para Convert.ToDouble se sim, continou com a mesma mensagem ?
    Olavo Oliveira Neto
    sexta-feira, 15 de outubro de 2010 14:07
  • Achei o erro...

    O problema estaa ocorrendo no banco de dados, pois estava como INTEGER, e tive que colocar como BIGINT, ai funcionou normal

    Vlw

    • Marcado como Resposta Psmerlo sexta-feira, 15 de outubro de 2010 14:16
    sexta-feira, 15 de outubro de 2010 14:16
  • Você diz erro no MessageBox? Experimente lançar ele (sem o ex.Message) fora do catch.
    Coragem não é ausência de medo e sim o controle dele. Cursando Tecnologia em Análise e Desenvolvimento de Sistemas - Unopar
    sexta-feira, 15 de outubro de 2010 14:19
  • Amigo esse campos que vc está tentando inserir no banco são de qual tipo na Base de Dados???

    pode ser o problema no banco e não no aplicativo...

    ele pode até estar convertendo mais

    não está conseguindo inserir no banco vc disse que o erro é o catch , então quer dizer

    que alguma linha do try tem um problema...

     

    mexi no seu código...

    dê uma olhada...

     

     private void Incluir_Aviarios()

        {

          FbConnection connAviarios = new FbConnection(DiplomataConn);

          FbCommand commIncluir = new FbCommand();

          FbParameter[] prmParametro = new FbParameter[15];

     

         string incluirSQL = "insert into CADASTRO_AVIARIOS (NOME, CPF, LINHA, CIDADE, CEP, ESTADO, FONE_R, "+

            "FONE_C, INCRA, PNSA, CAPACIDADE_SILOS, QUANTIDADE_SILOS, CAPACIDADE_ALOJAMENTO, AVIARIOS, TIPO_AVIARIO)" +

            " values (@NOME, @CPF, @LINHA, @CIDADE, @CEP, @ESTADO, @FONE_R, @FONE_C, @INCRA, @PNSA," +

          "@CAPACIDADE_SILOS, @QUANTIDADE_SILOS, @CAPACIDADE_ALOJAMENTO, @AVIARIOS, @TIPO_AVIARIO)";

     

         double CPF = Convert.ToDouble(mtxtCPF.Text);

         double CEP = Convert.ToDouble(mtxtCEP.Text);

         double FONE_R = Convert.ToDouble(mtxtFone_Residencial.Text);

         double FONE_C = Convert.ToDouble(mtxtFone_Celular.Text);

         double INCRA = Convert.ToDouble(txtINCRA.Text);

         double C_SILOS = Convert.ToDouble(txtCapacidade_Silos.Text);

         double Q_SILOS = Convert.ToDouble(txtSilos.Text);

         double C_ALOJAMENTO = Convert.ToDouble(txtCapacidade_Alojamento.Text);

         double AVIARIOS = Convert.ToDouble(txtAviarios.Text);

     

          prmParametro[0] = new FbParameter("@NOME", txtNome.Text);

          prmParametro[1] = new FbParameter("@CPF", CPF);

          prmParametro[2] = new FbParameter("@LINHA", txtLinha.Text);

          prmParametro[3] = new FbParameter("@CIDADE", txtCidade.Text);

          prmParametro[4] = new FbParameter("@CEP", CEP);

          prmParametro[5] = new FbParameter("@ESTADO", txtEstado.Text);

          prmParametro[6] = new FbParameter("@FONE_R", FONE_R);

          prmParametro[7] = new FbParameter("@FONE_C", FONE_C);

          prmParametro[8] = new FbParameter("@INCRA", INCRA);

          prmParametro[9] = new FbParameter("@PNSA", cbPNSA.SelectedValue.ToString());

          prmParametro[10] = new FbParameter("@CAPACIDADE_SILOS", C_SILOS);

          prmParametro[11] = new FbParameter("@QUANTIDADE_SILOS", Q_SILOS);

          prmParametro[12] = new FbParameter("@CAPACIDADE_ALOJAMENTO", C_ALOJAMENTO);

          prmParametro[13] = new FbParameter("@AVIARIOS", AVIARIOS);

          prmParametro[14] = new FbParameter("@TIPO_AVIARIO", cbTipo_Aviario.SelectedValue.ToString());

     

          if (txtNome.Text == "")

          {

            MessageBox.Show("Por favor, cadastre um aviário", "Atenção", MessageBoxButtons.OK);

            txtNome.Focus();

            return;

          }

     

          foreach (FbParameter p in prmParametro)

          {

            commIncluir.Parameters.Add(p);

          }

          try

          {

            connAviarios.Open();

            commIncluir.Connection = connAviarios;

            commIncluir.CommandType = CommandType.Text;

            commIncluir.CommandText = incluirSQL;

            commIncluir.ExecuteNonQuery();

            Consultar_Aviarios();

          }

          catch (Exception ex)

          {

            MessageBox.Show("Cadastro não permitido. " + ex.Message, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error);

          }

          finally

          {

            if ((commIncluir != null))

            {

              commIncluir.Dispose();

            }

            if (connAviarios.State != ConnectionState.Closed)

            {

              connAviarios.Close();

              connAviarios.Dispose();

            }

          }

          Limpar_Aviarios();

          txtNome.Select();

        }

     

    Espero que ajude...


    Se for útil marcar como resposta
    • Sugerido como Resposta Jones Roberto sexta-feira, 15 de outubro de 2010 14:57
    sexta-feira, 15 de outubro de 2010 14:43