Arredondamento - Alguem já viu isso??

16/03/2006

Boa Tarde...

Estou com um dilema. Possuo uma DBGrid, e uma determinada coluna eu tenho que digitar a quantidade do produto, essa quantidade é uma decimal.
Se eu colocar 5,29, a bendita DbGrid preenche 5,2900000065441 gostaria de saber como posso resolver esse problema. Abaixo segue o código da minha tentativa não sucedida...


  
if (DBGrid2.SelectedIndex = 4) and (Key = #9) then
    begin
      sCampo := DBGrid2.Fields&91;3&93;.AsFloat;
      sCampo := Round(sCampo*100)/100;
      DBGrid2.Fields&91;3&93;.AsFloat := sCampo;
    end


Ele até executa o código, porém na Grid ainda mantém o valor com todas as casas decimais...


agradeço a atenção


Facc

Respostas

16/03/2006

Paullsoftware

tente assim:
if (DBGrid2.SelectedIndex = 4) and (Key = #9) then
begin
sCampo := DBGrid2.Fields[3].AsFloat;
sCampo := Round(sCampo*100)/100;
DBGrid2.Fields[3].AsString := FormatFloat(´,,0.00´,sCampo);
end


Responder Citar

16/03/2006

Marco Salles

Bem , pode ate dar certo o que o Paulo Lhe sugeriu , mas acho que as Informações sobre o tipo de Banco , O tipo do Dado , os Componentes de Acesso etc , devem serem informadas


Responder Citar

16/03/2006

Facc

tente assim: if (DBGrid2.SelectedIndex = 4) and (Key = #9) then begin sCampo := DBGrid2.Fields[3].AsFloat; sCampo := Round(sCampo*100)/100; DBGrid2.Fields[3].AsString := FormatFloat(´,,0.00´,sCampo); end



Valeu pela ajuda amigo...


Consegui resolver por outro modo

no proprio campo da Query, eu coloquei
,,0.00
nos eventos DisplayFormat e EditFormat.


Responder Citar

16/03/2006

Paullsoftware

f (DBGrid2.SelectedIndex = 4) and (Key = #9) then 
begin 
sCampo := DBGrid2.Fields&91;3&93;.AsFloat; 
sCampo := Round(sCampo*100)/100; 
DBGrid2.Fields&91;3&93;.AsString := FormatFloat(´,,0.00´,sCampo); 
end

Bem , pode ate dar certo o que o Paulo Lhe sugeriu , mas acho que as Informações sobre o tipo de Banco , O tipo do Dado , os Componentes de Acesso etc , devem serem informadas
correto Marcos, pois, se a informação vem do campo de uma tabela, se esse campo for do tipo, Numeric, Float, Currency ou semelhante... basta mudar a propriedade [b:1e794ef0d2]Currency[/b:1e794ef0d2] do campo para [b:1e794ef0d2]TRUE[/b:1e794ef0d2]..


Responder Citar

17/03/2006

Alexandre_torres

tenta mutiplicar o Round por 10 e dividir por 10

T+


Responder Citar

17/03/2006

Aroldo Zanela

Colega,

Existem diversas formas, algumas já apresentadas. Posso citar também:

if (DBGrid2.SelectedIndex = 4) and (Key = #9) then
begin
  DBGrid2.Fields&91;3&93;.AsCurrency := Trunc(DBGrid2.Fields&91;3&93;.AsCurrency*100)/100;
end;



Responder Citar