Fórum LOCALIZAR VALOR MAIS PRÓXIMO. #390880

20/11/2010

0

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

Responder

Posts

20/11/2010

Pietro Braga

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;
Responder

Gostei + 0

20/11/2010

Valdir Lima

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

Gostei + 0

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

Aceitar