É possível repetir relatório criado com iReport? RESOLVIDO
18 respostas
L
Lila
Boa tarde,
Criei um relatório com ireport sendo que ele possui vários sub-relatórios, estou tentando fazer com que esse relatório (que contém duas páginas) possa repetir várias vezes, porém com dados diferentes. Não consegui uma solução, isso seria possível?
usar o mesmo relatório para trazer outras informações?
da mesma tabela? ou seria outra tabela qualquer?
Ficou meio vago o problema…
Att. Jonas
M
ManoJava
Boa tarde!
Como assim? repetir o mesmo layout do relatório mudando os dados??
Att.
L
Lila
Isso, tenho que repetir esse mesmo layout, só que com dados diferentes. Ou melhor, nesse relatório eu trabalho somente com listas, primeiramente ele deveria conter duas páginas com dados referentes a um aluno (isso está ok), agora preciso que o mesmo relatório seja repetido para uma turma, ou seja preciso que no mesmo relatório estejam todos os relatórios de aproximadamente 40 alunos. Fazendo assim uma repetição desse relatório.
É possível???
Obrigada
T
TheKill
hum, nao vejo problemas…
Pode sim, a única coisa que vai mudar é o SQL que vai ser passado para o relatório…
Se são informações IGUAIS, o relatório vai ser igual… Agora, se tiver informações a mais, que nao contem no relatório
irá ter que fazer um relatório “igual” com as informações que faltam.
Att. Jonas
L
Lila
Nesse caso, não utilizo nenhuma instrução sql, somente envio listas como parâmetro e no final gero o relatório conforme o trecho:
Continua no mesmo critério comentado anteriormente,
Se as informações sao IGUAIS, não vejo motivo de criar outro relatório…
Se falta alguma informação por exemplo da ‘Turma’ então irá ter de criar um novo relatório “IGUAL”
com as informações que faltam acrescentar…
No seu caso de listas… vai ter de acrescentar a esta lista as informações de todos os alunos
Att. Jonas
L
Lila
Minha dúvida está no fato que que primeiro devo finalizar o relatório de um aluno(que no caso contém duas paginas) e após essas páginas começar o relatório do próximo aluno, e assim sucessivamente, tentei fazer essa repetição e não tive sucesso, simplesmente gera somente um relatório, os dados do segundo aluno sobrepõe o do primeiro…Então to pesquisando se realmente seria possível fazer essa repetição…
M
ManoJava
Boa tarde!
Poderia ser feito por grupo aluno, dai seriam exibidos todos os dados do 1º aluno, quando mudasse o grupo para o 2º aluno seria a mesma coisa assim ate o ultimo aluno, levando em consideração que cada aluno é um registro porém com os mesmos campos.
Att.
T
TheKill
Sim, entendi agora oque deseja fazer…
É possivel sim. e não vejo problemas… Sempre faço isso através de SQL…
Verifique sua listagem se está correta… Se nela contem todas informações de forma correta…
Acho que deve ser algum problema neste sentido…
Att. Jonas
L
Lila
Mais detalhes para que talvez vocês possam me ajudar:
Cada sub-relatorio contido nesse relatorio recebe uma lista como parametro e essas listas variam para cada aluno, então estou tentando fazer uma estrutura de repetição para isso, ou seja para cada aluno as listas são preenchidas com informações diferentes, mas acredito que nessa parte do código que eu mostrei talvez tenha alguma maneira que faça com que ao gerar o relatorio as informações do anterior sejam mantidas, estou tentando fazer isso, mas ainda não consegui…
Obrigada.
T
TheKill
uma pergunta,
as informações dos alunos sao enviadas para o relatório através de listas…
certo, essas listas todas contem os mesmos objetos com informacoes diferentes,
certo, então nessa ‘lista’ vc tem as informações de joao, maria, etc…
se está enviando as informacoes de joao, maria, etc. na mesma ‘lista’ vai funcionar…
é isso que está a fazer?
Att. Jonas
L
Lila
É por isso que precisaria da estrutura de repetição, na primeira passagem só contém informações referentes a um aluno aluno, isso porque passo como parametro para os metodos aqui na aplicação a matricula desse aluno, para o proximo aluno teria que passar uma nova matricula e assim obter os dados referentes a esse aluno, então para cada aluno, as lista são preenchidas novamente, nesse caso precisaria de repetir a as páginas geradas para cada aluno…
Obrigada
T
TheKill
Dessa forma, acho que não seria possível…
O que dá para fazer é enviar todas as informações de todos os alunos junto no mesmo ‘List’
e ai sim…
Mas se entendi a forma que quer fazer… não sei se é possivel… Mas lhe pergunto.
Porque não enviar tudo ao mesmo tempo?!
L
Lila
Tudo ao mesmo tempo?
Mas no caso são muitas informações para somente um aluno (que estão distribuídas em um relatório de 2 folhas), teria como controlar isso passando tudo de uma vez? Quero dizer, esse controle para pasasgem para o próximo relatório sem interferir no anterior, sendo que todos irão conter os mesmos campos?
T
TheKill
é, tipo…
seria como enviar um ArrayList para o relatório…
ou então você pode enviar o Objeto “aluno” para o relatório…
pois o objeto aluno vai conter todas informações
L
Lila
Ainda não resolvi isso Thekill,
O problema é que reciso chamar meu método que gera um pdf dentro de um for, e depois imprimir todos os documentos de uma vez.
Preciso fazer assim porque o relatório é muito complexo e já está pronto para um único cliente. Precisaria de alguma forma de concatenar o
conteúdo dos relatórios, até tentei, mas sempre imprime apenas o último registro.
Alguém saberia me ajudar nisso?
T
TheKill
Lila:
Ainda não resolvi isso Thekill,
O problema é que reciso chamar meu método que gera um pdf dentro de um for, e depois imprimir todos os documentos de uma vez.
Preciso fazer assim porque o relatório é muito complexo e já está pronto para um único cliente. Precisaria de alguma forma de concatenar o
conteúdo dos relatórios, até tentei, mas sempre imprime apenas o último registro.
Alguém saberia me ajudar nisso?
Moça, imagine seu objeto de alunos…
Ele não possui todos os seus sets e getters, e você não possui um ManterService do objeto Aluno para consultar as informações no banco de dados?
Certo, ao invés de passar String nome; para o relatório, repasse o objeto Aluno. e então oque mudará é que vc terá que fazer Aluno.getNome() etc…
Não vejo solução mais fácil para este problema.
Att. Jonas
L
Lila
Esqueci de postar a solução na época. então vou deixar aqui, caso ajude a alguém:
Criei uma lista com os objetos JasperPrint referentes a cada aluno mencionado:
Recuperei as páginas de todos os objetos JasperPrint guardados e armazenei em um JRPrintPage e então adcionei cada página em um JasperPrint que enviei para o relatório.
....
List<JRPrintPage>listaRel=newArrayList<JRPrintPage>()...
for(inti=0; i < listaRelatorios.size(); i++) {aRelatorio.setJasper(listaRelatorios.get(i));}
listaRel=aRelatorio.getJasper().getPages();for(JRPrintPagejRPrintPage:listaRel){
jasperPrint.addPage(jRPrintPage);}