Conversão

Delphi

31/08/2009

Como converto esse valor 102364,78 para R$ 102.364,78, tentei formatfloat mas não fui muito feliz (talvez não usei certo).

Obrigado pela ajuda.


Vand3rson

Vand3rson

Curtidas 0

Respostas

Osocram

Osocram

31/08/2009

showmessage( ´R$ ´+FormatFloat(´,#0.00´,SeuNumero) );


Como converto esse valor 102364,78 para R$ 102.364,78, tentei formatfloat mas não fui muito feliz (talvez não usei certo). Obrigado pela ajuda.



GOSTEI 0
Vand3rson

Vand3rson

31/08/2009

valeu osocram, mas dessa forma o valor fica 10.236.478,00 eu precisso que fique 102.364,78, alguma outra alternativa?


GOSTEI 0
Osocram

Osocram

31/08/2009

valeu osocram, mas dessa forma o valor fica 10.236.478,00 eu precisso que fique 102.364,78, alguma outra alternativa?

como esta o seu codigo?
e como esta vindo esse seu numero?


GOSTEI 0
Vand3rson

Vand3rson

31/08/2009

Esse valor é resultado de uma consulta no banco. E esta vindo assim 102364,78

E estou usando ele assim:
ListItem.SubItems.Add(FormatFloat(´,#0.00´,DMConexao.cdsValidar.FieldByName(´VALOR´).Value));



GOSTEI 0
.lg.

.lg.

31/08/2009

Remova toda essa formatação.
Se o seu Field é um Float... Há uma propriedade chamada [color=blue:93cb63464c]Currency[/color:93cb63464c]. Ative-a e pronto. Ele já formata pro modo de dindin. Faz um teste. :wink:


GOSTEI 0
Vand3rson

Vand3rson

31/08/2009

E ai pessoal, desculpa :oops: ... eu coloquei informação errada ai nos posts anteriores ... o real problema é :

O valor que retorna da consulta no banco é [b:392e8dd45e]10236478[/b:392e8dd45e]


E estou usando o seguinte código:

ListItem.SubItems.Add(FormatFloat(´,#0.00´,DMConexao.cdsValidar.FieldByName(´VALOR´).Value));  


Mas ele me retorna sempre [b:392e8dd45e]10.236.478,00[/b:392e8dd45e] e eu precisso realmente de [b:392e8dd45e]102.364,78[/b:392e8dd45e]

Tentei a dica do [i:392e8dd45e].Lg.[/i:392e8dd45e] e tb não deu muito certo.

Obrigado.


GOSTEI 0
Osocram

Osocram

31/08/2009

Ahhh foi o que eu tinha imaginado.

Mas agora temos algumas coisas a considerar...
1) qual o tipo de dados que vc esta usando no banco p guardar esta informção
2) pq vc nao grava com os decimais?
3) Sempre vai ter 2 decimais? por exemplo 123478 = 1234,78 e 123400 = 1234,00.?

Pois se for assim vc pode fazer uma divisão por 100 antes de fazer o display
ListItem.SubItems.Add(FormatFloat(´,#0.00´, ( DMConexao.cdsValidar.FieldByName(´VALOR´).Value / 100)
                                                   ));


Mas ja aviso isso não é uma solução elegante, provavelmente o banco ae não foi estruturado corretamente.


GOSTEI 0
Rweberich

Rweberich

31/08/2009

Boa tarde,

Como converto esse valor 102364,78 para R$ 102.364,78, tentei formatfloat mas não fui muito feliz (talvez não usei certo).


Faz o seguinte: vai nas propriedades do ´Field´ do seu TQuery que esta lincado a tabela que tem o campo que vc prescisar recuperar o valor em formato moeda, e altere a propriedade ´DisplayFormat´ para ´0.00´.
Ou seja, o valor no banco de dados continuará ´102364,78´, mas sera apresentado nos TDBGrid e em TDBEdit na formato ´R$ 102.364,78´.

(Obs: pra ir nos ´Field´ do TQuery, é so dar um clique duplo no TQuery).

Abraco.


GOSTEI 0
Rweberich

Rweberich

31/08/2009

Boa tarde,

Como converto esse valor 102364,78 para R$ 102.364,78, tentei formatfloat mas não fui muito feliz (talvez não usei certo).


Faz o seguinte: vai nas propriedades do ´Field´ do seu TQuery que esta lincado a tabela que tem o campo que vc prescisar recuperar o valor em formato moeda, e altere a propriedade ´DisplayFormat´ para ´0.00´.
Ou seja, o valor no banco de dados continuará ´102364,78´, mas sera apresentado nos TDBGrid e em TDBEdit na formato ´R$ 102.364,78´.

(Obs: pra ir nos ´Field´ do TQuery, é so dar um clique duplo no TQuery).

Abraco.


GOSTEI 0
Pestana_

Pestana_

31/08/2009

E ai pessoal, desculpa :oops: ... eu coloquei informação errada ai nos posts anteriores ... o real problema é : O valor que retorna da consulta no banco é [b:51ea1888ae]10236478[/b:51ea1888ae] E estou usando o seguinte código:
ListItem.SubItems.Add(FormatFloat(´,#0.00´,DMConexao.cdsValidar.FieldByName(´VALOR´).Value));  
Mas ele me retorna sempre [b:51ea1888ae]10.236.478,00[/b:51ea1888ae] e eu precisso realmente de [b:51ea1888ae]102.364,78[/b:51ea1888ae] Tentei a dica do [i:51ea1888ae].Lg.[/i:51ea1888ae] e tb não deu muito certo. Obrigado.


tente novamente a dica do [b:51ea1888ae].lg.[/b:51ea1888ae] e depois você faça assim:

ListItem.SubItems.Add(DMConexao.cdsValidar.FieldByName(´VALOR´).DisplayText));



GOSTEI 0
Vitor Rubio

Vitor Rubio

31/08/2009

Existe uma variável global chamada DecimalSeparator.

Você pode mudar ela de . pra , ou vice-versa, não esquecendo de desfazer depois. Também tem o record/estrutura format settings.

Mas a melhor coisa é configurar o DisplayFormat do campo, no CDS. E você pode configurar ele como currency também, aí ele já vai formatar com R$ e virgulas e pontos nos lugares certos, dependendo das configurações regionais no painel de controle.

Nunca grave virgulas, pontos ou separadores no banco de dados. No banco de dados o campo deve ser double precision, ou numeric(x,y) onde x é o tamanho de digitos da parte inteira e y é o numero de casas decimais.

Eu pessoalmente prefiro double, porque você pode usar qualquer tipo de número racional e formatar depois. É um campo com faixa de valores bem abrangente.


GOSTEI 0
POSTAR