Duvida Disparar Trigger de Leave somente depois de finalizar execução do zoom

Discussão em 'Progress 4GL' iniciado por Yasser Rachid, Junho 6, 2014.

  1. Yasser Rachid

    Yasser Rachid Sem Pontuação

    Bom dia, tenho um programa com uma Trigger de F5 no campo país que chama o Zoom de cidades (z01di341) e preciso que após a chamada deste zoom (que preencherá os campos País, Estado e Cidade) a descrição do estado seja preenchida após um Find na tabela unid-feder utilizando os campos Estado e Pais (que foram preenchidos pelo zoom).

    O find está na trigger leave do campo país, que é disparado por código após a chamada do zoom, porém, o Leave é disparando antes de fechar o zoom, não preenchendo corretamente o campo de descrição.

    Desde já, agradeço a atenção.

    Segue o código das duas triggers:

    F5:
    Código:
    /*Chama o zoom*/
    {method/ZoomFields.i &ProgramZoom    = "dizoom/z01di341.r"
                           &FieldZoom1     = "pais"
                           &FieldScreen1   = "c-pais"
                           &Frame1         = "f-main"
    
                           &FieldZoom2     = "estado"
                           &FieldScreen2   = "c-uf"
                           &Frame2         = "f-main"
    
                           &FieldZoom3     = "cidade"
                           &FieldScreen3   = "c-cidade"
                           &frame3         = "f-main"
    
                           &EnableImplant  = "YES"}.
    
    /*Dispara trigger de leave no campo país*/                       
     APPLY 'LEAVE' TO SELF.
    


    LEAVE:
    Código:
      FIND unid-feder
              WHERE unid-feder.estado = INPUT FRAME {&frame-name} c-uf:SCREEN-VALUE     AND
                    unid-feder.pais   = INPUT FRAME {&frame-name} c-pais:SCREEN-VALUE
              NO-LOCK NO-ERROR.
    
          IF AVAIL unid-feder THEN
              ASSIGN
                  INPUT FRAME {&FRAME-NAME} c-desc-uf:SCREEN-VALUE = unid-feder.no-estado.
          ELSE
              ASSIGN
                  INPUT FRAME {&FRAME-NAME} c-desc-uf:SCREEN-VALUE = ' - '.
    
    elmo curtiu isso.
  2. Ratvictor

    Ratvictor Sem Pontuação

    coloque depois do zoom
    apply "leave"to self.
    Yasser Rachid curtiu isso.
  3. Eilleen

    Eilleen Membro Ativo

    Boa tarde!

    Um palpite é que no .w do zoom não esteja dando WAIT.
    Se for uma dialog, precisa do "WAIT-FOR GO OF FRAME...", se for uma window e não for persistente, precisa do "WAIT-FOR CLOSE OF THIS-PROCEDURE".
    Outra coisa a se verificar é o .w que está chamando o zoom... Uma dialog deve chamar um zoom também dialog, e uma window deve chamar um zoom também window.

    Espero ter ajudado! :)
    don.junior e Yasser Rachid curtiram isso.
  4. Yasser Rachid

    Yasser Rachid Sem Pontuação

    Bom dia Eilleen, sua sugestão funcionou perfeitamente, muito obrigado pela ajuda e pela atenção.
    Eilleen curtiu isso.
  5. Eilleen

    Eilleen Membro Ativo

    Que bom que deu certo! :D

Compartilhe esta Página