Informação de usuário

Discussão em 'Progress 4GL' iniciado por mepossamai, Outubro 8, 2009.

  1. mepossamai

    mepossamai Sem Pontuação

    Olá a todos..

    seguinte, estou com um problema quando faço um exclusive-lock em uma tabela..

    o caso é: quando faço um exclusive-lock, o registro nao fica mais "avail" quando outro usr tenta executar o mesmo programa, porém os "usuarios" nao entende que o numero de lock é um usuário. Entao gostaria de saber se tem como fazer um find e identificar o nome do usuário, ou o numero do lock (pts em linux) para mostrar uma mensagem e ele realmente entender a situacao, e nao mais a mensagem padrao do banco com o numero do lock.

    Obrigado!

    []'s Marcos Possamai
  2. atila.cm

    atila.cm Membro Participativo

    Caro Marcos:

    O ideal é você tratar a mensagem enviando uma mensagem para o usuário que
    não consegue acessar o registro. Normalmente é necessário ajustar a lógica do
    programa. Aqui vai um exemplo de como costumo fazer.

    Código:
    .
    .
    .
    blk-bloco:
    DO  ON ENDKEY UNDO blk-bloco, LEAVE blk-bloco
        ON ERROR  UNDO blk-bloco, RETRY blk-bloco:
        .
        .
        .
        .
        FIND banco.tabela
            WHERE xxxx
            EXCLUSIVE-LOCK NO-WAIT NO-ERROR.
        IF  LOCKED banco.tabela THEN DO:
            MESSAGE 
                "Registro sendo utilizado por outro usuario, tentar outra vez ?"
                VIEW-AS ALERT-BOX QUESTION BUTTONS YES-NO
                TITLE "" UPDATE choice AS LOGICAL.
            IF  choice = YES THEN DO:
                UNDO blk-bloco, RETRY blk-bloco.
            END.
            ELSE DO:
                UNDO blk-bloco, LEAVE blk-bloco.
            END.    
        END. /* IF  LOCKED */
        ELSE DO:
            IF  NOT AVAILABLE banco.tabela THEN DO:
                .
                .
                .
                .
                LEAVE blk-bloco.
            END. /* IF  NOT AVAILABLE */
        END. /* else IF  LOCKED */
        .
        .
        .
        .
        .
    END. /* blk-bloco */
    .
    .
    .
    
    Abraços

    __________________________
    Attiware Informática Ltda.
    Atila C. Mizerkówski
    atila.cm@hotmail.com
  3. mepossamai

    mepossamai Sem Pontuação

    Olá Atila...

    seguinte, este tipo de validação já ocorre sem problemas, porém o que quero tratar é além de mostrar uma mensagem correta para o usuário do que está acontecendo, informar qual o lock da tabela para que assim, possamos identificar e se o tempo for maior que alguns minutos, matamos este processo na mão (kill -9 xxxxx).

    acho que agora consegui completar a explicação de antes.

Compartilhe esta Página