EMS5/Datasul - UPC- Programa de Consulta Cliente Financeiro

263 views
Skip to first unread message

Marcos Franco

unread,
Jul 11, 2019, 7:22:26 AM7/11/19
to progre...@googlegroups.com
Bom dia pessoal.
 
Desenvolvi uma UPC (código fonte abaixo) no programa de Consulta Cliente Financeiro (bas_cliente_fin) e na mesma criei um botão que ao clicar exibe uma tela com informações do cliente que temos em uma tabela customizada. Sendo que no programa UPC existem duas variáveis de parâmetros (p-cod-table e p_rec_table) e o mesmo está funcionando corretamente para o primeiro cliente consultado. Porém, ao alterar o código do cliente no programa de Consulta Cliente Financeiro, a variável p-rec-table continua exibindo o mesmo recid do primeiro cliente consultado.
 
Se alguém poder me ajudar, desde já agradeço, 
 
Marcos Franco
 

/* PROGRAMA PARAMETRIZADO NA UPC BAS_CLIENTE_FIN */
def input param p_ind_event  as character     format "x(10)"     no-undo.
def input param p_ind_objeto as character     format "x(10)"     no-undo.
def input param p_wgh_objeto as widget-handle format ">>>>>>9"   no-undo.
def input param p_wgh_frame  as widget-handle format ">>>>>>9"   no-undo.
def input param p_cod_table  as character     format "x(8)"      no-undo.
def input param p_rec_table  as recid         format ">>>>>>9"   no-undo.
def var v_wgh_button         as widget-handle format ">>>>>9":U  no-undo.
def var v_cod_clien_inform   as widget-handle format ">>>>>>9":U no-undo.
def var v_wgh_grp            as widget-handle format ">>>>>>9":U no-undo.
def var v_wgh_obj            as widget-handle format ">>>>>>9":U no-undo.
 
case p_ind_event:
    when 'DISPLAY' then do:
        assign v_wgh_grp = p_wgh_frame:first-child.
        do while v_wgh_grp <> ?:
            assign v_wgh_obj = v_wgh_grp:first-child.
            do while v_wgh_obj <> ?:
                assign v_wgh_obj = v_wgh_obj:next-sibling.
            end.
            assign v_wgh_grp = v_wgh_grp:next-sibling.
        end.
 
        create button v_wgh_button
        assign frame     = p_wgh_frame
               width     = 4.00
               height    = 1.13
               row       = 01.08
               col       = 70
               label     = ''
               visible   = yes
               name      = 'bt_teste'
               sensitive = yes
               tooltip   = 'Teste'
               triggers:
                  on choose persistent
                     RUN T:\TEMP\msg.p (input p_rec_table).
               end triggers.
           if v_wgh_button:load-image("image/im-teste.bmp") then.
    end.
end case.
return "OK".
 

/* PROGRAMA MSG.P */
def input param p_rec_table  as recid     format ">>>>>>9"         no-undo.
 
find emscad.cliente where recid(cliente) = p_rec_table
                    no-lock no-error.
 
if avail cliente then
   message "Cliente encontrado: " cliente.nom_pessoa "p_rec_table:" string(p_rec_table)
           view-as alert-box error.
else
   message "Cliente não encontrado - p_rec_table:" string(p_rec_table)
           view-as alert-box error.

Marcelo Torres

unread,
Jul 12, 2019, 11:01:53 AM7/12/19
to progre...@googlegroups.com
Olá Marcos.

Eu não sei opinar na solução que você montou, sem simular aqui na minha base. Mas posso te falar como eu faço normalmente em situações similares.

Normalmente eu obtenho o handle dos campos da chave primária da tabela que normalmente ficam em tela. No programa eu faço uma busca (via FIND mesmo) nesta tabela pelo valor do que está em tela e encontro o registro.

Não sei se ajudou em alguma coisa.


Abraço,
Marcelo Torres




--
Recebeu esta mensagem porque subscreveu ao grupo "Progress - 4GL" do Grupos do Google.
Para anular a subscrição deste grupo e parar de receber emails do mesmo, envie um email para progress_4gl...@googlegroups.com.
Para publicar uma mensagem neste grupo, envie um email para progre...@googlegroups.com.
Visite este grupo em https://groups.google.com/group/progress_4gl.
Para ver este debate na Web, visite https://groups.google.com/d/msgid/progress_4gl/CAFSYjairawnWwtx%3DzDvEe9ssKX68tKdie%2B4tkz8iT%3DuBZQk%3DBA%40mail.gmail.com.
Para mais opções, visite https://groups.google.com/d/optout.

Marcos Franco

unread,
Jul 12, 2019, 1:33:03 PM7/12/19
to progre...@googlegroups.com
Olá Marcelo.

Primeiramente gostaria de lhe agradecer pelo retorno.

É possível você me enviar um exemplo da forma que você utiliza.

Obrigado,

Marcos Franco.

Marcelo Torres

unread,
Jul 12, 2019, 4:05:44 PM7/12/19
to progre...@googlegroups.com
Posso sim, segue um exemplo de UPC no programa CD0904.

Tá bem simples (é a mais simples que achei aqui).

Eu obtenho o handle dos campos "País" e "UF". São chave. Coloco estes handles em variáveis globais.
Crio um botão para extensão do cadastro. Declaro estas variáveis no programa auxiliar de cadastro. É a chave que eu uso.

Esclarecimentos gerais:
A procedure "pi-busca-handle" vai buscar na frame especificada um determinado campo e devolve o handle dele (caso encontre).
A procedure "pi-lista-handle" vai listar (num arquivo texto) todos os objetos de uma determinada frame.

Se precisar de algumas outras coisas, te passo. Gosto de fazer UPCs, então já acumulei alguma experiência no assunto.


Abraço,
Marcelo Torres




upc-exemplo.p
Reply all
Reply to author
Forward
0 new messages