× Linguagem de Programação ADVPL

Perguntas Bloquear Cad. Funcionario ao incluir

Mais
10 anos 11 meses atrás #18289 por Rei da TI
HELLLP

Pessoal, preciso de uma ajuda, estou querendo criar um bloqueio no cadastro do funcionário, que ao incluir um novo o mesmo nasça bloqueado, para depois outro usuário desbloquear.

o que já tentei:

1- ativei o campo RA_MSBLQL
2- Mudei o campo para poder alterar
3- coloquei no inicializador padrao para iniciar com 1 (significa registro não liberado)

Desta forma ele Não NASCE bloqueado, analisando um fonte padrão observei que é alterado para 2 no fonte na inclusão.

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ Inicializa o conteudo do campo RA_MSBLQL ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ/*/
IF SRA->( RecLock( "SRA" , .F. ) )
SRA->RA_MSBLQL := "2"
SRA->( MsUnLock() )
EndIF


4- existe um ponto de entrada GP010VALPE (Ponto de Entrada para checar os dados de inclusão/alteração de funcionários.)

Tentei colocar a função acima no ponto de entrada alterando o valor para 1
mais ele da um erro.

tentativa de reservar registro no alias SRA em EOF stack de chamadas em MSRLOCK.eof controle.....

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 11 meses atrás #18297 por Hugo_Silva
Reinaldo,

Seguinte se esse ponto verifica os dados apos gravação? Tenta usar um ponto de entrada que valida as informações após a gravação...tenta fazer algo desse tipo..

If SRA->RA_MSBLQL := "1"
RecLock("SRA", .F.)
SRA->SRA_MSBLQL := "2" // bloqueio
MsUnlock()
EndIf

Return

Caso não funcione coloca um dbseek no para posicionar no final no ultimo registro gravado...Se nao me engano existe outro ponto de entrada acho que e GPEA010GRV.

Abçs!

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 11 meses atrás #18298 por Rei da TI
fiz teste que pediu e deu este erro:



THREAD ERROR (Reinaldo.Mauricio, MMTNBKDTI60CTA) 06/11/2013 13:49:12
Update error - File is in EOF - SRA010 in file .\advplfile.cpp at line 58
on U_GP010VALPE(GP010VALPE .PRW) 06/11/2013 13:42:18 line : 23

[TOTVS build: 7.00.120420A-20120726]
Called from EXECBLOCK(APLIB190.PRW) 05/02/2013 10:53:40 line : 160
Called from GPEA010VALPE(GPEA010.PRX) 24/10/2012 17:42:08 line : 2770




a linha 23 é esta aqui --- If SRA->RA_MSBLQL := "1"

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 11 meses atrás - 10 anos 11 meses atrás #18301 por Hugo_Silva
Passei coisa errada aí..

Coloca assim...

User Function GP010VALPE()
Local cBloqueio := SRA->RA_MSBLQL

If (cBloqueio = "2")

RecLock("SRA", .F.)
SRA->RA_MSBLQL := "1" // bloqueio
MsUnlock()
EndIf

Return


Qualquer coisa da um debug no fonte e veja se ele está alimentando a variável cBloqueio


Abraços!
Ultima edição: 10 anos 11 meses atrás por Hugo_Silva.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 11 meses atrás #18304 por Rei da TI
Não Funciono...


Assim coloquei o incio padrão para 1 = que é bloqueado

Durante o processo do PE GP010VALPE o valor da variável RA_MSBLQL é 1 (Bloqueado), debugando eu consigo ver isso.

O problema é que depois que sair do ponto de entrada ele altera pra 2 e grava no banco. 2 = Liberado.

TA dificillll

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 11 meses atrás #18308 por Rei da TI
RESOLVIDOOOOOOO

Galera achei outro ponto de entrada

GP010FIMPE() =Ponto de entrada utilizado para tratamento específico após a conclusão da gravação de todos os dados.

fiz da seguinte maneira..........

User Function GP010FIMPE()

//Varaiavel recebe valor do campo 1= Bloqueado ou 2= Liberado
Local cBloqueio := SRA->RA_MSBLQL

//verifica se é inclusão
if inclui

//Valida (se for usuarios especificos e o campo estiver liberado)
If !__cUserId $ GetNewPar("MV_ALTSRA","000000") .AND. (cBloqueio = "2")

RecLock("SRA", .F.)
SRA->RA_MSBLQL := "1" // bloqueio
MsUnlock()

EndIf
Endif
Return



Deu certoooo

Obrigado a todos pela ajuda....

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.144 segundos
Joomla templates by a4joomla