Nesse vídeo demonstraremos a utilização da função DbEVal que executa um bloco de código percorrendo as linhas de um alias.
Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:
//Bibliotecas #Include "TOTVS.ch" /*/{Protheus.doc} User Function zExe122 Executa um bloco de código no alias @type Function @author Atilio @since 14/12/2022 @see https://tdn.totvs.com/display/tec/DBEVal @obs Função DBEVal Parâmetros + bBlock , Bloco de Código , Bloco de código a ser executado + bFirstCondition , Bloco de Código , Bloco de código com condição em caso de inserção de registro + bSecondCondition , Bloco de Código , Segundo bloco de código com condição em caso de inserção de registro + nCount , Numérico , Número máximo de registros a serem processados + nRecno , Numérico , RecNo do único registro a ser processado + lRest , Lógico , Indica que os demais registros serão processados Retorno Função não tem retorno **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao **** /*/ User Function zExe122() Local aArea := FWGetArea() Local nTotal := 0 Local bBloco := {|| } Local aProds := {} DbSelectArea('SB1') SB1->(DbSetOrder(1)) //B1_FILIAL + B1_COD //Define o bloco de código bBloco := {|| Iif("A" $ Upper(SB1->B1_DESC), nTotal++, Nil)} //Executa o bloco de código SB1->(DbGoTop()) SB1->(DbEVal(bBloco)) //Mostra o resultado FWAlertInfo("Existe(m) " + cValToChar(nTotal) + " produto(s) que tem a letra 'A' na descrição!", "Teste 1 DbEVal") //Define o bloco de código bBloco := {|| ; aAdd(aProds, {SB1->B1_COD, SB1->B1_DESC, SB1->(RecNo())}); } //Executa o bloco de código SB1->(DbGoTop()) SB1->(DbEVal(bBloco)) //Mostra o resultado FWAlertInfo("Existe(m) " + cValToChar(Len(aProds)) + " produto(s) no Array!", "Teste 2 DbEVal") FWRestArea(aArea) Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.