Pessoal,
Bom dia. Sou novo no uso do Jasper Reports e estou tomando um baile dele. Estou usando o iReports para desenvolver os lay-outs dos relatórios.
Eu tenho um relatório para desenvolver em que eu preciso (eu acho) usar um crosstab. Esse relatório exibe uma série de detalhes, agrupados por Diretoria e entre as colunas de detalhes para o grupo eu tenho informações como Receitas, Custos Diretos, Custos Indiretos, etc. . No final eu tenho que mostrar um resumo da seguinte forma:
Diretoria 1 Diretoria 2 ... Diretoria N
Receitas
Custos Diretos
Custos Indiretos
Lucros
Eu tenho um problema para usar um crosstab aí. Embora as colunas possam ser claramente agrupadas pelo campo diretoria ( $F(DIRETORIA) ), eu não posso usar os campos Receitas, Custos Diretos, Custos Indiretos como grupos de linhas porque eu não preciso que eles mostrem uma série de valores, eu preciso que eles mostrem apenas os títulos (“Receitas”, “Custos Diretos”, etc.) e os valores resumidos calculados na seção de detalhes. Não sei se fui claro na explanação, mas apenas para exemplificar o crosstab padrão do jasper criaria algo como:
Diretoria 1 Diretoria 2 ... Diretoria N
Receita valor 1
Receita valor 2
Receita valor 3
.
.
.
Receita valor n
Em suma eu não preciso que ele gere uma lista de valores distintos, preciso apenas dos rótulos das colunas.
Como eu sou principiante, pensei em resolver isto criando uma expressão de algum tipo java que me permitisse gravar apenas os rótulos das linhas (“Receitas”, “Custos Diretos”, etc.) e os valores calculados na seção de detalhes. O fato é que eu não estou conseguindo fazer isto.
Daí seguem-se minhas dúvidas:
- É possível fazer o que eu quero? Se sim, qual seria a melhor forma?
- É possível isso com o uso de expressões, gerando uma variável do tipo collection e guardando esses valores?
- Alguém poderia postar algum link sobre alguma ajuda de como usar expressões no jasper? Seria a ajuda do groovy?
Obrigado.
Caro colega ,
A pouco tempo tbm tomei uma surra do IReport com crosstab porém parece que o seu caso é mais sério.
Faz o seguinte: coloca um printscreen de como seria esta sua tabela preenchida feito no excel/openoffice pra dar uma olhada.
Renato,
Estou enviando print-screen da tabela de detalhes e o que eu precisaria no crosstab através de um Excel bem tosco, mas acho que dá pra entender. Eu preciso que o resumo do grupo de algumas colunas da seção detalhes (no caso, Faturamento (=receitas), Custos Diretos, etc.) tornem-se linhas no meu crosstab. As diretorias tornam-se as colunas.
Se ficar obscuro e eu puder esclarecer melhor, me avise.
Valeu pela força.
Meu caro,
Não consegui enxergar direito o print da tela mas pelo XLS deu pra ter uma ideia .
Não sei exatamento com seriam as suas classes de entidade mas vamos ver se t ajudo :
Acho que vc teria basicamente 3 campos: seria diretoria , financeiro (que seria a descricao das despesas) e outro seria valor (esses nomes vão depender dos dados resultantes da sua consutla)
O que ocorreria:
Na hora de criar o crosstab a tela step2 - Define row groups vc escolheria financeiro , no step 3 escolheria diretoria e no step 4 Define detail seria o valor.
Pra t dizer com mais exatidão me dê mais informações de como são os dados que vc popula a tabela (List de beans ou consulta)
Renato,
Se eu conseguir montar um dataset com o formato que você citou eu realmente conseguiria resolver o problema. O problema é que no dataset da seção detalhes os campos relativos à receitas e custos estão separados em campos isolados.
Eu não queria abrir uma nova consulta para o banco de dados já que estes campos já estão sendo processados na seção detalhes (1. porque eu programo defensivamente, acho que quanto menos consultas ao BD eu fizer, melhor, 2. porque eu tenho que gerar uma crosstab de custos e receitas da parte real e da parte projetada da seção detalhes e a parte projetada faz vários cálculos que eu poderia aproveitar depois nas crosstabs).
Eu estou tentando montar uma variável coleção que conseguisse agrupar esses campos (custos e detalhes) da seção detalhes em algo como um campo ‘Financeiro’, mas não sei se por ser iniciante ou se é uma limitação da ferramenta eu não estou conseguindo fazer isto.
Daí minha pergunta pra usuários mais experientes como você:
- Eu consigo agrupar esses campos da seção detalhes em duas coleções, uma com labels pra montar o row group do crosstab e outro para conter os valores dessa coleção? (nem consigo imaginar como fazer isso);
- Será que a única forma de resolver meu problema seria fazendo uma consulta direta ao banco de dados?
Obrigado pela ajuda…