CAMPO COM SEPARADOR DE MILHARES NO FB
Ai malta xto cm um probleminha
Alterei um campo de double precision para numeric afim de aceitar valor como 900.000,05. Porém há um choque porque a text box que despeja esse valor ao campo na BD formata o valor digitado: [Ô]##,###.#0[Ô] acontece que ao enviar o numero a BD da erro!! so aceita caso o numero digitado seja por ex 900000.05 . So que neste caso é complicado porque tem usuarios que digitam ja o numero com a divisão de milhares e isso está a criar um erro grave!! Alguem tem uma solução para isto??
Alterei um campo de double precision para numeric afim de aceitar valor como 900.000,05. Porém há um choque porque a text box que despeja esse valor ao campo na BD formata o valor digitado: [Ô]##,###.#0[Ô] acontece que ao enviar o numero a BD da erro!! so aceita caso o numero digitado seja por ex 900000.05 . So que neste caso é complicado porque tem usuarios que digitam ja o numero com a divisão de milhares e isso está a criar um erro grave!! Alguem tem uma solução para isto??
faz o seguinte....dexa o usuario digitar o Milhar normal...quando voce for salvar faz um tratamento nesse campo....exemplo...
Valor = Replace(Replace(txtValor.text,[Ô].[Ô],[Ô][Ô]),[Ô],[Ô],[Ô][Ô])
Valor = Format(Valor,[Ô]0.00[Ô])
Valor = Raplace(Valor,[Ô],[Ô],[Ô][Ô])
isso deve resolver seu problema.....e claro...no banco de Dados vai ficar assim 90000.05..dai quando vc for mostrar os Dados..voce
formatade novo......Valor = format(Valor,[Ô]###,##0.00[Ô]) = 90.000,05
Valor = Replace(Replace(txtValor.text,[Ô].[Ô],[Ô][Ô]),[Ô],[Ô],[Ô][Ô])
Valor = Format(Valor,[Ô]0.00[Ô])
Valor = Raplace(Valor,[Ô],[Ô],[Ô][Ô])
isso deve resolver seu problema.....e claro...no banco de Dados vai ficar assim 90000.05..dai quando vc for mostrar os Dados..voce
formatade novo......Valor = format(Valor,[Ô]###,##0.00[Ô]) = 90.000,05
Ok Fernando vou tentar isso ainda hoje, caso funcione eu encerrarei o tópico
obrigado!
obrigado!
da uma melhorada nisto:
Valor = Replace(Replace(txtValor.text,[Ô].[Ô],[Ô][Ô]),[Ô],[Ô],[Ô][Ô])
Valor = Format(Valor,[Ô]0.00[Ô])
Valor = Raplace(Valor,[Ô],[Ô],[Ô][Ô])
valor=replace(cdbl(txtvalor.text),[Ô],[Ô],[Ô].[Ô]) <----o cdbl() tira o milhar e o replace troca virgula por ponto; eu uso direto na instrução sql:
insert into tabela (codigo,valor) values ([Ô] & txtcodigo & [Ô],[Ô] & replace(cdbl(txtvalor.text),[Ô],[Ô],[Ô].[Ô]) & [Ô] )
fica mais limpo e funcional.......
Valor = Replace(Replace(txtValor.text,[Ô].[Ô],[Ô][Ô]),[Ô],[Ô],[Ô][Ô])
Valor = Format(Valor,[Ô]0.00[Ô])
Valor = Raplace(Valor,[Ô],[Ô],[Ô][Ô])
valor=replace(cdbl(txtvalor.text),[Ô],[Ô],[Ô].[Ô]) <----o cdbl() tira o milhar e o replace troca virgula por ponto; eu uso direto na instrução sql:
insert into tabela (codigo,valor) values ([Ô] & txtcodigo & [Ô],[Ô] & replace(cdbl(txtvalor.text),[Ô],[Ô],[Ô].[Ô]) & [Ô] )
fica mais limpo e funcional.......
eu sei que fica limpo e funcional....mas dica é dica....depois é por conta dele.....
Só para complementar o Fernando e o Futura:
Os valores são gravados sem os separadores de milhar e com o [Ô].[Ô] separando os decimais.
Independentemente do banco de dados, vc sempre precisará tratar o campo antes de enviar para o banco. Vc pode criar uma função que faça isso sempre que vc precisar:.
Quanodo vc retorar o dado, se o seu campo possuir uma máscará e esta for capaz de interpretar o dado, dará tudo certo, do contrário, vc formata no código e pronto.
Isso vale para os campos timestamp, date, numeric, integer, doubleprecision.
A! Consulte no macoratti sobre isso que ele lhe dá umas dicas sobre arredondamento, pois, dependendo do tipo do campo, vc terá problemas com os pontos flutuantes.
Os valores são gravados sem os separadores de milhar e com o [Ô].[Ô] separando os decimais.
Independentemente do banco de dados, vc sempre precisará tratar o campo antes de enviar para o banco. Vc pode criar uma função que faça isso sempre que vc precisar:.
Quanodo vc retorar o dado, se o seu campo possuir uma máscará e esta for capaz de interpretar o dado, dará tudo certo, do contrário, vc formata no código e pronto.
Isso vale para os campos timestamp, date, numeric, integer, doubleprecision.
A! Consulte no macoratti sobre isso que ele lhe dá umas dicas sobre arredondamento, pois, dependendo do tipo do campo, vc terá problemas com os pontos flutuantes.
Tópico encerrado , respostas não são mais permitidas