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

Dica Programa para Analisar Codigo Progress

Discussão em 'Progress 4GL' iniciado por fdantas, Maio 4, 2017.

  1. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    eu sou do tempo do progress 6, magnus em UNIX, nem linux era hehehehe
  2. Agnaldo

    Agnaldo Membro Ativo

    Então gente ...
    FIND sem nada assume por "Default" share-lock.

    Se voce esta fazendo consulta, recomentação é sempre colocar o NO-LOCK.
    Ou seja, voce esta dizendo, vou acessar para consulta, então NÃO vou bloquear e não vou considerar bloqueios que possam existir.

    Para atualização recomenda-se sempre colocar o EXCLUSIVE-LOCK.

    SHARE-LOCK voce esta dizendo para o Progress pegar o registro e, TALVEZ voce precise trava-lo.
    Aqui é aquela "M" q situação de DEAD-LOCK, a famosa mensagem de "Regisyro
  3. renato.schlogel

    renato.schlogel Membro Participativo

    Mas então, você estão me dizendo que o código abaixo funciona para vocês, sem a necessidade se colocar o share?

    Código:
    find first tabela
         no-error.
    
    update tabela.nome.
    
  4. Agnaldo

    Agnaldo Membro Ativo

    Aqui é aquela "M" que pode dar DEAD-LOCK, a famosa mensagem de "Registro em uso por outro usuário. WAIT or CANCEL".

    Mas NÃO usar SHARE-LOCK significa que voce deve escrever mais código, mas também teu código fica BEM MAIS decente.

    Olha a diferença em escrita:
    Código:
    /* Sem tratar, deixando pro Progress, ira fazer share-lock */
    FIND tabcli WHERE codcli = 10.
    UPDATE tabcli.nome.
    
    
    /* Tratando, ou seja, VOCE tratrando possiveis erros */
    FIND tabcli WHERE codcli = 10 EXCLUSIVE-LOCK NO-WAIT NO-ERROR.
    IF NOT AVAILABLE tabcli
       THEN
           IF LOCKED tabcli
              THEN
                  MESSAGE "Registro em uso".
              ELSE
                  MESSAGE "Cliente não cadastrado".
       ELSE
           UPDATE tabcli.nome.
    
    [code]
  5. Agnaldo

    Agnaldo Membro Ativo

    A palavra, sintaxe, SHARE-LOCK nem é usada....
  6. Agnaldo

    Agnaldo Membro Ativo

    Ah, mas lembre que tem uma parametro do client que voce pode usar.
    Ele automaticamente assume que os find´s serão no-lock

Compartilhe esta Página