Ir para conteúdo
Fórum Script Brasil
  • 0

TextBox formatado para valor Monetário


JMRF

Pergunta

Boa tarde,

Quem pode me dar uma dica, por favor.

O Código abaixo uso para formatar o textbox valor_unitário_saidas para valor monetátio.

Então à medida que digito no textbox vão aparecendo os números com os pontos, vírgulas e os zeros

tudo conforme eu digito, e quando o textbox perde o foco aparece o valor como digitado.

Exemplo: R$1,52 mas quando clico em confirmar acontece que:

1 - O número que aparece no textbox fica sem os dígitos depois da vírgula, mas no BD o número é gravado com as casas

depois da vírgula.

2 - Se o valor digitado é tipo 1,50 ele mosta no textbox depois de clicar em confirmar, apenas 1, se eu digitar 1,51

ele mosta no textbox 2, ou seja ele arredonda, para baixo se menor ou igual a 50 depois da vírgula ou para mais se

igual ou maior que 51. O BD Access está formatada a coluna como Moeda.No BD fica gravado R$1,51, o valor que realmente digitei no textbox.

Digitei para teste no textbox o valor 1123568 e saí do textbox (perdeu o foco) o número ficou formatado no textbox assim:

R$ 1.123.568,00, perfeito, com os pontos, vírgula e o R$. Mas quando clico em confirmar fica no textbox o valor sem pontos,

sem vírgula, sem R$ e sem os zeros ou seja sem formatação nehuma = 1123568.Fui até o BD Access abri e lá está gravado:

R$ 1.123.568,00.

Ou seja, no Banco está gravando tudo legal do jeitinho certo. O problema é no Formulário que não aparece no TextBox o valor

formatado igual moeda.

Dá para ajudar?

Desde já meu muito Obrigado

JMRF

Editado por JMRF
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Olá JMRF...

Bem isso é simples de tratar...basta colocar no Evento LostFocus da TextBox o seguinte script:

Private Sub txt_Valor_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txt_Valor.LostFocus
        If Not txt_Valor.Text = Nothing Then
            Me.txt_Valor.Text = FormatCurrency(txt_Valor.Text, 2)
        Else
            Me.txt_Valor.Text = FormatCurrency(0, 2)
        End If
    End Sub

Perceba que fiz um tratamento para evitar o ErrorRunTime...

coloquei uma condição...que se a caixa "não" estiver vazia, formatar para moedas o valor digitado...senão ele formatará do mesmo jeito, só que com valor = 0 (zero) sml13.gif

Note que se você digitar "texto" dentro do TextBox, vai dá ErrorRunTime também...nesse caso tem de se fazer um tratamento onde a caixa só aceite caractéres numericos...dica esta que aqui mesmo no site tem de sobras top.gif

VALEU ! Legal.gif

Link para o comentário
Compartilhar em outros sites

  • 0
Olá JMRF...

Bem isso é simples de tratar...basta colocar no Evento LostFocus da TextBox o seguinte script:

Private Sub txt_Valor_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txt_Valor.LostFocus
        If Not txt_Valor.Text = Nothing Then
            Me.txt_Valor.Text = FormatCurrency(txt_Valor.Text, 2)
        Else
            Me.txt_Valor.Text = FormatCurrency(0, 2)
        End If
    End Sub

Perceba que fiz um tratamento para evitar o ErrorRunTime...

coloquei uma condição...que se a caixa "não" estiver vazia, formatar para moedas o valor digitado...senão ele formatará do mesmo jeito, só que com valor = 0 (zero) sml13.gif

Note que se você digitar "texto" dentro do TextBox, vai dá ErrorRunTime também...nesse caso tem de se fazer um tratamento onde a caixa só aceite caractéres numericos...dica esta que aqui mesmo no site tem de sobras top.gif

VALEU ! Legal.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Boa noite,

Danleonhart,

Fiz o que você me aconselhou mas não dá certo. Já estou pirando, nada dá certo. Vou te passar umas informações para ver se você pode me ajudar.

Trabalho com o VB.NET 2010

Banco de Dados - Access 2010

No meu BD o campo Valor_unitario_saidas eu formatei como Moeda - 2 casas decimais.

No Binding Formatei como Currency - 2 casas decimais

No meu código coloquei:

Dim avalor_unitario_saidas(1) As Double

Coloquei ainda o código:

Private Sub txtValor_unitario_saidas_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtValor_unitario_saidas.Leave

If txtValor_unitario_saidas.Text = String.Empty Then

txtValor_unitario_saidas.Text = "0,00"

Else

txtValor_unitario_saidas.Text = FormatCurrency(txtValor_unitario_saidas.Text, 2, TriState.True, TriState.True, _

TriState.True).Replace("R$", "").Trim

End If

End sub

end Class

No meu DBGrid os valores aparecem com R$323,50 ou R$125,00 e também no BD aparecem R$323,50 ou R$125,00 só no textbox - txtValor_unitario_saidas.text é que aparece R$323,5 ou R$125 sem os zeros após a vírgula. Estou tentando uma solução desde dezembro de 2011 e tudo que me mandam fazer faço e nada, mais nada mesmo muda essa situação.

Dá pra dar alguma dica, por favor.

Grato

JMRF

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...