LOCALIZAR VALOR MAIS PRÓXIMO.

Delphi

20/11/2010

Olá amigos do Delphi,   Estou tentando localizar na tabela PostePadrão o valor mais próximo do EditPesoTotal mas a minha fórmula está trazendo a valor maior de todos. veja abaixo.     procedure TFCALCULO.BitBtn6Click(Sender: TObject);
var
maior:Single;
begin
   if StrToFloat(EditPesoTotal.Text) > StrToFloat(EditResist.Text) then    // Se o peso total for maior que o poste resiste, 
   begin
   Maior := StrToFloat(EditPesoTotal.Text);  // A variável Maior recebe o valor do peso total
   PostePadrao.First;
   While (not PostePadrao. EOF) do
   begin
   if (PostePadrao.FieldByName('Resistencia').AsFloat  > Maior) then    // Se o valor do poste padrão encontrado for maior do que o valor carregado na variável Maior,
   begin
   Maior:= PostePadrao.FieldByName('Resistencia').AsFloat;    // A variável Maior recebe o valor do campo Resistencia da  tabela PostePadrao, o sistema deveria parar no primeiro valor Maior encontrado e atribuir este valor ao Edit PostePadrao mas ele vai até o último valor que é o maior de todos, estes valores estão em ordem crescente na Tabela.
   PostePadrao.Text:= (FloatToStr(maior));
   end
   else
   begin
   PostePadrao.Next;
   end;
end;
end;
end;   Aos que puderem me ajudar desde já eu agradeço,   Atenciosamente.     Valdir Lima      
Valdir Lima

Valdir Lima

Curtidas 0

Respostas

Pietro Braga

Pietro Braga

20/11/2010

Tente assim:
[code]procedure TFCALCULO.BitBtn6Click(Sender: TObject);
var
maior:Single;
begin
   if StrToFloat(EditPesoTotal.Text) > StrToFloat(EditResist.Text) then    // Se o peso total for maior que o poste resiste, 
  begin
   Maior := StrToFloat(EditPesoTotal.Text);  // A variável Maior recebe o valor do peso total
   PostePadrao.First;
   While (not PostePadrao. EOF) do
   begin
   if (PostePadrao.FieldByName('Resistencia').AsFloat  > Maior) then    // Se o valor do poste padrão encontrado for maior do que o valor carregado na variável Maior, 
  begin
   Maior:= PostePadrao.FieldByName('Resistencia').AsFloat;    // A variável Maior recebe o valor do campo Resistencia da  tabela PostePadrao, o sistema deveria parar no primeiro valor Maior encontrado e atribuir este valor ao Edit PostePadrao mas ele vai até o último valor que é o maior de todos, estes valores estão em ordem crescente na Tabela.
   PostePadrao.Text:= (FloatToStr(maior));   Break; // Interrompe o laço no primeiro valor maior que encontrar.
   end
   else
   begin
   PostePadrao.Next;
   end;
end;
end;
end;
GOSTEI 0
Valdir Lima

Valdir Lima

20/11/2010

Valeu Pietro,     é isto mesmo, ele econtrou o primeiro valor maior e trouxe no Edit.     Muito obrigado.   Att.     Valdir Lima
GOSTEI 0
POSTAR