[RESOLVIDO] Como passar input parameter para smartQuery?

Discussão em 'EMS , HCM e Totvs 11' iniciado por Rudy, Maio 26, 2011.

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

    TrombiniSP Membro Participativo

    Re: [RESOLVIDO] Como passar input parameter para smartQuery?

    Olá,

    Evitem usar Variavei Globais. Isso vai causar problemas futuros.

    Para este tipo de solução é melhor usar das boas práticas de desenvolvimento. Eu faria da seguinte maneira:

    Na SmartQuery:

    Criar variavél que vai compor minha Query.
    Código:
    /* variable definitions */
    def var v-cod-historico as char init "" no-undo.
    
    
    Criar uma procedure de atribuição de valor a variável.
    Código:
    PROCEDURE pi-atualiza-cod-historico:
        INPUT PARAMETER p-cod-historico AS CHAR.
    
        ASSIGN v-cod-historico = p-cod-historico.
    END PROCEDURE.
    

    No meu programa principal (objeto master) eu vou na procedure "local-initialize" após o dispatch passo o parametro e abro a query, como a seguir:
    Código:
      /* Code placed here will execute PRIOR to standard behavior. */
      {include/win-size.i}
    
      run pi-before-initialize.
    
      /* Dispatch standard ADM method.                             */
      RUN dispatch IN THIS-PROCEDURE ( INPUT 'initialize':U ) .
    
      /* Code placed here will execute AFTER standard behavior.    */
       RUN pi-atualiza-cod-historico IN h_<query> (INPUT "5" /* p-cod-historico */ ).
       RUN adm-open-query             IN h_<query>.
    
    Bom, é tipo isso ae. Não tenho aqui na maquina de exemplo mas acho que vcs entenderam e penso que possam ver o quanto é benéfico fazer desta forma. Imagine a quantidade de parametros de situações que vc pode customizar desta forma?

    Obrigado e até mais.

    Cleber Trombini
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página