PERGUNTAS E RESPOSTAS
 
Bem Vindo, Visitante  Todos os Fórums
  ADVPL
Enviar para a impressoraImprimir  Enviar e-mail para um amigoEnviar Para um Amigo
Precisa estar Logado

Subject Assunto:
Gravar informações via gatilho
Versão:
12.1.25
Plataforma:
Microsoft
Complemento:
DB:
Oracle
Complemento:
Gatilho.png (anexo)
Erro gatilho.png (anexo)
LinkedIn
Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário GUDEFENDI GUDEFENDI em 10/02/2020, 15:56 h
Local: SP  Registro: 10/07/2018  Postagens: 52
Boa tarde,

Montei um gatilho no campo A2_MSBLQL para executar um fonte (U_LOGUSRBQ). Sempre que alguem alterar o valor do campo A2_MSBLQL para 1, o fonte pega o usuário logado no sistema e grava num campo personalizado (A2_ZZUSRBQ).

Preciso de ajuda com o fonte abaixo, pois o mesmo esta trazendo as informações nas variáveis, mas não grava o nome no campo personalizado.

********** GATILHO **********

Campo -------- A2_MSBLQL
Sequencia ---- 001
Cnt. Dominio - A2_ZZUSRBQ
Tipo --------- 1 Primario
Regra -------- U_LOGUSRBQ
Posiciona ---- 2 não
Alias --------
Ordem -------- 0
Chave --------
Condicao -----

*****************************

*********** FONTE ***********

#include ‘protheus.ch‘
#include ‘parmtype.ch‘

User Function LOGUSRBQ()

     Local cBloq := M->A2_MSBLQL
     Local cUsuario := ALLTRIM(USRFULLNAME(RETCODUSR()))
     
     IF cBloq == "1"

     DbSelectArea("SA2")

          RecLock("SA2", .F.)
          SA2->A2_ZZUSRBQ := cUsuario
          MsUnLock()
     ENDIF

Return

*****************************

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário LHC LHC em 10/02/2020, 16:24 h
Local: ES  Registro: 11/05/2013  Postagens: 49
Vê se te ajuda a alteração abaixo:

RecLock(‘SA2‘, .F.)
Replace A2_ZZUSRBQ with cUsuario
MsUnLock()

Atenciosamente,
Luis Henrique

Mensagem do Enviar e-mail Abrir o Perfil do usuário JCSTORINO JCSTORINO em 10/02/2020, 16:31 h
Local: SP  Registro: 16/09/2005  Postagens: 19
Eu acho que vc não precisa fazer RecLock, uma vez que vc já esta em modo de edição do registro ( em tela ), a única coisa que precisa fazer é gatilhar o conteúdo para o campo respectivo..

Seu gatilho ficaria assim

Campo -------- A2_MSBLQL
Sequencia ---- 001
Cnt. Dominio - A2_ZZUSRBQ
Tipo --------- 1 Primario
Regra -------- cUserName ou ALLTRIM(USRFULLNAME(RETCODUSR()))
Posiciona ---- 2 não
Alias --------
Ordem -------- 0
Chave --------
Condicao -----

Só isso, quando gravar o valor já vai ser gravado junto com o restante do cadastro.

att

Julio Storino
Consultor Protheus

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário INFOBRENO INFOBRENO em 10/02/2020, 18:47 h
Local: MT  Registro: 02/03/2011  Postagens: 117
Da forma que o Julio colocou funciona e é bem mais prático, mas se quiser utilizar o ser fonte

*********** FONTE ***********

#include 'protheus.ch'
#include 'parmtype.ch'

User Function LOGUSRBQ()

     Local cBloq := M->A2_MSBLQL
     Local cUsuario := ""

     
     IF cBloq == "1"
        cUsuario := ALLTRIM(USRFULLNAME(RETCODUSR()))
     ENDIF

Return (cUsuario) <- Caso queira utilizar seu fonte voce deve informar o
retorno aqui
voce já está posicionado e com reclock.


Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário GUDEFENDI GUDEFENDI em 11/02/2020, 12:00 h
Local: SP  Registro: 10/07/2018  Postagens: 52
JCTORINO, bom dia!

Eu testei desse modo fazendo direto no gatilho, mas o problema é que ele altera o nome do usuário mesmo quando vão desbloquear um fornecedor. O que estou querendo é filtrar para apenas quando vão bloquear-lo.

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário GUDEFENDI GUDEFENDI em 11/02/2020, 12:01 h
Local: SP  Registro: 10/07/2018  Postagens: 52
INFOBRENO, bom dia!

Vou testar como voce falou, obrigado.

Mensagem do Enviar e-mail Abrir o Perfil do usuário JCSTORINO JCSTORINO em 11/02/2020, 14:28 h
Local: SP  Registro: 16/09/2005  Postagens: 19
Olá GUDEFENDI, faz assim...

Coloca no campo Condição do gatilho a seguinte expressão:

M->A2_MSBLQL=="1"

Seu gatilho ficaria assim:

Campo -------- A2_MSBLQL
Sequencia ---- 001
Cnt. Dominio - A2_ZZUSRBQ
Tipo --------- 1 Primario
Regra -------- cUserName ou AllTrim(UsrFullName(RetCodUsr()))
Posiciona ---- 2 não
Alias --------
Ordem -------- 0
Chave --------
Condicao ----- M->A2_MSBLQL==‘2‘

Julio Storino
Consultor Protheus

Mensagem do Enviar e-mail Abrir o Perfil do usuário JCSTORINO JCSTORINO em 11/02/2020, 14:33 h
Local: SP  Registro: 16/09/2005  Postagens: 19
A propósito, lembrei de um recurso nativo do protheus que faz um log das alterações em determinado campo e determinada tabela, é só configurar..

Dá uma olhada nesse vídeo que fiz a bastante tempo, considere que algumas coisas podem terem mudado daquela versão pra cá.. mas acredito que ainda funcione bem para o que vc deseja..

https://www.youtube.com/watch?v=z5fiAv7jvvE&t=42s

Espero ter ajudado.

Julio Storino
Consultor Protheus

Mensagem do Enviar e-mail Abrir o Perfil do usuário WALTERFCAR WALTERFCAR em 11/02/2020, 15:33 h
Local: SP  Registro: 14/10/2015  Postagens: 61
estava vendo isso hj
se já estiver no fonte mvc, dá para fazer assim

FWFldPut("A2_ZZUSRBQ", ALLTRIM(USRFULLNAME(RETCODUSR()))   )

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário GUDEFENDI GUDEFENDI em 13/02/2020, 10:12 h
Local: SP  Registro: 10/07/2018  Postagens: 52
JCSTORINO, bom dia!

Fiz a alteração do gatilho que voce falou, mas da um erro na hora que altero o campo A2_MSBLQL.

Segue os prints em anexo.

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário GUDEFENDI GUDEFENDI em 13/02/2020, 10:13 h
Local: SP  Registro: 10/07/2018  Postagens: 52
WALTERFCAR, bom dia!

Vou testar desse modo que voce me passou.

Mensagem do Enviar e-mail Abrir o Perfil do usuário JCSTORINO JCSTORINO em 13/02/2020, 11:09 h
Local: SP  Registro: 16/09/2005  Postagens: 19
Olá GUDEFENDI, só vai disparar o gatilho quando bloquear o fornecedor certo ? então A2_MSBLQL tem que estar com o valor 1, tente essa alteração...

Coloca no campo Condição do gatilho a seguinte expressão:

&(READVAR())==‘1‘

Seu gatilho ficaria assim:

Campo -------- A2_MSBLQL
Sequencia ---- 001
Cnt. Dominio - A2_ZZUSRBQ
Tipo --------- 1 Primario
Regra -------- cUserName   ou   AllTrim(UsrFullName(RetCodUsr()))
Posiciona ---- 2 não
Alias --------
Ordem -------- 0
Chave --------
Condicao ----- &(READVAR())==‘1‘

Julio Storino
Consultor Protheus

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário GUDEFENDI GUDEFENDI em 13/02/2020, 12:03 h
Local: SP  Registro: 10/07/2018  Postagens: 52
JCSTORINO, bom dia!

Deu certo agora a montagem do gatilho, muito obrigado pela ajuda.

Para postar no Fórum você precisa efetuar o seu login ou se registrar

 Mudar para Fórum

 

 

 
 
   
Pagina Principal Shopping PROTHEUS Tire suas duvidas Vagas Microsiga em todo Brasil Aprofunde seus conhecimentos Noticias Online Fale Conosco Pagina Principal