Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Retornando o erro Invalid Floating Point


edsouzza

Pergunta

procedure TdmBDPregao.tblPropostaCalcFields(DataSet: TDataSet);

begin

VerificaMenorValor; // Verifica qual o menor valor no BD e guarda em Valor_Minimo

dmBDPregao.Percentual.Value:= ((dmBDPregao.fltfldPropostaValPropostoFornecedor.Value - Valor_Minimo));

end;

procedure TdmBDPregao.VerificaMenorValor;

begin

//Verificando o menor Valor de Proposta existente no banco de dados

with dmBDPregao.QryMenorValor do begin

Close;

SQL.Clear;

Sql.Add('Select MIN(ValPropostoFornecedor) from TblProposta');

Open;

end;

// Verifica se a Query retornou um Menor Valor e atribui o mesmo a variavel Valor_Minimo

IF not dmBDPregao.QryMenorValor.IsEmpty then begin

Valor_Minimo:= dmBDPregao.QryMenorValor.Fields[0].AsCurrency;

end;

end;

end.

Esta me retornando o erro Invalid Floating Point

dmBDPregao.Percentual = Float

Valor_Minimo = Currency

dmBDPregao.fltfldPropostaValPropostoFornecedor = Currency

Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0

Pessoal consegui fazer o Campo Calculado, com esta linha

dmBDPregao.Percentual.Value:= ((dmBDPregao.fltfldPropostaValPropostoFornecedor.Value - Valor_Minimo) / Valor_Minimo)*100;

Esta me retornando esse erro 'invalid Floating point operation' o que posso fazer pra resolver isso?

Link para o comentário
Compartilhar em outros sites

  • 0
dmBDPregao.Percentual.Value:= ((dmBDPregao.fltfldPropostaValPropostoFornecedor.Value - Valor_Minimo) / Valor_Minimo)*100;

Esta me retornando esse erro 'invalid Floating point operation' o que posso fazer pra resolver isso?

o seu campo fltfldPropostaValPropostoFornecedor.Value é inteiro e esta recebendo um valor real ( com ponto flutuante )

por isso dá erro

exemplo

procedure TForm1.Button1Click(Sender: TObject);
var num : real; num1, num2  : integer;
begin
   num1 := 2;
   
   // Correto
   num := num1 * 90.5;

   // Errado ( 'invalid Floating point operation' )
   num2 := num1 * 90.5;
end;

end.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Acho que fltfldPropostaValPropostoFornecedor.value recebe um valor currency assim como Valor_Minimo e o Percentual é um valor float.

Ou seja estou pegando dois valores Currency e tentando achar a diferença de percentual entre eles.

Devo converter os valores Currency em Float?

Como devo alterar para resolver?

Grato pela ajuda.

Editado por edsouzza
Link para o comentário
Compartilhar em outros sites

  • 0
Devo converter os valores Currency em Float?

Crie o seu campo calculado como Float

abraço

Pois é amigão. Eu criei o Campo chamado Percentual com Float. É o mesmo campo Percentual citado acima. Mas continua dando o erro.

Esta me dando erro nessa linha:

dmBDPregao.Percentual.Value:= ((dmBDPregao.fltfldPropostaValPropostoFornecedor.Value - Valor_Minimo) / Valor_Minimo)*100;

Então fiz um teste e deixei-a assim:

dmBDPregao.Percentual.Value:= ((dmBDPregao.fltfldPropostaValPropostoFornecedor.Value - Valor_Minimo);

Aqui o procedimento é=> Achar o menor valor desse campo no DataSet e subtrai-lo de cada registro. Funcionou beleza. Como o objetivo é achar o percentual entre os dois valores e acrescento ( / Valor_Minimo)*100;) e a partir dai não funciona e da aquele erro.

Editado por edsouzza
Link para o comentário
Compartilhar em outros sites

  • 0
Esta me dando erro nessa linha:

dmBDPregao.Percentual.Value:= ((dmBDPregao.fltfldPropostaValPropostoFornecedor.Value - Valor_Minimo) / Valor_Minimo)*100;

use o break point com o debugger do delphi para saber quais são os valores encontrados para cada variavel

voce tem que fazer a analise do seu codigo para descobrir o erro

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --edsouzza --
Esta me dando erro nessa linha:

dmBDPregao.Percentual.Value:= ((dmBDPregao.fltfldPropostaValPropostoFornecedor.Value - Valor_Minimo) / Valor_Minimo)*100;

use o break point com o debugger do delphi para saber quais são os valores encontrados para cada variavel

voce tem que fazer a analise do seu codigo para descobrir o erro

abraço

Ok, Grato vou tentar.

Link para o comentário
Compartilhar em outros sites

  • 0

Pessoal, consegui achar o problema e resolvi assim:

if Valor_Minimo <> 0 then begin // Inicialmente não posso dividir nenhum valor por zero

dmBDPregao.Percentual.Value:= ((dmBDPregao.fltfldPropostaValPropostoFornecedor.Value - Valor_Minimo) / valor_minimo)*100;

end;

Agora eu só preciso formatar o valor dmBDPregao.Percentual que esta retornando no Grid o valor por ex: 8,333333333333333333 para 8,33.

Resolvido pessoal. Usei a Propriedade DisplayFormat no meu campo Percentual ( Campo Calculado) . Entrei com esse valor 0.00 e deu tudo certo.

Ufa... Finalmente. Obrigado a todos que me ajudaram.

Editado por edsouzza
Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Germano --

Pessoal consegui fazer o Campo Calculado, com esta linha

dmBDPregao.Percentual.Value:= ((dmBDPregao.fltfldPropostaValPropostoFornecedor.Value - Valor_Minimo) / Valor_Minimo)*100;

Esta me retornando esse erro 'invalid Floating point operation' o que posso fazer pra resolver isso?

Link para o comentário
Compartilhar em outros sites

  • 0
dmBDPregao.Percentual.Value:= ((dmBDPregao.fltfldPropostaValPropostoFornecedor.Value - Valor_Minimo) / Valor_Minimo)*100;

Esta me retornando esse erro 'invalid Floating point operation' o que posso fazer pra resolver isso?

na possibilidade de algum destes campos ser nulo no banco, é mais prudente utilizar o método AsFloat para forçar o tipo retornado e em caso de nulo, será retornado 0:

dmBDPregao.Percentual.AsFloat:= ((dmBDPregao.fltfldPropostaValPropostoFornecedor.AsFloat - Valor_Minimo) / Valor_Minimo)*100;

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
dmBDPregao.Percentual.Value:= ((dmBDPregao.fltfldPropostaValPropostoFornecedor.Value - Valor_Minimo) / Valor_Minimo)*100;

Esta me retornando esse erro 'invalid Floating point operation' o que posso fazer pra resolver isso?

na possibilidade de algum destes campos ser nulo no banco, é mais prudente utilizar o método AsFloat para forçar o tipo retornado e em caso de nulo, será retornado 0:

dmBDPregao.Percentual.AsFloat:= ((dmBDPregao.fltfldPropostaValPropostoFornecedor.AsFloat - Valor_Minimo) / Valor_Minimo)*100;

Abraços

Ok. Micheus funfou legal. Grato a todos.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...