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
