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

UPC para o programa PE1700a - Problemas

Discussão em 'Progress 4GL' iniciado por ds201, Maio 1, 2019.

  1. ds201

    ds201 Membro Participativo

    Código:
    /***********************************************************************************
    ** Programa.: COPE1700a.p
    ** Data.....: 06/05/2019
    ** Objetivo.: Criar campos, via UPC, no programa PE1700a.
    ***********************************************************************************/
    
    {utp\ut-glob.i}.
    
    /*--- Vari veis padrÆo Datasul para todas as UPC's ---*/
    def input param p-ind-event                       as char          no-undo. /*--- Nome do evento.             ---*/
    def input param p-ind-object                      as char          no-undo. /*--- Nome do objeto.             ---*/
    def input param p-wgh-object                      as handle        no-undo. /*--- Handle window, viewer, etc. ---*/
    def input param p-wgh-frame                       as widget-handle no-undo. /*--- Handle da frame da viewer.  ---*/
    def input param p-cod-table                       as char          no-undo. /*--- Nome da tabela.             ---*/
    def input param p-row-table                       as rowid         no-undo. /*--- Rowid da tabela.            ---*/
    
    /*--- Vari veis para instanciar objetos na tela ---*/
    def new global shared var wh-label-limite-BH-DP   as widget-handle no-undo.
    def new global shared var wh-limite-BH-DP         as widget-handle no-undo.
    
    /*--- Handle de objetos e outros ---*/
    def var c-objeto                                  as char          no-undo.
    
    /* --- Atribui‡äes iniciais ---*/
    assign c-objeto = entry ( num-entries ( p-wgh-object:file-name, "~/" ),
                                            p-wgh-object:file-name, "~/" ) no-error.
    
    /*--- Sincroniza "ext_func_ptoelet" com "func_ptoelet" ---*/
    if p-ind-event  = "BEFORE-DISPLAY" and
       p-ind-object = "VIEWER"         and      
       c-objeto     = "v05tm014.w"     then do:
    
       find func_ptoelet
          where rowid(func_ptoelet) = p-row-table
          no-lock
          no-error.
    
       if avail func_ptoelet then do:
          /*--- Trata a tabela "ext_func_ptoelet" ---*/
          find ext_func_ptoelet
             where ext_func_ptoelet.cdn_empresa     = func_ptoelet.cdn_empresa     and
                   ext_func_ptoelet.cdn_estab       = func_ptoelet.cdn_estab       and
                   ext_func_ptoelet.cdn_funcionario = func_ptoelet.cdn_funcionario
             no-error.
    
          if not avail ext_func_ptoelet then do:
             create ext_func_ptoelet.
             assign ext_func_ptoelet.cdn_empresa            = func_ptoelet.cdn_empresa
                    ext_func_ptoelet.cdn_estab              = func_ptoelet.cdn_estab
                    ext_func_ptoelet.cdn_funcionario        = func_ptoelet.cdn_funcionario
                    ext_func_ptoelet.qti_horas_limite_BH_DP = 40
                    ext_func_ptoelet.origem-registro        = "COPE1700a Bloco_U"
                    ext_func_ptoelet.cod-usuario            = c-seg-usuario
                    ext_func_ptoelet.data                   = today
                    ext_func_ptoelet.hora                   = time.
          end.
         
          release func_ptoelet.
          release ext_func_ptoelet.
       end.
    end.
    
    /*--- Mostra o valor do campo "qti_horas_limite_BH_DP" na tela do programa -------*/
    if p-ind-event  = "DISPLAY"    and
       p-ind-object = "VIEWER"     and
       c-objeto     = "V05TM014.w" then do:
      
       /*--- Trata a tabela "func_ptoelet" ---*/
       find func_ptoelet
          where rowid(func_ptoelet) = p-row-table
          no-lock
          no-error.
    
       if avail func_ptoelet then do:
          /*--- Trata a tabela "ext_func_ptoelet" ---*/
          find ext_func_ptoelet
             where ext_func_ptoelet.cdn_empresa     = func_ptoelet.cdn_empresa     and
                   ext_func_ptoelet.cdn_estab       = func_ptoelet.cdn_estab       and
                   ext_func_ptoelet.cdn_funcionario = func_ptoelet.cdn_funcionario
             no-lock
             no-error.
    
          if avail ext_func_ptoelet then do:
             assign wh-limite-BH-DP:screen-value = string(ext_func_ptoelet.qti_horas_limite_BH_DP,">>9").
          end.
         
          release func_ptoelet.
          release ext_func_ptoelet.
       end.
    end.
    
    /*--- Cria o campo "qti_horas_limite_BH_DP" na tela do programa ------------------*/
    if p-ind-event  = "INITIALIZE" and
       p-ind-object = "VIEWER"     and
       c-objeto     = "V05TM014.w" then do:
    
       /*=== Limite de horas mensais do "Banco de horas" ===*/
       create TEXT wh-label-limite-BH-DP
          assign frame              = p-wgh-frame
                 row                = 4.95
                 column             = 72.50
                 visible            = yes
                 sensitive          = no
                 height             = 0.67
                 width              = 9.45
                 format             = "x(13)"
                 screen-value       = "Limite BH-DP:"
                 fgcolor            = 9.
                
       create FILL-IN wh-limite-BH-DP
          assign frame              = p-wgh-frame
                 name               = "limite-BH-DP"
                 data-type          = "integer"
                 format             = ">>9"
                 width              = 3
                 height             = 0.88
                 row                = 4.89
                 column             = 82.20
                 visible            = yes
                 sensitive          = no
                 tooltip            = 'Limite de horas mensais do "Banco de horas".'
                 help               = 'Limite de horas mensais do "Banco de horas".'
                 fgcolor            = 9.
    end.
    
    /*--- Atualiza campo "qti_horas_limite_BH_DP" na tabela "ext_func_ptoelet" -------*/
    if p-ind-event  = "ASSIGN"     and
       p-ind-object = "VIEWER"     and
       c-objeto     = "V05TM014.w" then do:
      
       if valid-handle(wh-limite-BH-DP) then do:
          /*--- Trata a tabela "func_ptoelet" ---*/
          find func_ptoelet
             where rowid(func_ptoelet) = p-row-table
             no-lock
             no-error.
    
          if avail func_ptoelet then do:
             /*--- Trata a tabela "ext_func_ptoelet" ---*/        
             find ext_func_ptoelet of func_ptoelet
                exclusive-lock
                no-error.
               
             if avail ext_func_ptoelet then do:
                assign ext_func_ptoelet.qti_horas_limite_BH_DP = int(wh-limite-BH-DP:screen-value).
             end.
          end.
         
          release func_ptoelet.
          release ext_func_ptoelet.
       end.
    end.
    
    /*--- Habilita campos incluidos na tela ------------------------------------------*/
    if p-ind-event  = "ENABLE"     and
       p-ind-object = "VIEWER"     and
       c-objeto     = "V05TM014.w" then do:
      
       assign wh-limite-BH-DP:SENSITIVE = yes.
    end.
    
    /*--- Desabilita campos incluidos na tela ----------------------------------------*/
    if p-ind-event  = "DISABLE"    and
       p-ind-object = "VIEWER"     and
       c-objeto     = "V05TM014.w" then do:
      
       assign wh-limite-BH-DP:SENSITIVE = no.
    end.
    
    /*--- Liberar mem¢ria ------------------------------------------------------------*/
    if p-ind-event  = "DESTROY"    and
       p-ind-object = "CONTAINER"  then do:
      
       if valid-handle(wh-label-limite-BH-DP) then delete object wh-label-limite-BH-DP.
       if valid-handle(wh-limite-BH-DP)       then delete object wh-limite-BH-DP.
      
       assign c-objeto = "".
    end.
    
    return "OK".
    /*--- fim ---*/
    
    
    O programa PE1700a tem três folders. Os nomes são CARTÃO, LOTAÇÃO e CÁLCULO.
    Criei um campo novo no terceiro folder. O nome do campo é Limite-BH.

    O problema que esta acontecendo é que, quando ativo a UPC há uma falha na exibição do primeiro folder (Cartão). O label do folder fica correto, mas a tela exibida é do terceiro folder.
    Se desativo a UPC o problema desaparece.

    Rastreei o problema até o bloco que cria o campo novo na tela. Mas não consegui ver nada errado neste bloco.
    Pensei que o evento pode estar errado ou o parâmetros usados na montagem do label e do campo propriamente dito. Mas é só uma suposição.

    Depois que o problema aparece, se eu alternar entre os folders o problema desaparece.
    Não sei como repetir esta ação via UPC.

    Estou anexando as telas e a UPC, talvez alguém já tenha tido um problema semelhante.
    Na UPC há uma tabela customizada, que pode ser retirada para testes...

    Acabou ficando fora de ordem. Desculpem.

    Obrigado

    Arquivos Anexados:

  2. ds201

    ds201 Membro Participativo

    Boa tarde

    Meu post ficou meio estranho mas creio que dá para entender.

    Obrigado
  3. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Apos criar o seu campo, vc tem que dar um comando para a folder, pra reposicionar tudo na primeira ABA, run select-page in p-wgh-object(1).
  4. ds201

    ds201 Membro Participativo

    Boa tarde Richard

    Obrigado pelo apoio.
    Coloquei o comando "run select-page in p-wgh-object(1)." após a definição do campo "wh-limite-BH-DP".

    create FILL-IN wh-limite-BH-DP
    assign frame = p-wgh-frame
    name = "limite-BH-DP"
    data-type = "integer"
    format = ">>9"
    width = 3
    height = 0.88
    row = 4.89
    column = 82.20
    visible = yes
    sensitive = no
    tooltip = 'Limite de horas mensais do "Banco de horas" ou "Dia ponte".'
    help = 'Limite de horas mensais do "Banco de horas" ou "Dia ponte".'
    fgcolor = 9.


    Ao executar o programa recebi a mensagem:
    Procedure object/sotm/vwr/v05tm014.w has no entry point for select-page. (6456)

    Obrigado

    Arquivos Anexados:

  5. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    vc tem que estar com o campo p-wgh-object onde está o folder instanciado para fazer esse comando, ou seja, o handle do container, ali no seu exemplo, vc está fazendo esse comando para a viewer.
    Código:
        if p-ind-event  = "INITIALIZE" and
           p-ind-object = "CONTAINER" then do:
            run get-link-handle in adm-broker-hdl(p-wgh-object,
                                                  'page-source',
                                                  output c-folder).
    
            assign h-folder = widget-handle(c-folder) no-error.
    
            if valid-handle(h-folder) then do:
                run select-page in p-wgh-object (1).
    
  6. ds201

    ds201 Membro Participativo

    Muito obrigado. Vou testar.

Compartilhe esta Página