For each customizado

Discussão em 'Progress 4GL' iniciado por tandujar, Junho 5, 2012.

  1. tandujar

    tandujar Membro Participativo

    Será que é possível eu fazer um for each com instruções variáveis ?

    Por exemplo:

    def var c-tipo as char format "x(2)".

    update c-tipo. /* tipos: >= <= = <> */

    For each ped-venda
    where ped-venda.cod-sit-ped c-tipo 3
    no-lock.

    disp ped-venda.cod-sit-ped with width 500.

    end.

    A princípio não vejo como fazer isto, ou se é possível fazer isto.

    Alguém saberia alguma forma ???

    Obrigado !
  2. jdchaves

    jdchaves Membro Participativo

    Bom dia tandujar,
    Você pode usar Query Dinamica.
    Segue um exemplo:

    Código:
    
    DEFINE VARIABLE qh     AS HANDLE.
    DEFINE VARIABLE bh     AS HANDLE.
    
    DEFINE VARIABLE c-tipo AS CHARACTER   NO-UNDO.
    
    CREATE QUERY qh.
    CREATE BUFFER bh FOR TABLE "emitente".
    
        UPDATE c-tipo.
    
    qh:SET-BUFFERS(bh). 
    qh:QUERY-PREPARE("for each emitente where emitente.cod-emitente " + c-tipo + "1").
    qh:QUERY-OPEN.
    
    DO WHILE (qh:GET-NEXT = YES):
        DISP bh:BUFFER-FIELD(2):BUFFER-VALUE./*BUFFER-FIELD(2) = nome-abrev*/
        PAUSE.
    END.
    
    
  3. tandujar

    tandujar Membro Participativo

    Obrigado !
  4. marcelo.delphos

    marcelo.delphos Sem Pontuação

    Prezados, bom dia.

    Aproveitando a dúvida do jdchaves, pergunto: como resolveria a query abaixo? Para mim está dando erro.

    ** Substituindo a linha "query-prepare" **

    qh:QUERY-PREPARE("for each emitente where substring(emitente.nom-emitente,1,1) " + c-tipo + "M").


    Parace que o progress não está aceitando qualquer coisa que seja diferente de um nome de coluna.
  5. Cobra.cne

    Cobra.cne Equipe de Suporte Moderador

Compartilhe esta Página