Gravar no BD com apenas 02 casas decimais
[color=brown:c6168e1b50]OLÁ,
:P ESTOU MUITO FELIZ EM ESTAR PARTICIPANDO DESTE FÓRUM, ESTE É O MEU PRIMEIRO ACESSO. JÁ TENHO UMA PERGUNTA.[/color:c6168e1b50]
USO O BD ACCESS. TENHO UMA TABELA COM UM CAMPO DO TIPO MOEDA.
QUANDO DIVIDO POR EXEMPO:
29/12 O RESULTADO É: 2,4166666... ONDE NA TABELA DO BD É GRAVADO EXATAMENTE ASSIM. COMO FAÇO PARA QUE O VALOR SEJA GRAVADO SOMENTE COM 02 CASAS DECIMAIS? QUE NA DIVISÃO ACIMA SERIA GRAVADO 2,42?
DESDE JÁ AGRADEÇO...
[i:c6168e1b50]Título em maiúsculas editado. Digite sua mensagem em minúsculas. Leia as [url=http://delphiforum.icft.com.br/forum/viewtopic.php?t=6689&sid=add834b4ed94967502cf2381c38e751a][u:c6168e1b50]Regras de Conduta[/u:c6168e1b50][/url]. (marcelo.c – Moderador)[/i:c6168e1b50]
:P ESTOU MUITO FELIZ EM ESTAR PARTICIPANDO DESTE FÓRUM, ESTE É O MEU PRIMEIRO ACESSO. JÁ TENHO UMA PERGUNTA.[/color:c6168e1b50]
USO O BD ACCESS. TENHO UMA TABELA COM UM CAMPO DO TIPO MOEDA.
QUANDO DIVIDO POR EXEMPO:
29/12 O RESULTADO É: 2,4166666... ONDE NA TABELA DO BD É GRAVADO EXATAMENTE ASSIM. COMO FAÇO PARA QUE O VALOR SEJA GRAVADO SOMENTE COM 02 CASAS DECIMAIS? QUE NA DIVISÃO ACIMA SERIA GRAVADO 2,42?
DESDE JÁ AGRADEÇO...
[i:c6168e1b50]Título em maiúsculas editado. Digite sua mensagem em minúsculas. Leia as [url=http://delphiforum.icft.com.br/forum/viewtopic.php?t=6689&sid=add834b4ed94967502cf2381c38e751a][u:c6168e1b50]Regras de Conduta[/u:c6168e1b50][/url]. (marcelo.c – Moderador)[/i:c6168e1b50]
N_valdo
Curtidas 0
Respostas
Brnz
21/10/2003
Provavelmente deve ter um jeito melhor...
mas poderia ser feito assim...
campoasergravado:=strtofloat(format(´¬n´, [(29/12)]));
Spero ter ajudado...
BRNz...
mas poderia ser feito assim...
campoasergravado:=strtofloat(format(´¬n´, [(29/12)]));
Spero ter ajudado...
BRNz...
GOSTEI 0
Blivio
21/10/2003
Existe uma função chamada RoundTo, na unit Math (eu uso o Delphi 6, não sei as versões anteriores têm). Para testar, faça o seguinte no evento OnClick de um botão qualquer:
Showmessage( FloatToStr( RoundTo(29/12, -2) ) );
Obs.: O valor retornado pela função RoundTo é do tipo Double e lembre-se de adicionar à uses, a unit [b:4149ed3b9b]Math[/b:4149ed3b9b].
Espero ter ajudado.
Breno Tavares
Showmessage( FloatToStr( RoundTo(29/12, -2) ) );
Obs.: O valor retornado pela função RoundTo é do tipo Double e lembre-se de adicionar à uses, a unit [b:4149ed3b9b]Math[/b:4149ed3b9b].
Espero ter ajudado.
Breno Tavares
GOSTEI 0
N_valdo
21/10/2003
Estou usando o exemplo abaixo para gravar no BD com apenas 2 casas decimais:
campoasergravado:=strtofloat(format(´¬n´, [(29/12)]));
O problema é o seguinte: quando a divisão dá um número com mais de 3 casas antes da vírgula, ou seja, até o valor 999,99 Ok, mas a partir de 1000,00 dá a seguinte mensagem: ´Este valor 1253,53 não é um valor de ponto flutuante válido.´
O que está errado?
Enivaldo
-------------------------------------------------------------------------
´A única coisa permanente no mundo é a mudança.´
(Heráclitos, séculos V a.c.)
campoasergravado:=strtofloat(format(´¬n´, [(29/12)]));
O problema é o seguinte: quando a divisão dá um número com mais de 3 casas antes da vírgula, ou seja, até o valor 999,99 Ok, mas a partir de 1000,00 dá a seguinte mensagem: ´Este valor 1253,53 não é um valor de ponto flutuante válido.´
O que está errado?
Enivaldo
-------------------------------------------------------------------------
´A única coisa permanente no mundo é a mudança.´
(Heráclitos, séculos V a.c.)
GOSTEI 0
Blivio
21/10/2003
Tente usar a função RoundTo que eu mencionei anteriormente e diga se funciona.
GOSTEI 0
Tnaires
21/10/2003
Vá na sua tabela e abra o Fields Editor. Selecione o campo e edite essas duas propriedades: DisplayFormat e EditFormat para #0.00. Consulte o help q lá tem explicando as strings de formato.
Sucesso
Sucesso
GOSTEI 0
N_valdo
21/10/2003
Uso Delphi 5 e a função RoundTo não funcionou no mesmo, fiz tudo certinho, inclui a unit mencionada no uses, mas não deu certo! Ajudem-me por favor, como faço para solucionar esse problema.
Enivaldo
--------------------------------------------------------------------------
´A única coisa permanente no mundo é a mudança´
(Heráclitos, século V A.c.)
Enivaldo
--------------------------------------------------------------------------
´A única coisa permanente no mundo é a mudança´
(Heráclitos, século V A.c.)
GOSTEI 0
Tnaires
21/10/2003
Enivaldo
Tente a sugestão acima q escrevi
Sucesso
Tente a sugestão acima q escrevi
Sucesso
GOSTEI 0
N_valdo
21/10/2003
tnaires,
Mesmo assim continua dando erro. Me ajude, please!
Enivaldo
-------------------------------------------------------------
´A única coisa permanente no mundo é a mudança´
(Heráclitos, século V a.c.)
Mesmo assim continua dando erro. Me ajude, please!
Enivaldo
-------------------------------------------------------------
´A única coisa permanente no mundo é a mudança´
(Heráclitos, século V a.c.)
GOSTEI 0
Tnaires
21/10/2003
Foi mal enivaldo falha minha
Essas propriedades só ajustam a maneira como os dados são visualizados no form.
Vc falou q usa Access certo? Então vá na sua tabela cujo campo é do tipo moeda e ajuste a propriedade ´casas decimais´ para 2.
Abraços
Essas propriedades só ajustam a maneira como os dados são visualizados no form.
Vc falou q usa Access certo? Então vá na sua tabela cujo campo é do tipo moeda e ajuste a propriedade ´casas decimais´ para 2.
Abraços
GOSTEI 0
N_valdo
21/10/2003
Não dá certo, pois, quando abro a tabela no Access, visualmente o campo está com 02 casas, mas na verdade está gravado no campo todas as casas, que aparecem quando dou um click no campo.
Enivaldo
--------------------------------------------------------------------
´A única coisa permanente no mundo é a mudança´
(Heráclitos, século V a.c)
Enivaldo
--------------------------------------------------------------------
´A única coisa permanente no mundo é a mudança´
(Heráclitos, século V a.c)
GOSTEI 0