Opa, blz? Queria fazer um tratamento especifico para o usuário que esta travando o registro da tabela, sei que existem as tabelas hidden que podem me ajudar nisto. Preciso saber o nome do usuário que está me travando e armazena-lo numa variavel, alguem tem alguma idéia de como posso fazer isto? Obrigado Att, Anderson
Exemplo usando a tabela ITEM. Deste vc pode evoluir para o código desejado: Código: FIND Item WHERE RECID(Item) = rc-Item EXCLUSIVE-LOCK NO-WAIT NO-ERROR. IF AVAILABLE Item AND NOT LOCKED Item THEN DO: HIDE MESSAGE NO-PAUSE. RETURN "". END. FIND Item WHERE RECID(Item) = rc-Item NO-LOCK NO-ERROR. FIND FIRST _lock WHERE _lock._lock-recid = INTEGER(RECID(Item)) NO-LOCK NO-ERROR. IF AVAILABLE _lock THEN FIND FIRST _connect WHERE _connect._connect-usr = _lock._lock-usr NO-LOCK NO-ERROR. IF AVAILABLE _lock AND AVAILABLE _connect THEN ASSIGN ch-LockMessage = "[" + CAPS(_lock._lock-name) + " Em:" + CAPS(ENTRY(3,_connect._connect-device,"/") + ENTRY(4,_connect._connect-device,"/")) + "], Usando Item [" + ch-it-codigo + "]". ELSE ASSIGN ch-LockMessage = "Outro Usuario Utilizando Item [" + ch-it-codigo + "]". HIDE MESSAGE NO-PAUSE. HIDE FRAME fr-message NO-PAUSE. IF ch-LockMessage <> "" THEN RETURN ch-LockMessage. RETURN "".
Estou com um problema de travando, ao fazer um find na tabela _lock, onde o registro não é encontrado, a consulta fica travada por horas. De alguma forma, o registro da tabela esta em lock, porem não existe registro na tabela _lock para aquele recid. Código: FIND FIRST _lock WHERE _lock._lock-recid = INTEGER(RECID(Item)) NO-LOCK NO-ERROR. Gostaria de saber se alguem sabe se tem como dar um time para o find. tipo tentar achar por 2 segundo, caso não ache cancele a consulta. Desde já Obrigado.
Pessoal, achei a seguinte solução par ao meu problema: Código: repeat. find next _lock. if _lock._lock-recid eq vl-RecidInteiro then do. vl-usuario = _lock._lock-name. leave. end. if time gt vl-timeMaximo or time lt vl-timeMaximo - 5 then leave. end. Vlw Pessoal.