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.