Usuário com melhor resposta
mensagem de erro

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
- Movido Rui SantosModerator sábado, 6 de agosto de 2011 23:30 (De:C#)
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///
- Sugerido como Resposta AndreAlvesLimaModerator segunda-feira, 8 de agosto de 2011 23:45
- Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 18 de agosto de 2011 16:42
Todas as 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///
- Sugerido como Resposta AndreAlvesLimaModerator segunda-feira, 8 de agosto de 2011 23:45
- Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 18 de agosto de 2011 16:42
-
-
É 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.