LOCALIZAR VALOR MAIS PRÓXIMO.
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
Curtidas 0
Respostas
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;
[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
20/11/2010
Valeu Pietro,
é isto mesmo, ele econtrou o primeiro valor maior e trouxe no Edit.
Muito obrigado.
Att.
Valdir Lima
GOSTEI 0