Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal to com um problema aqui.
Eu to fazendo um calculo para armezenar no BD um valor. A rotina é esta:
valor : Double;
valor_d: String;
valor := quantidade * StrToFloat(dbeValor.Text);
valor_d := FormatFloat('###,##0.00',valor);
Feito isso eu armazeno o valor de valor_d no BD MySQL, o campo que estou usando é Decimal(10,2).
Eu mando exibir uma mensagem com o valor_d, e ele exibe 2,30. O problema é no BD, só fica armazenado 2,3 sem o zero no final.
O que está errado?
>
Sou iniciante em MySQL mas acho que a declaração do campo como Decimal não vai dar certo, acho eu q o certo seria em Real.
Estou acompanhando sua dúvida para aprender um pouco !!!
Olá wllf, espero que consiga resolver. Mas mudando o tipo do campo para Float dá na mesma.
E tentei mudar a variavel de Double para Real e continuou ...
E pra ajudar agora quando vou cadastrar 2,30 ele está arredondando para 2,0.
caro JonatasFn, ele apaga o "Zero" do final pois "2,30" e "2,3" são exatamente a mesma coisa. O Zero não esta para as casas decimais assimo como esta para os numeros inteiros (20, 30). Existem duas maneiras de se resolver isso. Uma delas é formatando o numero para adicionar o zero e a outra é salvar o numero como outro formato (varchar).
>
caro JonatasFn, ele apaga o "Zero" do final pois "2,30" e "2,3" são exatamente a mesma coisa. O Zero não esta para as casas decimais assimo como esta para os numeros inteiros (20, 30). Existem duas maneiras de se resolver isso. Uma delas é formatando o numero para adicionar o zero e a outra é salvar o numero como outro formato (varchar).
Olá Raficcha, sobre os numeros eu já havia sacado, o problema é a estetica disto. Pois não existe R$2,3 mas sim R$2,30.
Usar varchar creio que irá dar mais trabalho pois preciso fazer calculos com estes valores e para isso precisarei tratar os dados para obter resultados, sendo que usando decimal, posso simplesmente fazer calculos diretamente usando query.
você já me ajudou muito aqui no forum. O que você me propõe como solução?
Onde você precisa exibir estes dados? Em edits? Porque não os formata na hora de exibí-los?
[]'s
>
Onde você precisa exibir estes dados? Em edits? Porque não os formata na hora de exibí-los?
[]'s
Vou exibir em um DBGrid.
JonatasFn, olha so o que encontrei pra você. Lembrei de uma função chamada FormatFloat, mas não me lembro muito bem como utilizar. Então procurei no Google e encontrei isto:
http://www.delphibasics.co.uk/RTL.asp?Name=FormatFloat
Espero que ajude.
:D
>
JonatasFn, olha so o que encontrei pra você. Lembrei de uma função chamada FormatFloat, mas não me lembro muito bem como utilizar. Então procurei no Google e encontrei isto:
http://www.delphibasics.co.uk/RTL.asp?Name=FormatFloat
Espero que ajude.
:D
Valeu Raficcha! Eu já estava usando esta função(código acima), mas vou dar uma olhada.
O que eu não sei é como colocar isso no DBGrid.
Pra me ajudar, agora o BD tá arredondando. Assim eu insiro 2,3 ele tá arredondando para 2,0.
O que eu mexi que bichou o campo?
>
Pra me ajudar, agora o BD tá arredondando. Assim eu insiro 2,3 ele tá arredondando para 2,0.
O que eu mexi que bichou o campo?
Fala grande JonataFn beleza? Ja conseguiu resolver seu problema?
Se não conseguiu ainda tente o seguinte.
Primeiramente no BD volte o campo para DECIMAL(10,2). Nos meus sistemas utilizo DECIMAL(18,2).
E com relação a estetica de aparecer R$ 2,3 ou R$ 2,30 é só formatar o campo diretamente no objeto TQuery(TSQLQuery, TZQuery, TADOQuery) ai nao importa que componente você use (DBGrid, DBEdit, etc) aparecerá sempre formatado.
Vou tentar fazer uma explicação mais passo a passo de como formatar no TQuery, vamos lá:
1º - Defina a consulta SQL no componente TQuery, por exemplo " SELECT FROM TABELA "*
2º - Clique duas vezes sobre o componente TQuery, uma pequena telinha com um listbox se abrirá
3º - Clique com o botão direito sobre essa tela e clique em " Add all fields "
4º - Selecione o campo que deseja formatar
5º - Nas propriedades dele haverá uma chamada currency modifique-a para TRUE
Acho que é isso ai, qualquer coisa posta ai... http://forum.imasters.com.br/public/style_emoticons/default/natal_happy.gif
>
>
Pra me ajudar, agora o BD tá arredondando. Assim eu insiro 2,3 ele tá arredondando para 2,0.
O que eu mexi que bichou o campo?
Fala grande JonataFn beleza? Ja conseguiu resolver seu problema?
Se não conseguiu ainda tente o seguinte.
Primeiramente no BD volte o campo para DECIMAL(10,2). Nos meus sistemas utilizo DECIMAL(18,2).
E com relação a estetica de aparecer R$ 2,3 ou R$ 2,30 é só formatar o campo diretamente no objeto TQuery(TSQLQuery, TZQuery, TADOQuery) ai nao importa que componente você use (DBGrid, DBEdit, etc) aparecerá sempre formatado.
Vou tentar fazer uma explicação mais passo a passo de como formatar no TQuery, vamos lá:
1º - Defina a consulta SQL no componente TQuery, por exemplo " SELECT FROM TABELA "*
2º - Clique duas vezes sobre o componente TQuery, uma pequena telinha com um listbox se abrirá
3º - Clique com o botão direito sobre essa tela e clique em " Add all fields "
4º - Selecione o campo que deseja formatar
5º - Nas propriedades dele haverá uma chamada currency modifique-a para TRUE
Acho que é isso ai, qualquer coisa posta ai... http://forum.imasters.com.br/public/style_emoticons/default/natal_happy.gif
Fala Itepi, beleza? Valew pelo post cara... salvou a minha vida. A respeito do campo no BD eu já havia desfeito a cag... que tinha feito no código.
Mas sobre esta opção do currency na query, putz... me saiu melhor que encomenda.
Só me falta testar se o SUM do mysql não dá problemas.
Valew mesmo Itepi!!!!!
>
>
>
Pra me ajudar, agora o BD tá arredondando. Assim eu insiro 2,3 ele tá arredondando para 2,0.
O que eu mexi que bichou o campo?
Fala grande JonataFn beleza? Ja conseguiu resolver seu problema?
Se não conseguiu ainda tente o seguinte.
Primeiramente no BD volte o campo para DECIMAL(10,2). Nos meus sistemas utilizo DECIMAL(18,2).
E com relação a estetica de aparecer R$ 2,3 ou R$ 2,30 é só formatar o campo diretamente no objeto TQuery(TSQLQuery, TZQuery, TADOQuery) ai nao importa que componente você use (DBGrid, DBEdit, etc) aparecerá sempre formatado.
Vou tentar fazer uma explicação mais passo a passo de como formatar no TQuery, vamos lá:
1º - Defina a consulta SQL no componente TQuery, por exemplo " SELECT FROM TABELA "*
2º - Clique duas vezes sobre o componente TQuery, uma pequena telinha com um listbox se abrirá
3º - Clique com o botão direito sobre essa tela e clique em " Add all fields "
4º - Selecione o campo que deseja formatar
5º - Nas propriedades dele haverá uma chamada currency modifique-a para TRUE
Acho que é isso ai, qualquer coisa posta ai... http://forum.imasters.com.br/public/style_emoticons/default/natal_happy.gif
Fala Itepi, beleza? Valew pelo post cara... salvou a minha vida. A respeito do campo no BD eu já havia desfeito a cag... que tinha feito no código.
Mas sobre esta opção do currency na query, putz... me saiu melhor que encomenda.
Só me falta testar se o SUM do mysql não dá problemas.
Valew mesmo Itepi!!!!!
Que isso cara...precisando estamos as ordens....boa sorte ai no seu projeto...abraço!!!
Sou iniciante em MySQL mas acho que a declaração do campo como Decimal não vai dar certo, acho eu q o certo seria em Real.
Estou acompanhando sua dúvida para aprender um pouco !!!