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