Arredondamento no delphi 7

Delphi

26/05/2006

Arredondamento

Tenho um apliocativo para revendedora de Pneus, utilizo o banco de dados firebird 1.5.3, delphi 7 e utilizo os

componentes do dbexpress (tsqldaset,TdatsetProvider,TclientDataset,Tdatasource)
Problema tenho uma grid que o usuario digita o codigo do produto, a quantidade, o valor unitario, e o percentual

de desconto unitario e o programa calcula o valor total de cada item ex.
Quantidade 1
Valor unitario 8.06
¬ de Desconto 10,70
Total = 7.20

Ou seja o resultado final é 7.197 o programa arredonda para 7.20 tudo perfeito

Mas tenho uma trigger que calcula o valor total de todos os itens digitados e grava o valor total na tabela

pedido, este campo e numerico(12,2), entro no ibexpert digito (select vrtotal from pedido where pedido = 100)
o retorno e 7.20 perfeito....
No delphi tenho este mesmo comando para mostrar o valor total dos itens digitados e mostra o valor 7.19 e chamo
uma tela para digitar o financeiro e programa transfere o0 valor de 7.19 com a diferenca de 0.01 centavo...
A pergunta é a seguinte tem alguma propriedade dos componentes que eu utilizo que eu tenho que alterar para

trazer o valor arredondado????? tenho que utilizar alguma função para eu resolver este problema......

Gostaria de receber ajuda dos colegas do portal para me ajudar a resolver este problema....


Grato pela atenção


Plácido Parussulo Netto


Placido

Placido

Curtidas 0

Respostas

Rui Lisboa

Rui Lisboa

26/05/2006

Amigo faz o Seguinte:

FormatCurr(´#,,,,0.00´,val);

Val=valor;


GOSTEI 0
Placido

Placido

26/05/2006

Rui boa tarde!
Obrigado pela atenção, mas é exatamente isto que eu faço, veja o comando abaixo no delphi..

If (edtConsulta.text <> ´´) then
begin
dbCodigo.Visible := True;
cdsMestre.Close;
sdsMestre.Close;
sdsMestre.ParamByName(´EMP_CODIGO´).AsInteger := FrmPrincipalSGCAdm.CodEmpresa;
sdsMestre.ParamByName(´PED_NUMEROOPERACAO´).AsInteger := StrToInt(edtConsulta.text);
sdsMestre.Open;
cdsMestre.Open;
HabilitaBotao(ExcluirBTN);
FormatCurr(´#,,,,0.00´,cdsMestrePED_VRLIQUIDO.AsFloat);
end;



Continua mostrando o valor de 7.19 sem o arredondamento....

Grato pela atenção

Plácido


GOSTEI 0
Rui Lisboa

Rui Lisboa

26/05/2006

Então deve ter a ver com isto, com estas personalizações.

Painel de Controlo ------ Opções Regionais e de Idioma.

Aqui tem uma casa que é o numero de casas decimais.

So pode ser.

Porque o meu está a trabalhar a 100¬.

Depois diga algo.


GOSTEI 0
Paullsoftware

Paullsoftware

26/05/2006

é simples de resolver amigo, tente assim:

Quando formatamos os valores do tipo float, a Máskara que vem depois do # final (0.00) é o numero de casas decimais que desejamos no valor por tanto ai vai alguns exemplos:
Coloque um Edit e um Button
no OnCLick do button faça:

//Com uma casa decimal
Edit1.Text := FormatFloat(´,,0.0´,StrToFloat(Edit1.Text))
//A linha acima aredonda o valor e deixa uma casa decimal

Outro exemplo
//Com duas casas decimais
Edit1.Text := FormatFloat(´,,0.00´,StrToFloat(Edit1.Text))
//A linha acima aredonda o valor e deixa uma casa decimal

Outro exemplo
//Sem casas decimais
Edit1.Text := FormatFloat(´,,0´,StrToFloat(Edit1.Text))
//A linha acima aredonda o valor e deixa uma casa decimal

espero ter ajudado :wink:


GOSTEI 0
POSTAR