edsouzza Postado Maio 24, 2008 Denunciar Share Postado Maio 24, 2008 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 edsouzza Postado Junho 7, 2008 Autor Denunciar Share Postado Junho 7, 2008 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? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Vivendo&Aprendendo Postado Junho 7, 2008 Denunciar Share Postado Junho 7, 2008 Verifica se o tipo do campo do banco de dados é o mesmo tipo de dados que você está tentando adicionar nele... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Junho 7, 2008 Denunciar Share Postado Junho 7, 2008 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á erroexemploprocedure 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 edsouzza Postado Junho 7, 2008 Autor Denunciar Share Postado Junho 7, 2008 (editado) 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 Junho 7, 2008 por edsouzza Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Junho 7, 2008 Denunciar Share Postado Junho 7, 2008 Devo converter os valores Currency em Float?Crie o seu campo calculado como Floatabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 edsouzza Postado Junho 8, 2008 Autor Denunciar Share Postado Junho 8, 2008 (editado) Devo converter os valores Currency em Float?Crie o seu campo calculado como FloatabraçoPois é 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 Junho 8, 2008 por edsouzza Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Junho 8, 2008 Denunciar Share Postado Junho 8, 2008 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 variavelvoce tem que fazer a analise do seu codigo para descobrir o erroabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --edsouzza -- Postado Junho 17, 2008 Denunciar Share Postado Junho 17, 2008 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 variavelvoce tem que fazer a analise do seu codigo para descobrir o erroabraçoOk, Grato vou tentar. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 edsouzza Postado Junho 17, 2008 Autor Denunciar Share Postado Junho 17, 2008 (editado) 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 Junho 18, 2008 por edsouzza Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --Germano -- Postado Agosto 2, 2008 Denunciar Share Postado Agosto 2, 2008 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? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Luis Ricardo Postado Agosto 4, 2008 Denunciar Share Postado Agosto 4, 2008 Para formatar no caso os valores. Voce pode utilizar a função : FormatFloat ('#,##0.00', valor)isso irá retornar uma stringFormatFloat (<mascara>, <valoremfloat>);Ou veja no Grid qual o campo você irá formatar e coloque a mascara desejável.Att.Luis Ricardo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Agosto 4, 2008 Denunciar Share Postado Agosto 4, 2008 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 edsouzza Postado Agosto 5, 2008 Autor Denunciar Share Postado Agosto 5, 2008 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çosOk. Micheus funfou legal. Grato a todos. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
edsouzza
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
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.