Para um loopins em um While

Delphi

05/05/2004

Boa Tarde,

Senhores eu possuo o codigo abaixo:
[b:34d5adf678]procedure TFrmGrupos.GrupoA;
begin
DmBanco.TbAnoAnterior.First;
while not Dmbanco.TbAnoAnterior.Eof do
begin
mAnoAnterior:=ColunaAnoAnterior.AsString;
DmBanco.TBConfirmacao.First;
while not DmBanco.TbConfirmacao.eof do
Begin
mConfirmacao:=ColunaConfirmacao.AsString;
If (mAnoAnterior=mConfirmacao) then
Begin
if (modalidade.AsString=´OK´) or (modalidade.AsString=´Ok´) then
Begin
CabecaA.Caption:=mAnoAnterior;
mCidadeA:=mAnoAnterior;

End;
End;
DmBanco.TbConfirmacao.Next;
end;
DmBanco.TBAnoAnterior.Next;
end;
end;[/b:34d5adf678]

e gostaria que quando o fosse localizado o arquivo ele fizesse uma parada e me trouxesse o arquivo. O que esta acontecendo é que ele não para e me traz o último registro da tabela.

No aguardo e obrigado

Wagner Marrane


Wagnermarrane

Wagnermarrane

Curtidas 0

Respostas

Paulo_amorim

Paulo_amorim

05/05/2004

Olá

Quando ele achar, ponha o comando [b:33b9b33eeb]break;[/b:33b9b33eeb]

Espero que ajude
Até+


GOSTEI 0
Marco Salles

Marco Salles

05/05/2004

Acho que e assim:
procedure TForm1.Button1Click(Sender: TObject);
begin
DmBanco.TbAnoAnterior.First;//va para o primeiro
while not Dmbanco.TbAnoAnterior.Eof do
  begin
    mAnoAnterior:=ColunaAnoAnterior.AsString;
    DmBanco.TBConfirmacao.First;//va para o primeiro
    while not DmBanco.TbConfirmacao.eof do
      Begin
        mConfirmacao:=ColunaConfirmacao.AsString;
        If (mAnoAnterior=mConfirmacao) then
          Begin
            if (modalidade.AsString=´OK´) or (modalidade.AsString=´Ok´) then
              Begin
                CabecaA.Caption:=mAnoAnterior;
                mCidadeA:=mAnoAnterior;
                Break;//**********Comando Break conforme Paulo sugeriu
              End;
          End;
        DmBanco.TbConfirmacao.Next;
      end;
    DmBanco.TBAnoAnterior.Next;
  end;
end;



GOSTEI 0
Marco Salles

Marco Salles

05/05/2004

desculpe, desculpe, descupe...Um comanfo [b:7bba8b077b]Break[/b:7bba8b077b] so , ira apenas suspender a execução do Loop Interno..Como voce tem dois [b:7bba8b077b]While[/b:7bba8b077b] Acho que Voce Tem Que Usar Um [b:7bba8b077b]Flag[/b:7bba8b077b] Seguido De Um[b:7bba8b077b] Break[/b:7bba8b077b]...
procedure TFrmGrupos.GrupoA; 
var
 parar:Boolean; //variavel que iremos usar como Flag
begin
 parar:=False;
DmBanco.TbAnoAnterior.First;//va para o primeiro
while not Dmbanco.TbAnoAnterior.Eof do
  begin
    mAnoAnterior:=ColunaAnoAnterior.AsString;
    DmBanco.TBConfirmacao.First;//va para o primeiro
    while not DmBanco.TbConfirmacao.eof do
      Begin
        mConfirmacao:=ColunaConfirmacao.AsString;
        If (mAnoAnterior=mConfirmacao) then
          Begin
            if (modalidade.AsString=´OK´) or (modalidade.AsString=´Ok´) then
              Begin
                CabecaA.Caption:=mAnoAnterior;
                mCidadeA:=mAnoAnterior;
                Parar:=True;
              End;
          End;
        DmBanco.TbConfirmacao.Next;
      end;
    if parar Then
       DmBanco.TBAnoAnterior.Next
    else
       Break;//acho que e aqui que deve ser colocado
  end;
end;



GOSTEI 0
Marco Salles

Marco Salles

05/05/2004

desculpe, desculpe, descupe...Um comanfo [b:b3a1fd03c8]Break[/b:b3a1fd03c8] so , ira apenas suspender a execução do [b:b3a1fd03c8]Loop Interno[/b:b3a1fd03c8]..Como voce tem dois [b:b3a1fd03c8]While[/b:b3a1fd03c8] Acho que Voce Tem Que Usar Um[b:b3a1fd03c8] Flag [/b:b3a1fd03c8]Seguido De Um [b:b3a1fd03c8]Break[/b:b3a1fd03c8]...
Código:
procedure TFrmGrupos.GrupoA; 
var 
parar:Boolean; //variavel que iremos usar como Flag 
begin 
parar:=False; 
DmBanco.TbAnoAnterior.First;//va para o primeiro 
while not Dmbanco.TbAnoAnterior.Eof do 
  begin 
    mAnoAnterior:=ColunaAnoAnterior.AsString; 
    DmBanco.TBConfirmacao.First;//va para o primeiro 
    while not DmBanco.TbConfirmacao.eof do 
      Begin 
        mConfirmacao:=ColunaConfirmacao.AsString; 
        If (mAnoAnterior=mConfirmacao) then 
          Begin 
            if (modalidade.AsString=´OK´)or(modalidade.AsString=´Ok´) then 
              Begin 
                CabecaA.Caption:=mAnoAnterior; 
                mCidadeA:=mAnoAnterior; 
                Parar:=True; 
              End; 
          End; 
        DmBanco.TbConfirmacao.Next; 
      end; 
    if not parar Then 
       DmBanco.TBAnoAnterior.Next 
    else 
       Break;//acho que e aqui que deve ser colocado 
  end; 
end; 



GOSTEI 0
Paulo_amorim

Paulo_amorim

05/05/2004

[quote:3cc6c369ce=´Marco Salles´]desculpe, desculpe, descupe...Um comanfo [b:3cc6c369ce]Break[/b:3cc6c369ce] so , ira apenas suspender a execução do [b:3cc6c369ce]Loop Interno[/b:3cc6c369ce]..Como voce tem dois [b:3cc6c369ce]While[/b:3cc6c369ce] Acho que Voce Tem Que Usar Um[b:3cc6c369ce] Flag [/b:3cc6c369ce]Seguido De Um [b:3cc6c369ce]Break[/b:3cc6c369ce]...
[/quote:3cc6c369ce]

Olá

É verdade, não tinha percebido!
Entretanto, se o que aprocedure faz é só isso, então pode-se dar um [b:3cc6c369ce]Exit[/b:3cc6c369ce] e resolve o problema :)


GOSTEI 0
Wagnermarrane

Wagnermarrane

05/05/2004

galera valeu mesmo.... o codigo funcionou

Abraço
Wagner


GOSTEI 0
POSTAR