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

Duvida Abrir programa com detalhes do registro

Discussão em 'Progress 4GL' iniciado por lm1979, Maio 31, 2019.

  1. lm1979

    lm1979 Membro Participativo

    Bom dia,
    Estou com a seguinte situação:
    - Aqui na empresa temo dois programas onde um é uma consulta da movimentação da rastreabilidade e o outro o é a consulta do cadastro da rastreabilidade, os usuários querem clicar duas vezes no registro da movimentação e abrir a consulta do cadastro com a rastreabilidade selecionada no programa anterior.

    O programa maucq028 tem a movimentação em um browser, ao clicar duas vezes na linha o programa maucq033 será aberto com o registro da rastreabilidade.

    Esses dois programas já existem a algum tempo, é possível fazer essa alteração ou seria melhor criar outro programa do zero?
  2. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    o programa de consulta de movimento, vc já deu a solução, é duplo clique na linha e chama o outro, sem problemas, o que vc tem que fazer no outro é o seguite, criar uma procedure que recebe os dados do movimento e posiciona no registro pra mostrar. depois, no programa de movimento, ao inves de fazer só run maucq033, vc tem que fazer run maucq033 persistent set CAMPOHANDLE, depois vc faz um run dispatch 'inicialize' in CAMPOHANDLE. e depois run PROCEDUREPOSICIONA in CAMPOHANDLE (CHAVEREGISTRO).

    assim vc preserva o funcionamento original do programa, ou seja, o seu maucq033 continua funcionando quando executado pelo menu do datasul e vai funcionar sendo chamado e passando parametros.
    rohis e lm1979 curtiram isso.
  3. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Basta você criar uma procedure no programa que é chamado e colocar os parâmetros de entrada nele.

    Tipo:
    Código:
    PROCEDURE procChamada.
         DEF INPUT PARAMETER RegistroRowID AS ROWID.
    
         FIND FIRST minhaTabela WHERE ROWID(minhaTabela) = RegistroRowID NO-LOCK NO-ERROR.
    
         /* CÓDIGO PARA EXIBIR AS INFORMAÇÕES NOS CAMPOS DA TELA */
    
         WAIT-FOR CLOSE OF THIS-PROCEDURE.
    
    END PROCEDURE.
    
    No evento do duplo clique do browse:
    Código:
         DEF VAR progChamado AS HANDLE.
    
         RUN pasta\MeuProgramaChamado.r PERSISTENT SET progChamado.
    
         RUN procChamada IN progChamado(INPUT ROWID(minhaTabela)).
    
         progChamado = ?.
    
    Esse tipo de chamada é tipo BO, pra não ter que criar um novo programa com os input parameter no definitions.
    rohis e lm1979 curtiram isso.
  4. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    vc ve algum problema em fazer o run dispatch e depois run na producedure ? dai não precisaria fazer o wait-for que vc está sugerindo.
  5. lm1979

    lm1979 Membro Participativo

    Obrigado,
    Vou tentar montar esse esquema, se tiver alguma dúvida eu posto e se eu conseguir de primeira também posto hehehe.
    Abraço.
  6. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Nunca fiz isso, como esse dispath funciona?

Compartilhe esta Página