Nesse vídeo demonstraremos a utilização dos comandos While e EndDo, que servem para fazer um laço de repetição.
Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:
//Bibliotecas
#Include "TOTVS.ch"
/*/{Protheus.doc} User Function zExe532
Efetua um laço de repetição enquanto uma condição for verdadeira
@type Function
@author Atilio
@since 07/04/2023
@see https://tdn.totvs.com/display/tec/O+Comando+WHILE...ENDDO
@obs 
    **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao ****
/*/
User Function zExe532()
	Local aArea   := FWGetArea()
	Local aAreaSA2 := SA2->(FWGetArea())
	Local cMsg    := ""
	Local nAtual  := 0
	
	//Enquanto for verdadeiro
	While .T.
		
		//Se a pergunta for confirmada, volta o laço
		If MsgYesNo("Deseja continuar o laço?", "Atenção")
			Loop
		Else
			Exit
		EndIf
		
	EndDo
	
	//Abrindo a tabela de fornecedores e posicionando no topo
	DbSelectArea('SA2')
	SA2->(DbSetOrder(1))
	SA2->(DbGoTop())
	
	//Enquanto houver dados nos fornecedores e for menos que 100 registros
	While ! SA2->(EoF())
		nAtual++
		cMsg += "[" + cValToChar(nAtual) + "] " + Alltrim(SA2->A2_NOME) + ";" + CRLF
		
		SA2->(DbSkip())
	EndDo
	/*
	//Exemplo de utilizacao de alias
	//Executo query QRY_SF1
	While ! QRY_SF1->(EoF())
		//Executo query QRY_SD1
		
		While ! QRY_SD1->(EoF())
		
			QRY_SD1->(DbSkip())
		EndDo
		QRY_SD1->(DbCloseArea())
		QRY_SF1->(DbSkip())
	EndDo
	*/
	
	//Mostrando os fornecedores
	Aviso("Atenção", cMsg, {"OK"}, 2)
	
	FWRestArea(aAreaSA2)
	FWRestArea(aArea)
Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.
 
 
