Jump to content
Fórum Script Brasil
  • 0

TextBox formatado para valor Monetário


JMRF

Question

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

Edited by JMRF
Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...