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.
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
Curtir tópico
+ 0
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
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
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
Clique aqui para fazer login e interagir na Comunidade :)