"Tree" no iReport [RESOLVIDO]

[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!

Bom dia!

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

Att.

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.

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.

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?

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

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:

[code]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
//…


//…
[/code]

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

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.

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?

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

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…

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?

Alguém?

[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.