Input string was not in an incorrect format

Asked

Viewed 1,686 times

0

I am developing a three-layer application, but there is a mistake when saving other data types that are not string type!

Follow the code below:

//Camada dados Método inserir produto!
public string Inserir(Dproduto Produto)
{
    string resp = "";

    SqlConnection SqlCon = new SqlConnection();
    try
    {
        //codigo 
        SqlCon.ConnectionString = ConexaoBd.Cn;
        SqlCon.Open();

        SqlCommand SqlCmd = new SqlCommand();
        SqlCmd.Connection = SqlCon;
        SqlCmd.CommandText = "spinserir_produto";
        SqlCmd.CommandType = CommandType.StoredProcedure;

        SqlParameter ParId = new SqlParameter();
        ParId.ParameterName = "@codigo";
        ParId.SqlDbType = SqlDbType.Int;
        ParId.Direction = ParameterDirection.Output;
        SqlCmd.Parameters.Add(ParId);

        //nome
        SqlParameter ParNome = new SqlParameter();
        ParNome.ParameterName = "@nome";
        ParNome.SqlDbType = SqlDbType.VarChar;
        ParNome.Size = 20;
        ParNome.Value = Produto.nome;
        SqlCmd.Parameters.Add(ParNome);

        //finalidade
        SqlParameter ParFinalidade = new SqlParameter();
        ParFinalidade.ParameterName = "@finalidade";
        ParFinalidade.SqlDbType = SqlDbType.VarChar;
        ParFinalidade.Size = 50;
        ParFinalidade.Value = Produto.finalidade;
        SqlCmd.Parameters.Add(ParFinalidade);

        //Unidade
        SqlParameter ParUnidade = new SqlParameter();
        ParUnidade.ParameterName = "@unidade";
        ParUnidade.SqlDbType = SqlDbType.VarChar;
        ParUnidade.Size = 50;
        ParUnidade.Value = Produto.unidade;
        SqlCmd.Parameters.Add(ParUnidade);

        //CATEGORIA
        SqlParameter ParIdCategoria = new SqlParameter();
        ParIdCategoria.ParameterName = "@id_categoria";
        ParIdCategoria.SqlDbType = SqlDbType.Int;
        ParIdCategoria.Value = Produto.idCategoria;
        SqlCmd.Parameters.Add(ParIdCategoria);

        //FORNECEDOR
        SqlParameter ParIdFornecedor = new SqlParameter();
        ParIdFornecedor.ParameterName = "@id_fornecedor";
        ParIdFornecedor.SqlDbType = SqlDbType.Int;
        ParIdFornecedor.Value = Produto.idFornecedor;
        SqlCmd.Parameters.Add(ParIdFornecedor);

        SqlParameter ParPrecoVenda = new SqlParameter();
        ParPrecoVenda.ParameterName = "@valor";
        ParPrecoVenda.SqlDbType = SqlDbType.Money;
        ParPrecoVenda.Size = 40;
        ParPrecoVenda.Value = Produto.valorVenda;
        SqlCmd.Parameters.Add(ParPrecoVenda);

        SqlParameter ParPrecoCompra = new SqlParameter();
        ParPrecoCompra.ParameterName = "@custo";
        ParPrecoCompra.SqlDbType = SqlDbType.Money;
        ParPrecoCompra.Size = 40;
        ParPrecoCompra.Value = Produto.valorCusto;
        SqlCmd.Parameters.Add(ParPrecoCompra);

        SqlParameter ParQuantidade = new SqlParameter();
        ParQuantidade.ParameterName = "@quantidade";
        ParQuantidade.SqlDbType = SqlDbType.Int;
        ParQuantidade.Value = Produto.quantidade;
        SqlCmd.Parameters.Add(ParQuantidade);

        //Executar

        resp = SqlCmd.ExecuteNonQuery() == 1 ? "OK" : "Registro Não Foi Inserido!";
    }
    catch (Exception ex)
    {
        resp = ("Erro ao inserir" + ex.Message);
    }

    finally
    {
        if (SqlCon.State == ConnectionState.Open) SqlCon.Close();
    }

    return resp;
}
//Camada negocio metodo inserir
public static string Inserir(string nome,
         string finalidade, string unidade, int idCategoria, int idFornecedor,
        decimal valorVenda, decimal valorCusto, int quantidade)

{
    Dproduto Obj = new CamadaDados.Dproduto();

    Obj.Nome = nome;
    Obj.Finalidade= finalidade;
    Obj.Unidade = unidade;
    Obj.IdCategoria = idCategoria;
    Obj.IdFornecedor = idFornecedor;
    Obj.ValorVenda = valorVenda;
    Obj.ValorCusto = valorCusto;
    Obj.Quantidade = quantidade;

    return Obj.Inserir(Obj);
}

//Botao Salvar do meu formulario
private void btn_salvar_Click(object sender, EventArgs e)
{
    try
    {
        string resp = "";
        if (this.txtNome.Text == string.Empty)
        {
            MensagemErro("Preencha todos os campos!");
            errorIcone.SetError(txtNome, "Insira o nome!");
        }
        else
        {
            if (this.eNovo)
            {
                resp = Nproduto.Inserir(this.txtNome.Text, this.cbMarca.Text, this.cbUnidade.Text, Int32.Parse(this.txtCategoria.Text),
                  Int32.Parse(this.txtFornecedor.Text),decimal.Parse(this.txtValor.Text),
                  decimal.Parse(this.txtCusto.Text), Int32.Parse(this.txtEstoque.Text));


            }    
        }
    }
}

//mensagem de Erro

1 answer

0

in that passage:

 resp = Nproduto.Inserir(this.txtNome.Text, this.cbMarca.Text, this.cbUnidade.Text, Int32.Parse(this.txtCategoria.Text),
                  Int32.Parse(this.txtFornecedor.Text),decimal.Parse(this.txtValor.Text),
                  decimal.Parse(this.txtCusto.Text), Int32.Parse(this.txtEstoque.Text));

some of the values cannot be converted, check the contents of the textbox before making the conversion, noting that a numeric format will display this error if the informed string contains ',' or ' '

Browser other questions tagged

You are not signed in. Login or sign up in order to post.