none
mensagem de erro RRS feed

  • Pergunta

  • pessoal, mais uma vez aqui solicitando ajuda de vocês. Acontece que já tem 2 dias que estou tentando resolver um pequeno erro na minha aplicação e atá agora não consegui ver onde está o erro. É o seguinte: Quando mando inserir os dados na tabela, simplesmente aparece a seguinte mensagem "Erro: Input string not in a corret format". Como disse não sei onde está o erro, já fiz vários testes e nada. Segue meu comando insert e a tabela do banco para que possam me ajudar.

     

    private void BtnSalvar_Click(object sender, EventArgs e)
        {
          FbConnection conexao = new FbConnection(strConexao);
          FbCommand comando = new FbCommand();
    
          string instrucaoSQL = ("insert into protocolo (apresentante, data_prot, cpf_cnpj, tipo_doc, valor_doc, andamento, data_andamento) values (@apresentante, @data_prot, @cpf_cnpj, @tipo_doc, @valor_doc, @andamento, @data_andamento)");
    
          comando.Connection = conexao;
          comando.CommandType = CommandType.Text;
          comando.CommandText = instrucaoSQL;
    
          comando.Parameters.Add("@apresentante", txtApresentante.Text);
          comando.Parameters.Add("@data_prot", txtDataProtocolo.Text);
          comando.Parameters.Add("@cpf_cnpj", txtCPFCNPJ.Text); 
          comando.Parameters.Add("@tipo_doc", cbxTipoDocumento.Text);
          comando.Parameters.Add("@valor_doc", txtValorDocumento.Text);
          comando.Parameters.Add("@andamento", cbxAndamento.Text);
           comando.Parameters.Add("@data_andamento", txtDataAndamento.Text);
          comando.Parameters.Add("@pendencia", txtPendencia.Text);
          comando.Parameters.Add("@data_pend", txtDataPendencia.Text); //configurar para data
          comando.Parameters.Add("@data_fim_prot", txtDataFimProtocolo.Text); //configurar para data///
    
    

     

    aqui é a tabela

        ID              INTEGER NOT NULL,

        APRESENTANTE    VARCHAR(40) NOT NULL,

        DATA_PROT       VARCHAR(10) NOT NULL,

        CPF_CNPJ        CHAR(15) NOT NULL,

        TIPO_DOC        VARCHAR(15) NOT NULL,

        VALOR_DOC       NUMERIC(6,0),

        ANDAMENTO       VARCHAR(25) NOT NULL,

        DATA_ANDAMENTO  VARCHAR(10) NOT NULL,

        PENDENCIA       VARCHAR(100),

        DATA_PEND       VARCHAR(10),

        DATA_FIM_PROT   VARCHAR(10)

    -------------//---------------------------------

    A nível de informação estou utilizando o banco de dados firebird.

    Agradeço a todos.

    Kildare

     

     

    sábado, 6 de agosto de 2011 06:05

Respostas

  • Possivelmente o valor em " txtValorDocumento.Text" deve esta vindo com uma virgula separando as casas decimais... o que daria problema na conversão pq o sql por padrao usa o ponto para separar as casas decimais...

    Para evitar esse tipo de erro... primeiro converta o valor do textbox para uma variavel do tipo float e passa essa variavel para o sql

          FbConnection conexao = new FbConnection(strConexao);
          FbCommand comando = new FbCommand();
    
          string instrucaoSQL = ("insert into protocolo (apresentante, data_prot, cpf_cnpj, tipo_doc, valor_doc, andamento, data_andamento) values (@apresentante, @data_prot, @cpf_cnpj, @tipo_doc, @valor_doc, @andamento, @data_andamento)");
    
          comando.Connection = conexao;
          comando.CommandType = CommandType.Text;
          comando.CommandText = instrucaoSQL;
    
          comando.Parameters.Add("@apresentante", txtApresentante.Text);
          comando.Parameters.Add("@data_prot", txtDataProtocolo.Text);
          comando.Parameters.Add("@cpf_cnpj", txtCPFCNPJ.Text);
          comando.Parameters.Add("@tipo_doc", cbxTipoDocumento.Text);
    
          float valorDocumento;
          if (!float.TryParse(txtValorDocumento.Text, new System.Globalization.CultureInfo("pt-BR"), out valorDocumento)) throw new Exception("Valor documento no formato errado");
          comando.Parameters.Add("@valor_doc", valorDocumento);    
          
          comando.Parameters.Add("@andamento", cbxAndamento.Text);
          comando.Parameters.Add("@data_andamento", txtDataAndamento.Text);
          comando.Parameters.Add("@pendencia", txtPendencia.Text);
          comando.Parameters.Add("@data_pend", txtDataPendencia.Text); //configurar para data
          comando.Parameters.Add("@data_fim_prot", txtDataFimProtocolo.Text); //configurar para data///
    


    sábado, 6 de agosto de 2011 23:29
    Moderador

Todas as Respostas

  • Verifique 2 coisas:

    > O valor que você está colocando está em string;

    > Os valores que seu banco de dados pode receber (string, int...);

    sábado, 6 de agosto de 2011 22:58
  • Possivelmente o valor em " txtValorDocumento.Text" deve esta vindo com uma virgula separando as casas decimais... o que daria problema na conversão pq o sql por padrao usa o ponto para separar as casas decimais...

    Para evitar esse tipo de erro... primeiro converta o valor do textbox para uma variavel do tipo float e passa essa variavel para o sql

          FbConnection conexao = new FbConnection(strConexao);
          FbCommand comando = new FbCommand();
    
          string instrucaoSQL = ("insert into protocolo (apresentante, data_prot, cpf_cnpj, tipo_doc, valor_doc, andamento, data_andamento) values (@apresentante, @data_prot, @cpf_cnpj, @tipo_doc, @valor_doc, @andamento, @data_andamento)");
    
          comando.Connection = conexao;
          comando.CommandType = CommandType.Text;
          comando.CommandText = instrucaoSQL;
    
          comando.Parameters.Add("@apresentante", txtApresentante.Text);
          comando.Parameters.Add("@data_prot", txtDataProtocolo.Text);
          comando.Parameters.Add("@cpf_cnpj", txtCPFCNPJ.Text);
          comando.Parameters.Add("@tipo_doc", cbxTipoDocumento.Text);
    
          float valorDocumento;
          if (!float.TryParse(txtValorDocumento.Text, new System.Globalization.CultureInfo("pt-BR"), out valorDocumento)) throw new Exception("Valor documento no formato errado");
          comando.Parameters.Add("@valor_doc", valorDocumento);    
          
          comando.Parameters.Add("@andamento", cbxAndamento.Text);
          comando.Parameters.Add("@data_andamento", txtDataAndamento.Text);
          comando.Parameters.Add("@pendencia", txtPendencia.Text);
          comando.Parameters.Add("@data_pend", txtDataPendencia.Text); //configurar para data
          comando.Parameters.Add("@data_fim_prot", txtDataFimProtocolo.Text); //configurar para data///
    


    sábado, 6 de agosto de 2011 23:29
    Moderador
  • É necessário converter o txtValorDocumento.Text para um inteiro.

    Convert.ToInt32(txtValorDocumento.Text)

    Não esqueça de substituir todos os pontos por vírgulas. Teste insira um valor com um ponto e outro com vírgulas.

    segunda-feira, 8 de agosto de 2011 17:26
  • É necessário converter o txtValorDocumento.Text para um inteiro.

    Convert.ToInt32(txtValorDocumento.Text)

    Não esqueça de substituir todos os pontos por vírgulas. Teste insira um valor com um ponto e outro com vírgulas.

    Antonio, se vc usar o TryParse com a CultureInfo "pt-br" como eu fiz acima, vc não prescisa alterar os pontos para virgulas... pq ele faz a conversão usando a norma brasileira...
    segunda-feira, 8 de agosto de 2011 22:31
    Moderador