none
Formatação de Valores Monetários... RRS feed

  • Pergunta

  • Boa Noite a todos!

    Pessoal, estou com um problema na minha aplicação que é o seguinte. 

    Nesse Data grid eu lanço, Material,quantidade,valor unitário.

    o que esta acontecendo e o seguinte, quando eu lanço um valor referente a centavos "Ex: quantidade = 1 - valor Unitario = 0,80" ele multiplica corretamente, porem ele transforma 0,80 em 1,00 real e manda pro banco dessa forma. qual quer valor que seja centavos ele transforma em um 1,00.

    alguém sabe como resolver isso, agradeço quem puder me ajudar...Obrigado


    Obs: esses valores no banco esta como "Decimal" e no Data Grid estou usando Formatação "C2".

    att;

    domingo, 11 de setembro de 2016 21:25

Respostas

  • Bom dia Fabricio_Canali,

    Obrigado pela participação.

    Verifique se o problema não está ocorrendo nesta linha:

    txtSubtotal.Text = Convert.ToInt32(Quantidade * ValorUnitario).ToString();
    

    Ali os campos decimais são convertidos para int. É isso mesmo?

    Atenciosamente,


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Fabricio_Canali terça-feira, 13 de setembro de 2016 14:13
    terça-feira, 13 de setembro de 2016 12:57
    Moderador

Todas as Respostas

  • Como esta campo esta definido em seu banco de dados,

    Se a resposta contribuiu com seu aprendizado por favor marque como Útil
    Se solucionou seu problema por favor marque como Resposta
    Atenção, se seu problema foi resolvido não deixe o post aberto 

    Visite : www.codigoexpresso.com.br

    segunda-feira, 12 de setembro de 2016 02:05
  • Como é que você está adicionando os itens no banco de dados ao clicar em "ADD"? Poste o seu código, por favor..

    Abraço!


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima

    segunda-feira, 12 de setembro de 2016 14:19
    Moderador
  • Boa Tarde Pessoal!

    Segue parte do código:

    private void btnAdicionarItens_Click(object sender, EventArgs e) { decimal Quantidade; decimal ValorUnitario; Quantidade = Convert.ToDecimal(txtQuantidade.Text); ValorUnitario = Convert.ToDecimal(txtValorUnitario.Text); txtSubtotal.Text = Convert.ToInt32(Quantidade * ValorUnitario).ToString(); // ColSubTotal.DefaultCellStyle.NullValue = Convert.ToDecimal(Quantidade * ValorUnitario); Material InserirMaterial = new Material(); InserirMaterial.chamado = new Chamado(); InserirMaterial.chamado.IDChamado = Convert.ToInt32(txtCodigoMaterial.Text); InserirMaterial.MaterialDescricao = txtDescricaoMaterial.Text; InserirMaterial.Quantidade = Convert.ToInt32(txtQuantidade.Text); InserirMaterial.ValorUnitario = Convert.ToDecimal(txtValorUnitario.Text); InserirMaterial.Subtotal = Convert.ToDecimal(txtSubtotal.Text); dtgMaterial.AllowUserToAddRows = false; MaterialNegocios materialNegocios = new MaterialNegocios(); string retorno = materialNegocios.Inserirmaterial(InserirMaterial); try { int codigoChamado = Convert.ToInt32(retorno); MessageBox.Show("Material adicionado com sucesso...: " + codigoChamado, "Sucesso...", MessageBoxButtons.OK, MessageBoxIcon.Information); PesquisarMaterial(); } catch { MessageBox.Show("Não foi Possivel cadastrar material. Detalhe: ", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); DialogResult = DialogResult.No; } //LIMPA TODOS OS CAMPOS DAS TEXTEBOX txtDescricaoMaterial.Text = String.Empty; txtQuantidade.Text = String.Empty; txtValorUnitario.Text = String.Empty; txtSubtotal.Text = String.Empty; // dtgMaterial.Rows.Add(0,txtDescricaoMaterial.Text, txtQuantidade.Text, txtValorUnitario.Text);//, txtSubtotal.Text); } private void PesquisarMaterial() { MaterialColecao materialColecao = new MaterialColecao(); MaterialNegocios materialNegocios = new MaterialNegocios(); materialColecao = materialNegocios.ConsultarMaterialPorID(txtCodigoMaterial.Text); dtgMaterial.DataSource = null; dtgMaterial.DataSource = materialColecao; dtgMaterial.Update(); dtgMaterial.Refresh(); }



    segunda-feira, 12 de setembro de 2016 15:55
  • Bom dia Fabricio_Canali,

    Obrigado pela participação.

    Verifique se o problema não está ocorrendo nesta linha:

    txtSubtotal.Text = Convert.ToInt32(Quantidade * ValorUnitario).ToString();
    

    Ali os campos decimais são convertidos para int. É isso mesmo?

    Atenciosamente,


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Fabricio_Canali terça-feira, 13 de setembro de 2016 14:13
    terça-feira, 13 de setembro de 2016 12:57
    Moderador
  • Bom dia Amigo!

    vou verificar isso aqui...

    terça-feira, 13 de setembro de 2016 13:25
  • Bom dia!

    Não resolveu nada ainda, tirei a conversão, converti para decimal, mesmo assim continua convertendo centavos para um real...

    att;

    terça-feira, 13 de setembro de 2016 13:33
  • Bom dia!

    Resolvi aqui, alterei no banco de dados "decimal para money" na programação mantive o decimal mesmo e funcionou.

    valeu ai pela ajuda.Obrigado.

    att;


    terça-feira, 13 de setembro de 2016 14:20