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] Relatórico com campos dinâmicos

Discussão em 'Progress 4GL' iniciado por Rudy, Junho 20, 2011.

  1. rhemati

    rhemati Membro Participativo

    Re: Relatórico com campos dinâmicos

    Rudy, bom dia.

    Estou tentando outra forma e depois eu te falo.
  2. rhemati

    rhemati Membro Participativo

    Re: Relatórico com campos dinâmicos

    Rudy, bom dia novamente.

    Desta forma funcionou, veja:

    01 - Primeiro arquivo dentro da pasta include - arquivo r-arg2.p:
    Código:
    FOR EACH {1}:
      DISPLAY {2}.
    END.
    
    02 - Segundo arquivo é o que chama o primeiro dentro da pasta include - arquivo exemplo-02.p
    Código:
    def var c-campo1 as char initial 'name' no-undo.
    
    assign c-campo1 = 'name ~address'.
    
    run include/r-arg2.p "customer" c-campo1
    
    É claro que é um exemplo e você pode mudar nome de arquivo, tabela e campos.

    Abraço.
  3. rhemati

    rhemati Membro Participativo

    Re: Relatórico com campos dinâmicos

    Rudy, outro exemplo.

    Olha que louco foi este que fiz. Vai dar para você fazer do jeito que você quer. É só seguir a linha de raciocínio.

    01 - Primeiro arquivo - exemplo-03.p
    Código:
    def var c-tabela1   as char no-undo.
    def var c-campo1    as char no-undo.
    
    def var c-tabela2   as char no-undo.
    def var c-campo2    as char no-undo.
    
    def var c-campos    as char no-undo.
    
    assign  c-tabela1   =   'customer'      /* {1} */
            c-campo1    =   'custnum'       /* {2} */
            c-tabela2   =   'order'         /* {3} */
            c-campo2    =   'custnum'       /* {4} */
            c-campos    =   'ordernum'.     /* {5} */
    
    run include/r-arg3.p c-tabela1 c-campo1 c-tabela2 c-campo2 c-campos
    
    02 - Arquivo numero dois dentro da pasta include - r-arg3.p
    Código:
    /* assign  c-tabela1   =   'customer'      /* {1} */ */
    /*         c-campo1    =   'custnum'       /* {2} */ */
    /*         c-tabela2   =   'order'         /* {3} */ */
    /*         c-campo2    =   'custnum'       /* {4} */ */
    /*         c-campos    =   'ordernum'.     /* {5} */ */
        
            
    FOR EACH {1}:
    
        find first {3}    
            where {3}.{4} = {1}.{2} no-lock no-error.
        if available {3} then do:
            DISPLAY {5}.
        end.
      
    END.
    
    
    Lembre-se de conectar no banco sports2000.

    Abraço.
  4. Rudy

    Rudy Membro Participativo

    Re: Relatórico com campos dinâmicos

    Bom dia rhemati, obrigado de novo.

    Vou testar os exemplos e posto o resultado.
  5. Rudy

    Rudy Membro Participativo

    Re: Relatórico com campos dinâmicos

    rhemati meu caro, funcionou perfeitamente.

    Obrigado pela ajuda.
  6. LeandroSantos

    LeandroSantos Membro Participativo

    Uma outra opção seira usando query e buffer.

    Código:
    def var vtabela   as char.
    def var vcampos   as char.
    def var loop      as int.
    
    def var qh as handle.
    def var bh as handle.
    def var fh as handle.
    
    assign
       vTabela = "customer"
       vCampos = "custnum,name,city,state,country,phone".
    
    create buffer bh for table vtabela.
    
    create query qh.
    qh:set-buffers(bh).
    qh:query-prepare("for each " + vTabela + " no-lock").
    qh:query-open.
    qh:get-first.
    
    output to "L:\teste.csv" no-convert.
    
       do while not qh:query-off-end:
          do loop = 1 to num-entries(vcampos):
             fh = bh:buffer-field(entry(loop,vcampos)).
             put unformatted fh:buffer-value ";".
          end.
          put skip.
          qh:get-next.
       end.
    
    output close.
    

Compartilhe esta Página