"Tree" no iReport [RESOLVIDO]

13 respostas
F

[RESOLVIDO]
Consegui resolver dessa forma: Criei um subgrupo com o Group Expression assim:

Onde ele muda o grupo a cada vez que muda o que está depois (.01, .02, .03 etc.).
Criei três variáveis, uma para o tipo de despesa, outra para a soma dos lançamentos com o código e outra para os percentuais, pus nesse grupo e setei os evaluation time para group.

Galera, preciso criar um relatório que parece ser simples, mas não sei como fazê-lo.
A estrutura dele é tipo uma “árvore”, contendo códigos.

Exemplo:

Titulo

3 Despesas

  31 Fixas

    311 Desp. Escritório     valor gasto - x% (das despesas)
    312 Desp. Pes. Adm.      valor gasto - x%
    ...

  32 Variáveis

    321 Material             valor gasto - x%
    ...

---

4 Receitas

    411 Receitas             valor recebido - x% (das receitas)
    ...

---

Receitas: valor
Despesas: valor - x% das receitas
Resultado: valor - x% das receitas

Alguém tem alguma idéia?
Obrigado!

13 Respostas

ManoJava

Bom dia!

Pelo que vejo seu relatório se resolve facilmente com um simples agrupamento.

Att.

RenataFA

Se vc souber, qual o número de “quebras” que precisará então realmente, apenas 2 agrupamentos e está tudo feito! :wink:

Alias, pelo exemplo, tá parecendo plano contábil ou centros de custo, se for, é fácil, pq o número de quebras é fixo msm.

F

haha muito bom…
Eu sou novato com o iReport (na verdade estou iniciando no desenvolvimento em geral), então fiquei meio perdido.
Muito obrigado! Vou tentar quando estiver em casa e venho aqui postar.

F

Perdão, mas esqueci de falar que esses dados vêm do banco (códigos já cadastrados).
Isso muda a situação, certo? Como eu poderia fazer, no caso?

E

fasts, para fazer é simples. Crie um consulta no banco de dados que retorne as informações que você precisa.
Depois crie uma conexão com o banco no iReport. No relatório coloque na parte de query a consulta feita no banco.
Clique em read fields, e se os campos forem achados quer dizer que até agora tudo ocorreu bem.

Utilize esses campos com agrupamentos, e então será possível criar o relatório desejado.
Até mais

F

Bom, galera.. Resolvi fazer esse relatório, pois se tornou necessário, e agora preciso de uma ajudinha.

Eu tenho cadastrado códigos nesse formato:
"311.01", "321.03", "411.04" etc., e cada um tem suas descrições, mas nesse relatório eu preciso separar os códigos por um "título" que não vem do banco.
O exemplo já foi dado acima, mas vou mostrar como está o meu relatório atualmente, e como eu preciso incrementar.

Atualmente:

Código        Descrição                               R$              %
311.01        Aluguel e condomínio                    X,00           x%
311.02        Luz                                     X,00           x%
//...
312.03        Vale transporte-adm                     X,00           x%
//...

Como eu preciso:

Código        Descrição                               R$              %
3 Resumo das Despesas    // isso é um "título"

31 Fixas     // isso é um "título"

311 Despesas de Escritório    // isso é um "título"

311.01        Aluguel e condomínio                    X,00           x%    // código cadastrado
311.02        Luz                                     X,00           x%    // código cadastrado
//...
-----------------------------------------------------------------------------
312 Despesas com Pessoal Administrativo    // isso é um "título"

312.03        Vale transporte-adm                     X,00           x%     // código cadastrado
//...
-----------------------------------------------------------------------------
32 Variáveis      // isso é um "título"

321 Material          // isso é um "título"

321.01        Materiais de Construção                 X,00           x%     //código cadastrado
321.02        Material hidráulico                     X,00           x%        //código cadastrado
//...

-----------------------------------------------------------------------------
//...

Ainda não consegui fazer um agrupamento que consiga resolver esse meu problema.

E

fasts :!: o segredo está na consulta ao banco. Você deve retornar a quantidade de colunas que deseja no relatório. Apartir de então será possível visualizar os dados desejados. O iReport vai deixar as coisas organizadas. 8)

Vou tentar dar um dica. Retorne na consulta um campo que identifica o grupo. Por exemplo: field group, que só muda quando muda o agrupamento.
Então no iReport você cria um agrupamento por esse campo. Se mesmo assim você não tiver o título, então crie condições no campo de título do iReport.
Exemplo.: group == 311 ? “Despesas de Escritório” : group == 312 ? “Despesas com Pessoal Administrativo” : group = …etc.

F

Obrigado, EAugusto.
Eu consegui já uma luz… Ele exibe se é fixa ou Variável, mas repete pra cada item da lista, o que não deveria acontecer. Já pensei na solução, mas aí eu teria que fazer uma verificação (em cada atributo dos objetos da lista) e um group header pra cada tipo de código (31, 32, 311, 312, 321 etc.).
Provavelmente há uma forma melhor de fazer isso, não?

E

Cara, clica no relatório e agrupa.
Se não quiser fazer desse jeito, então clica no text field e nas propriedades você não checa o campo “print repeated values”

FLWS

F

OK, obrigado.
Eu fiz checando com um IF pra cada tipo de código, mas ficou muito estruturado, horroroso. Não tem como fazer algo mais OO não?

( $F{numero}.startsWith( "311" ) ? "Despesas de Escritório" :
    ( $F{numero}.startsWith( "312" ) ? "Despesas com Pessoal Administrativo" :
    ( $F{numero}.startsWith( "321" ) ? "Material" :
    ( $F{numero}.startsWith( "322" ) ? "Ferramentas e Equipamentos" :
    ( $F{numero}.startsWith( "323" ) ? "Mão de Obra" :
    ( $F{numero}.startsWith( "324" ) ? "Serviços de Terceiros" :
    ( $F{numero}.startsWith( "325" ) ? "Operacionais" :
    ( $F{numero}.startsWith( "326" ) ? "Comerciais" :
    ( $F{numero}.startsWith( "327" ) ? "Impostos" :
    ( $F{numero}.startsWith( "328" ) ? "Despesas Financeiras" :
    ( $F{numero}.startsWith( "329" ) ? "Dividendos e retiradas" : null )))))))))))

E cada código ficou com um espaço em branco muito grande pro próximo…

F

Ficou assim:
http://img440.imageshack.us/img440/9525/relatorioy.png

Agora, eu queria que onde está esse “null” ficasse a soma dos valores que ficam em R$ (já tenho os valores) e essa soma fosse feita em cada um dos separadores (despesas de escrit., desp. pessoal adm. etc.), mas ainda não consegui dar jeito nisso.

A estrutura do relatório tá assim:

[GRUPO1 - Fixas/Variáveis] titulo (fixa/variavel) [GRUPO2 - Desp. Escrit./Desp. Pes. Adm/...] titulo (...) detail [] []
http://img576.imageshack.us/img576/7426/estruturarelatorio.png

Alguma idéia?

F

Alguém?

F

[RESOLVIDO]
Consegui resolver dessa forma: Criei um subgrupo com o Group Expression assim:

Onde ele muda o grupo a cada vez que muda o que está depois (.01, .02, .03 etc.).
Criei três variáveis, uma para o tipo de despesa, outra para a soma dos lançamentos com o código e outra para os percentuais, pus nesse grupo e setei os evaluation time para group.

Valeu pela ajuda, galera.

Criado 24 de outubro de 2011
Ultima resposta 27 de fev. de 2012
Respostas 13
Participantes 4