Truncar

24/09/2016

0

Amigos estou fazendo a seguinte DIVISAO

EDIT1.TEXT = 87 // valor a dividir

EDIT2.TEXT = resultado


Aqui ao dividir 87 por 11 vai da um resultado de 7, pois o valor foi "TRUNCADO"
Edit2.Text := CurrToStr(Trunc(StrToCurr(Edit1.Text) / 11));


ao gravar no banco, esta salvando o valor 8


ja mudei na tabela o campo para varchar,, pois estava numerico, e continuou o mesmo resultado que e 8, e nao 7 que e o da divisao


ou seja no formulario esta mostrando o resultado 7, e no banco esta gravando como 8

ele esta arredondando na hora de gravar no banco



eu nao quero que arredonde,

como resolver nesse caso??


Gratos.
Valtenci Santos

Valtenci Santos

Responder

Posts

24/09/2016

Leandro

Eu recomendo você usar o tipo real, sendo assim ele não vai arredondar para o 8.
Eu também vou estar deixando uma dica...
Antes de inserir no delphi em sua Query, teste primeiro no SQL... Sempre teste no SQL Antes de mais nada ok ?

Talvez precise fazer um cast ou convert para obter as casas decimais desejadas, segue o link para obter ajuda hahaha se precisar estamos ai, so chamar.
https://msdn.microsoft.com/pt-br/library/ms187928.aspx
Responder

24/09/2016

Raimundo Pereira

Bom dia,

De ambas formas, foi inserido 7,00

var rs:real;
begin

rs:=Trunc(StrToCurr(Edit1.Text) / 11);
Edit2.Text := CurrToStr(rs);
cds.Insert;
cds.FieldByName('valor').AsCurrency:=rs;

ou

Edit2.Text:=CurrToStr(Trunc(StrToCurr(Edit1.Text) / 11));
cds.Insert;
cds.FieldByName('valor').AsCurrency:=StrToCurr(Edit2.Text);

Aconselho também testar o código no sql ou debugar o fonte para perceber em que momento ele transforma o valor em 8,00
Responder

24/09/2016

Valtenci Santos

Obrigado pelas dicas, desde já agradeço.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar