Estou fazendo um relatório no Ireport 3.7.2 e necessito que o relatório repetia o detail um número determinado de vezes que eu passo por parâmetro.
Relatório de cartão de visita, fiz apenas 1 detail com os campos, e pelo sistema, passo quantos deve imprimir.
Alguém tem alguma idéia de como faço isso, imprimir uma certa quantidade 1 grupo ou o Detail?
Obrigado.
Você está fazendo o relatorio executando uma query no relatorio ou passando uma coleção ?
Se você está passando uma colecao, você não poderia simplesmente setar em uma colecao o detalhe varias vezes? Assim ele se repetiria ate a colecao chegar ao fim.
passo parametros fixos, de periodo, e titulo, e os cartões irão ser repetidos, todos iguais, com o numero que determinei em um certo parametro passado tb. como será tudo igual, fiz apenas um detail, com isso gostaria que se repetisse, até dar o numero exato que foi passado.
determinei que coubesse 5 cartões por página do relatório.
Entao oq seria diferente? O Periodo e Titulo e o cartão é igual? Teria o codigo?
sim, esqueci de mencionar, obrigado
existe o código de barras, com isto o numero passado do codigo é diferente. apenas este parametro é diferente…
é possivel fazer o que estou querendo fazer?
como havia esquecido do código de barras, tem isso, repetir o detail, fazendo com que tenha por exemplo 5 cartões por página, e
repetir o detail, mudando o codigo, e repetindo com o numero x que determinei, posso determinar agora na programação ou passando como parâmetro…
você falou da coleção, eu posso por todos os números que quero que seja impresso em uma coleção e passar pro relatório, com isso ele irá repetir com o numero que contem na coleção? como eu seto o detalhe com o numero da coleção? nunca trabalhei com isso em relatório.
obrigado pela atenção!
Entao famos fazer assim:
Vc tem seu objeto:
Class Dados {
String periodo;
String titulo;
String cartao;
String codigo;
.
.
.
//get sets
}
Certo, entao iremos fazer assim, você vai pegar este objeto e setar as informações que devem ser exibidas no seu relatorio:
Collection listaDados = new ArrayList();
Dados dado = new Dados();
dado.setPeriodo("10");
.
.
.
listaDados.add(dado);
// Sete ate a quantidade q deseja ou faça um looping setando. Com as informacoes q desejar
// Agora iremos exportar
// Pegue o jasperPrint
JasperPrint jasperPrint = JasperFillManager.fillReport("Diretorio.jasper", parametros, new JRBeanCollectionDataSource(listaDados));
// create a PDF file
byte bytes[] = JasperExportManager.exportReportToPdf(jasperPrint);
// Gerar em diretorio especificado para ver se esta correto
OutputStream out = new FileOutputStream("c:\\arquivo.pdf");
out.write(data);
out.close();
Qualquer coisa me add no msn: rdmardegam@hotmail.com
muito obrigado, ja me deu um norte, vou dar uma estudada e fazer alguns testes. qualquer coisa pergunto mais aqui, agradeço muito.
Consegui fazer com o Collection, o detail repete conforme o número de registros que contêm na lista, mas ele mostra apenas o último registro do Collection, se passei 5 números, ele repete 5 vezes, mas em todos os detalhes, ele mostra somente o número 5, o último registro…
O que pode estar acontecendo ou o que estou fazendo de errado?
Certo você deve passar os atributos atraves da collection!
Entao no seu Ireport, vc deve recuperar os atributos atraves de variaveis e nao de parametros.
Verifique como eles estão definidos.
Caso n seja isso, poste seu codigo e jrxml que tento dar uma força.
Abraço.
Obrigado pela atenção novamente,
e desculpe pelo incômodo, é força do hábito ainda, sair perguntando antes de pensar um pouco, estava adicionando na lista sempre o mesmo objeto, ou seja, cada registro continha a mesma referência.
Dentro do for dou um new e ficou tudo certo.
Então fica meu muito obrigado pela idéia do Collection, é o que eu preciso pra resolver as coisas aqui. Agora é ajeitar o layout e começar a testar na impressora.
Grande abraço e sucesso!
Pow meu, tinha que dar o new no objeto ne haha.
Blz, precisando ae se eu puder ajudar demoro hehe.
Abraço e sucesso tb.