[RESOLVIDO] Duvida com Layout (cabecalho, detalhe e rodape)

Discussão em 'EMS , HCM e Totvs 11' iniciado por kleberdomingos, Fevereiro 25, 2011.

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

    kleberdomingos Sem Pontuação

    Pessoal, boa noite...

    Uma duvida, que acredito que para muitos seja coisa simples...

    Preciso montar um layout com Header, Detalhe e Trailer. Para montar a Header, não tive dificuldades, utilizei um put e inclui os campos, já que a maioria é fixo, já para linha detalhes, usei um for each na tabela tit_ap e retornei os campos necessarios a partir de um put, inseri os campos necessários, que por serem detalhes, podem se repetir várias vezes. Porém... não consigo fazer a trailer do arquivo que necessita: Somatoria de todas as linhas (linha da header mais todas linhas de detalhe) e também a somatoria de valores (exemplo, somatorio de todos os $ dos titulos).

    Observações:

    O cabecalho por ser fixo, foi todo retornado com os valores definidos por "def var", como:

    put
    empresa
    cidade
    telefone
    skip.


    Os detalhes são multiplos... como por exemplo

    for each tit_ap where tit_ap.cod_tit_ap > 10000
    put
    vlr_tit_ap
    skip.

    Nessa parte... para incluir o rodapé, eu apliquei um "end", ficando assim:

    for each tit_ap where tit_ap.cod_tit_ap > 10000
    put
    vlr_tit_ap
    skip.
    end.

    Agora... preciso incluir uma trailer, com a quantidade total de linhas no arquivo, mais a soma dos valores... por exemplo:


    Suponha que o arquivo tenha gerado, 1 linha de header, mais 10 de detalhes, então, minha trailer, teria que retornar o valor 11. Suponha também, que todos os titulos tivessem o valor de 10,00, entao... precisaria que a trailer também retornasse o valor 100.
    E por fim... a duvida...

    Como faço para inserir esses campos na trailer do arquivo???

    Desde já, obrigado!
  2. jonas

    jonas Membro Participativo

    Segue exemplo:

    Código:
    def var i-cont-det as integer no-undo.
    def var d-somatoria as decimal no-undo.
    
    /* Cabeçallho */
    put
    empresa
    cidade
    telefone
    skip.
    
    /* Detalhe */
    assign i-cont-det    = 0
              d-somatoria = 0.
    
    for each tit_ap no-lock where tit_ap.cod_tit_ap > 10000:
        assign i-cont-det    = i-cont-det + 1
               d-somatoria = d-somatoria + tit-ap.vlr_tit_ap.
        put vlr_tit_ap at 1.
    end.
    
    /* Trailler */
    put i-cont-det  + 1 at 1.   /* i-cont-det contém a quantidade de detalhes + 1 referente ao registro header */
    put d-somatoria    at 15.  /* total calculado no for each */
    
  3. kleberdomingos

    kleberdomingos Sem Pontuação

    Jonas, boa noite!

    Era isso mesmo q eu precisava!

    Mto Obrigado

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

Compartilhe esta Página