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

[RESOLVIDO] Parâmetros opcionais de procedures

Discussão em 'EMS , HCM e Totvs 11' iniciado por MVinicius, Abril 23, 2018.

Status do Tópico:
Não esta aberto para novas mensagens.
  1. MVinicius

    MVinicius Sem Pontuação

    Meus cumprimentos aos membros do 4Each!
    Peço a ajuda de vocês para um problema que estou enfrentando.

    Utilizo Progress 11.6 no desenvolvimento de programas para TOTVS Datasul.

    Tenho uma dúvida referente a passagem de parâmetros entre procedures, mais específicamente entre duas telas. Tenho uma tela que recebe uma INPUT PARAMETER x, e essa tela recebe o parâmetro de uma tela anterior que a chama.

    O problema surgiu, quando agora preciso que esta segunda tela possa ser aberta de forma direta e independentemente. Mas o Progress retorna o erro de que foi passado um número incorreto de parâmetros quando tento abrir a tela. Existe algum bypass que eu possa fazer, utilizando essa mesma tela, algum comando que possa tornar o parâmetro opcional, ignorando o erro?

    Obrigado!
  2. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Até onde sei, no progress não há parâmetro opcional, mas dá pra contornar isso usando BO, desta forma.

    No Definitions do programa, não use nenhum INPUT PARAMETER, dessa forma você pode abrir o programa diretamente.

    Cria uma procedure, tipo essa abaixo com nome "Chamada", e nela você coloca os parâmetros de entrada:

    Código:
    PROCEDURE Chamada.
           DEFINE INPUT PARAMETER MeuParametro AS CHAR.
    
          [Seu código aqui]
    
          WAIT-FOR CLOSE OF THIS-PROCEDURE. /* Importante para o programa não fechar sozinho */
    END PROCEDURE.
    
    Depois, se quiser chamar seu programa passando parâmetros faça assim:

    Código:
    DEF VAR Prog AS HANDLE.
    
    RUN MinhaPasta\MeuPrograma.w PERSISTENT SET Prog.
    
    RUN Chamada IN Prog(INPUT "Teste").
    
    /* Código abaixo limpa o programa da memória, MUITO IMPORTANTE */
    DELETE OBJECT Prog NO-ERROR.
    Prog = ?.
    
    Pronto.
    don.junior e MVinicius curtiram isso.
  3. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

  4. MVinicius

    MVinicius Sem Pontuação

    Funcionou perfeitamente!

    Muito Obrigado!!
    rafael.andrade curtiu isso.
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página