DbEval

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:

DbEval - Exemplo 1

DbEval – Exemplo 1

//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

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