Gravar no BD com apenas 02 casas decimais

Delphi

21/10/2003

[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]


N_valdo

N_valdo

Curtidas 0

Respostas

Brnz

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...


GOSTEI 0
Blivio

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


GOSTEI 0
N_valdo

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.)


GOSTEI 0
Blivio

Blivio

21/10/2003

Tente usar a função RoundTo que eu mencionei anteriormente e diga se funciona.


GOSTEI 0
Tnaires

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


GOSTEI 0
N_valdo

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.)


GOSTEI 0
Tnaires

Tnaires

21/10/2003

Enivaldo
Tente a sugestão acima q escrevi
Sucesso


GOSTEI 0
N_valdo

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.)


GOSTEI 0
Tnaires

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


GOSTEI 0
N_valdo

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)


GOSTEI 0
POSTAR