Executa um bloco de código para cada registro de uma tabela.
Exemplo da Rotina:
DbEval(bBlocoCodigo, , bEnquanto)
Exemplo 1- Contando os registros enquanto o X5_TABELA for igual a 00:
//Bibliotecas #Include "Protheus.ch" /*/{Protheus.doc} zTeste Função de Teste @type function @author Terminal de Informação @since 13/11/2016 @version 1.0 @example u_zTeste() /*/ User Function zTeste() Local aArea := GetArea() Local nCnt := 0 Local cMsg := "" Local bBloco Local bEnquanto //Posiciona no arquivo de tabelas da SX5 DbSelectArea("SX5") SX5->(DbSetOrder(1)) //X5_FILIAL + X5_TABELA + X5_CHAVE //Se conseguir posicionar na tabela 00 If SX5->(DbSeek(FWxFilial("SX5") + "00")) bBloco := {|x| nCnt++, cMsg += Alltrim(SX5->X5_CHAVE)+", "} bEnquanto := {||SX5->X5_FILIAL == FWxFilial("SX5") .And. SX5->X5_TABELA<="00"} //Setando a régua DbEval(bBloco, , bEnquanto) //Mostrando a mensagem Aviso('Atenção', "Foram processados "+cValToChar(nCnt)+" registros:"+CRLF+cMsg, {'Ok'}, 2) EndIf RestArea(aArea) Return
Exemplo em Vídeo:
Clique nesse link para ver um exemplo em Vídeo da nossa Maratona de Exemplos.
Observações:
– Caso tenha dúvidas ou problemas com os exemplos, entre em contato;
– Se tiver sugestões de rotinas, pode entrar em contato;
Referências:
– TDN
– Universo AdvPL