1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Duvidas Exclusive Lock

Discussão em 'Progress 4GL' iniciado por fdantas, Fevereiro 13, 2009.

  1. fdantas

    fdantas Administrator Moderador

    Pessoal na Lista de Discussao surgiu a seguinte duvida

    Normalmente quando utilizamos o exclusive-lock juntamente com um find first se o registro esta bloqueado aparece a tela padrão do progress avisando que o registro esta em uso por outro usuário com um botão de cancelar, caso o usuário aperte em cancelar o programa pula o find e continua porém gostaria de saber como fazer para avisar que o registro esta bloqueado e não permitir que o usuário clique em cancelar e obrigue fazer esperar até desbloquear o registro ?

    Abaixo segue a resposta do nosso amigo Daniel Cardelli :

    Este é só um exemplo de uma procedure que utilizamos aqui. Mas aqui utilizamos programação caracter.

    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 "".
    Este é só um exemplo para que você possa se basear a construir a sua procedure.

Compartilhe esta Página