While o que esta errado Tá dificl

26/02/2003

0

o problema é o while naum tá fazendo efeito nenhum aqui pq , a condição if esta certa se eu desabilitar o while o IF funciona , porém naum muda de registro com next .. o que fazer ?

while not qrgridfrete.eof do
begin
if (strtoint(txtpeso.Text) >= (qrgridfrete.FieldByName(´faixa_inicial´)).Value) and (strtoint(txtpeso.Text) <= (qrgridfrete.FieldByName(´faixa_final´)).Value) then
begin
txtfaixavalorfrete.Text := qrgridfrete.FieldByName(´valor´).AsString;
end
else
begin
qrgridfrete.Next;
end
end;
end;


Anonymous

Anonymous

Responder

Posts

26/02/2003

Anonymous

Mudei o procedimento v^c funciona agora...

qrgridfrete.First;
while not qrgridfrete.eof do
begin
if (strtoint(txtpeso.Text) >= (qrgridfrete.FieldByName(´faixa_inicial´).Value)) and (strtoint(txtpeso.Text) <= (qrgridfrete.FieldByName(´faixa_final´).Value)) then
begin
txtfaixavalorfrete.Text := qrgridfrete.FieldByName(´valor´).AsString;
qrgridfrete.Next; // aki tb precisa do Next
end ;
else
begin
qrgridfrete.Next;
end
end;
end;


vê c funciona dinovo


Responder

26/02/2003

Anonymous

tente assim:

qrgridfrete.first;
while not qrgridfrete.eof do
begin

if (strtoint(txtpeso.Text) >= (qrgridfrete.FieldByName(´faixa_inicial´)).Value) and (strtoint(txtpeso.Text) <= (qrgridfrete.FieldByName(´faixa_final´)).Value) then

txtfaixavalorfrete.Text := qrgridfrete.FieldByName(´valor´).AsString;

qrgridfrete.Next;

end;

no seu caso o next ta tabela tem que sempre acontecer senão o While vai entrar em um Loop eterno...


Falou.
Leandro
ICQ 128124370


Responder

26/02/2003

Anonymous

O seu problema, é que quando vc entra no IF, acaba entrando em um loop infinito... Vc deve utilizar o next mesmo quando o IF for positivo, para com isso ler até o fim da tabela e satisfazer a condição do while, ou então sair do laço do while quando o if for positivo...

Espero ter ajudado...

:wink:


Responder

26/02/2003

Anonymous

Primeiro, a identação precisa ser melhorada.
olha só o código abaixo:

while not qrgridfrete.eof do begin
if (strtoint(txtpeso.Text) >= (qrgridfrete.FieldByName(´faixa_inicial´).Value) and
(strtoint(txtpeso.Text) <= (qrgridfrete.FieldByName(´faixa_final´).Value) then
txtfaixavalorfrete.Text := qrgridfrete.FieldByName(´valor´).AsString
else
qrgridfrete.Next;
end;

Segundo, a propriedade fieldByName estava sendo utilizada errada.
verifique que você colocou dois parenteses para fechá-la.

Terceiro, este if nunca será verdadeiro
Não se compara Text com Value. (apesar de Value ser variant ele vem truncado sem os ´0´, o que faz diferença na hora de comparar)

Quarto, utilize FieldByName(´´).AsString;

Valeu.


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar