Arredondamento do Tipo Moeda

Delphi

02/08/2006

Olá pessoal, tudo bem? Espero que sim.

Vou já postar duas dúvidas aqui.

Uma delas, até dei uma olhada pelo fórum, mas não consegui entender direito.

Tenho um campo do tipo currency. No Firebird coloco como Numeric 8,2. E nas propriedades do ClientDataSet também coloco currency pra true.

Funciona perfeitamente, por exemplo, se eu coloco algum número com vírgula, tipo 6,50, ele transforma pra R$ 6,50.

Mas se eu coloco 6,00 ele transformar só pra 6. Gostaria que ficasse 6,00 mesmo, ou que eu colocasse 6 ele transformarsse pra 6,00. Tenho q mudar alguma propriedade pra fazer isso ou só usando algum código?


Aersoftware

Aersoftware

Curtidas 0

Respostas

Marcelo_mileris

Marcelo_mileris

02/08/2006

Talvez se vc alterar o [b:af29e76094]DisplayFormat[/b:af29e76094] dele para [b:af29e76094]#0.00[/b:af29e76094] dê certo


GOSTEI 0
Aersoftware

Aersoftware

02/08/2006

Não funcionou Marcelo. A única coisa que mudou foi que, colocando isso, o R$ some. Mas mesmo assim não consigo colocar ,00.


GOSTEI 0
Paullsoftware

Paullsoftware

02/08/2006

esperimente assim:

Escreva esse código no evento OnGetText do field desejado, selecionando ele através do Fields Editor do seu dataset...
if Sender.Value <> null then
Text := FormatFloat(´#,,0.00´,Sender.Value);

espero ter ajudado :wink:


GOSTEI 0
Paullsoftware

Paullsoftware

02/08/2006

esperimente assim: Escreva esse código no evento OnGetText do field desejado, selecionando ele através do Fields Editor do seu dataset...
if Sender.Value <> null then
Text := FormatFloat(´#,,0.00´,Sender.Value);
espero ter ajudado :wink:


esqueci, para mostrar o [b:2429d1d60d]R$[/b:2429d1d60d] basta você incluir ele antes do FormatFloat assim:
if Sender.Value <> null then
Text := ´R$ ´ + FormatFloat(´,,0.00´,Sender.Value);



GOSTEI 0
Aersoftware

Aersoftware

02/08/2006

Valeu paullsoftware.

Funcionou perfeitamente.. abraços. :D


GOSTEI 0
Aersoftware

Aersoftware

02/08/2006

Ops, deu um erro.. hehe..

Se eu insiro um registro, quando eu coloco o valor no campo e saio dele, o valor some, mas grava. Se eu salvar o registro, na visualização aparece, e depois quando eu entro pra ´editar´ o registro também aparece. Só quando insiro que nao aparece.

Tive que fazer uma pequena adaptação no código pq quando rodo o programa dá erro no ´Null´, dizendo que é:

[Error] UDmDados.pas(854): E2003 Undeclared identifier: ´null´


Aí fiz assim (tb pra nao dar erro quando eu nao tiver nenhum registro.

  if DmDados.ClientEdicoesNacionais.RecordCount <> 0 then
    if Sender.Value <> ´´ then
      Text := ´R$ ´ + FormatFloat(´,,0.00´,Sender.Value);



Outro erro que dá, quando eu tenho por exemplo ´R$ 6,90´, aí quero só ´R$ 6,00´, nao consigo apagar o ´,90´ e deixar o R$ 6, pq dá erro, acho que é por causa do ´R$´, o erro é:

´R$ 6 is not a valid BDC value´



GOSTEI 0
Marco Salles

Marco Salles

02/08/2006

su uma perguntinha amigo AerSoftware , antes de manipular os evento ongettext e onsetText , faça o seguinte.

1)va no FieldsEditor do ClientDataset 2)e selecione o campo ... 3)No Objeto inspector do campo , tem uma propriedade currency 4)Coloque -a para true. Na maioria das vezes resolve



GOSTEI 0
Paullsoftware

Paullsoftware

02/08/2006

[quote:fea598ee1d=´Marco Salles´]
1)va no FieldsEditor do ClientDataset 2)e selecione o campo ... 3)No Objeto inspector do campo , tem uma propriedade currency 4)Coloque -a para true. Na maioria das vezes resolve
[/quote:fea598ee1d]

bem lembrado marcos, isso mesmo, se vc está usando tipo de dados float, decimal, ou compativel... é somente mudar currency para TRUE!!


GOSTEI 0
Aersoftware

Aersoftware

02/08/2006

Colegas Marco Salles e paullsoftware,

Eu já tinha modificado essa propriedade do campo pra True. E como falei, com números com vírgula ele funciona, mas se o número é redondo, ele tira o ´,00´, que eu gostaria de deixar.

Será que esse código não funcionaria talvez no evento OnExit do componente que digito o valor?


GOSTEI 0
Marco Salles

Marco Salles

02/08/2006

Tenho um campo do tipo currency. No Firebird coloco como Numeric 8,2. E nas propriedades do ClientDataSet também coloco currency pra true.


eu não tinha notado....

[b:70149e9931]é com esta sua configuraçãoe regionais ?????[/b:70149e9931]


GOSTEI 0
Aersoftware

Aersoftware

02/08/2006

Esta tudo normal, Marco.

Tanto que ele funciona perfeitamente se deixar somente a propriedade Currency como True.

Qualquer número com vírgula ele exibe normal, com o R$ na frente. Só que um número inteiro, ele come o ´,00´, exibido só o R$ e o número, mesmo que eu digite o ,00, ele nao assume.


GOSTEI 0
Marco Salles

Marco Salles

02/08/2006

voce tem algum evento OnDrawColumnCell na Grid :?: :?:


GOSTEI 0
Aersoftware

Aersoftware

02/08/2006

[quote:6fb11b4ad8=´Marco Salles´]voce tem algum evento OnDrawColumnCell na Grid :?: :?:[/quote:6fb11b4ad8]

Tenho sim, Marco.

Tenho um evento pra zebrar a grid.

Só que não exibo esse campo na Grid. Só listo nela o Nome. Tenho dois forms, um de visualização e outro de cadastros. E no de visualização eu exibo os dados em um Label.


GOSTEI 0
POSTAR