1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. Anuncie Aqui
    Anuncie aqui você Também: fdantas@4each.com.br

Parametro no for each

Discussão em 'Progress 4GL' iniciado por lwazevedo, Dezembro 12, 2012.

  1. lwazevedo

    lwazevedo Membro Ativo

    Boa Tarde.

    Gostaria da ajuda de você para saber se há como passar um parâmetro ou &scopeDefine no for each.

    tenho um programa .w que tem um fill-in onde eu quero que os usuário internos coloquem o nome da tabela do banco, e quero que
    este valor que foi introduzido no fill-in seja repassado no for each. ex: se o usuário digitou Funcionario no fill-in o for each deve ser
    em cima desta tabele for each funcionario no-lock. end.

    Maneira que já tentei fazer e não consegui

    def var x as char.
    &scopeDefine tabela x
    for each {&tabela} no-lock. end.

    Não funcionou

    já tentei passar com parâmetro e também não funcionou.

    ´já tentei passar como {1} e também não funcionou.

    Gostaria de saber se alguém sabe uma maneira.

    Grato.
  2. rhemati

    rhemati Membro Participativo

    Meu caro amigo, boa noite.

    Eu tenho vários exemplos, mas este abaixo como exemplo já dá pra você uma forma de pré-processadores que vai te ajudar.

    Programa que chama o outro ( a include )
    Código:
    def var c-tabela1   as char no-undo.
    def var c-campo1    as char no-undo.
    
    assign  c-tabela1   =   'customer'   
            c-campo1    =   'name ~address'.
    
    run include/r-arg2.p c-tabela1 c-campo1
    
    
    Include - r-arg2.p

    Código:
    FOR EACH {1}:
      DISPLAY {2}.
    END.
    
    Qualquer coisa eu lhe mostro os outros.
  3. lwazevedo

    lwazevedo Membro Ativo

    Caro amigo,

    Vou testar desta forma, mas acho que acabei me explicando mal.

    Eu preciso fazer isso no mesmo programa.

    ex:

    Programa x.w

    este programa terá um fill-in onde receberá o nome da tabela referente no banco, logo após, vou utilizar o click de um
    botão que chama uma procedure onde se encontra o for each, então eu gostaria de colocar no for each esta variável que
    terá o valor do fill-in.

    tipo algo assim.
    definition
    def var parâmetro as char.

    choose do botão verificar.
    assing parâmetro = fill-in_tabela.
    run p-dados(input parâmetro).

    procedure le-dados

    for each parâmetro no-lock.
    preenche tabela temporária com os dados específicos.
    end.

    Se puder me ajudar agradeço.

    Mas vou tentar fazer da forma que me passou.
  4. jalegria

    jalegria Membro Participativo

    Saudações

    Acho que com &SCOPED não vai.
    O Progress não aceita que vc coloque uma variavel substituindo o nome da tabela no for each.

    Na pratica o q o progress irá fazer é substituir a diretiva de pre-processamento no for each.
    Vai acontecer isso:

    Código:
    &scoped tabela x
    for each {&tabela} no-lock. end.
    
    Antes de compilar o progress substituirá por:
    
    for each x no-lock. end.
    
    E acusará o erro.
    
    Procura no forum por query dinamica...
    Ou buffer handle

    A dica do rhemati tb é valida se for em um ambiente de desenvolvimento onde tem o progress full (com compilador).
    Dá certo com &scoped também.
  5. lwazevedo

    lwazevedo Membro Ativo

    Pois é , tentei de várias formas e quando se usa uma variável acontece o erro realmente. mas
    ainda estou em busca da solução.

    não tinha pensado no buffer, derre-pente vou utilizar o mesmo para resolver isso.


    valeu.
  6. rhemati

    rhemati Membro Participativo

    Bom dia.

    Eu postar aqui todos os exemplos e ai vc vê qual se adequa ao seu caso. tem com várias tabelas buferrs, etc.

    Arquivos Anexados:

Compartilhe esta Página