No vídeo de hoje, vamos demonstrar em como criar um Gatilho, que gera um conteúdo sequencial em um campo.
Hoje, a dúvida foi feita pelo grande Jonatan, onde ele perguntou da possibilidade de criar um gatilho, que dispara gerando o conteúdo em um campo sequencial.
Então nesse vídeo, é demonstrado como criar uma função que irá gerar esse conteúdo, e como disparar isso em um gatilho.
E abaixo o código fonte desenvolvido para exemplificar:
//Bibliotecas #Include "TOTVS.ch" #Include "TopConn.ch" /*/{Protheus.doc} User Function zVid0025 Função para preencher o campo de código de fabricação no cadastro de produtos @type Function @author Atilio @since 15/03/2022 @version version @obs Na criação do gatilho, tem que ser informado da seguinte forma: Campo: B1_GRUPO Cnt Dominio: B1_FABRIC Tipo: Primário Regra: u_zVid0025() /*/ User Function zVid0025() Local aArea := GetArea() Local cGrupo := FWFldGet("B1_GRUPO") Local cUltimo := PadR(cGrupo, TamSX3("B1_FABRIC")[1], '0') Local cQuery := "" cQuery += " SELECT " + CRLF cQuery += " ISNULL(MAX(B1_FABRIC), '" + cUltimo + "') AS ULTIMO " + CRLF cQuery += " FROM " + CRLF cQuery += " " + RetSQLName('SB1') + " SB1 " + CRLF cQuery += " WHERE " + CRLF cQuery += " B1_FILIAL = '" + FWxFilial('SB1') + "' " + CRLF cQuery += " AND B1_GRUPO = '" + cGrupo + "' " + CRLF cQuery += " AND SB1.D_E_L_E_T_ = ' ' " + CRLF TCQuery cQuery New Alias "QRY_ULT //Somente se não tiver no fim do arquivo e tiver conteúdo If ! QRY_ULT->(EoF()) .And. ! Empty(QRY_ULT->ULTIMO) cUltimo := QRY_ULT->ULTIMO EndIf QRY_ULT->(DbCloseArea()) //Incrementa 1 cUltimo := Soma1(cUltimo) RestArea(aArea) Return cUltimo
Bom pessoal, por hoje é só.
Abraços e até a próxima.