SALVAR VALORES EM REAIS

MHDS23 07/07/2017 10:57:56
#475067
galera, bom dia
estou precisando de ajuda
gostaria de salvar no banco um masktbox em valores reais

segue o codigo que estou tentando realizar
esta dando erro de dados incompativeis

Dim valor As Single = mask_valor.Text
Dim strValor = valor.ToString([Ô]R$ #,###.00[Ô])

SQLstring = [Ô]update tb_orcamentos set [Ô] & _
[Ô]dt_envio_manutencao=[ô][Ô] & mask_dt_envio.Text & [Ô][ô][Ô] & _
[Ô],dt_receb_orcamento=[ô][Ô] & mask_dt_orc.Text & [Ô][ô][Ô] & _
[Ô],valor_orcamento=[ô][Ô] & strvalor & [Ô][ô][Ô] & _
[Ô] Where codigo= [Ô] & txt_ultimo_registro.Text
Call ExecutarComando(SQLstring)
MessageBox.Show([Ô]atualizado[Ô])
MESTRE 07/07/2017 13:29:47
#475069
isso é erradíssimo imagina depois ter que somar os valores, multiplicar ou um simples Select SUM e etc..

Valores monetários não devem ser String, Varchar etc..

no futuro vai dar uma dor de cabeça isso!!

deve-se trabalhar com decimal !!
ADILSOO 07/07/2017 17:16:33
#475079
Amigo, uma dica, você pode até usar usar o mask, eu particularmente uso, mas na hora de gravar no banco, de um replace e remova os R$, espaços e substitua virgulas por ponto. Use o campo como double.
KURTGU 07/07/2017 17:20:51
#475080
JCM0867 10/07/2017 10:01:51
#475097
No SQL Server uso formato [txt-color=#0000f0]numeric(10,2)[/txt-color]
No Access usava: [txt-color=#0000f0]Número Simples com duas casas[/txt-color]

E no lostfocus do textbox dentro do código coloco
txtMeuValor.Text = CSng(txtMeuValor.Text).ToString([Ô]#,##0.00[Ô])
FILMAN 11/07/2017 10:46:23
#475126
Eu usaria parametros, mas caso queira dessa forma tente assim:

Dim strValor = CDbl(mask_valor.Text.Replace([Ô]R$[Ô],[Ô][Ô]).Replace([Ô]_[Ô],[Ô][Ô])).ToString([Ô]#0.00[Ô])

SQLstring = [Ô]UPDATE tb_orcamentos SET [Ô] & _
[Ô]dt_envio_manutencao=[ô][Ô] & mask_dt_envio.Text & [Ô][ô],[Ô] & _
[Ô]dt_receb_orcamento=[ô][Ô] & mask_dt_orc.Text & [Ô][ô],[Ô] & _
[Ô]valor_orcamento = [Ô] & strValor.Replace([Ô],[Ô],[Ô].[Ô]) & _
[Ô] Where codigo = [Ô] & txt_ultimo_registro.Text

Call ExecutarComando(SQLstring)
MessageBox.Show([Ô]atualizado[Ô])


Isso levando em consideração que você já está validando as informações de preenchimento do campo pelo usuário e que o seu campo valor_orcamento no banco de dados seja tipo moeda.

Espero ter ajudado
Faça seu login para responder