SALVAR VALORES EM REAIS
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[Ô])
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[Ô])
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 !!
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 !!
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.
Aqui uma solução....Textbox em Formato moeda...
https://sites.google.com/site/programacaoonline/family-blog/vb-net/textbox-com-mascara-moeda-em-vb-net
https://sites.google.com/site/programacaoonline/family-blog/vb-net/textbox-com-mascara-moeda-em-vb-net
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[Ô])
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[Ô])
Eu usaria parametros, mas caso queira dessa forma tente assim:
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
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