Arredondamento do Tipo Moeda
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?
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
Curtidas 0
Respostas
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
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
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...
espero ter ajudado :wink:
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
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...
espero ter ajudado :wink:
if Sender.Value <> null then Text := FormatFloat(´#,,0.00´,Sender.Value);
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
02/08/2006
Valeu paullsoftware.
Funcionou perfeitamente.. abraços. :D
Funcionou perfeitamente.. abraços. :D
GOSTEI 0
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 é:
Aí fiz assim (tb pra nao dar erro quando eu nao tiver nenhum registro.
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 é:
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
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
02/08/2006
[quote:fea598ee1d=´Marco Salles´]
bem lembrado marcos, isso mesmo, se vc está usando tipo de dados float, decimal, ou compativel... é somente mudar currency para TRUE!!
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
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?
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
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
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.
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
02/08/2006
voce tem algum evento OnDrawColumnCell na Grid :?: :?:
GOSTEI 0
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.
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