[RESOLVIDO] Relatórios Ireport

Olá galera,

A minha dúvida é seguinte:

Estou usando o Ireport para geração de relatórios, e pelo que vejo, é possível criar relatórios inicais apenas com uma página, há alguma maneira de adicionar nova página em branco ao relatório? É que uma página conterá um tipo de registros, e este relatório sempre terá duas páginas e os valores serão passados por parâmetros por um hashMap, desde já agradeço.

Uma maneira de fazer isso é colocar um sub-relatório e definir que o mesmo inicia em nova página.

Certo, mas como faço rsrs. Sou navato em Ireport e não conheço muito

Inserir um novo grupo no relatório principal. Procure o botão Agrupamentos de relatório “na versão 3.0.0” Marcar opção iniciar em nova página. Na banda que for criada, colocar o sub-relatório.

Humm… Em tese consegui solucionar o problema, criei o Sub relatório com os parâmetros necessários e configuei para abrir em nova página como você disse.

O X da questão agora é como passar o Map para o Sub, esclarendo, não estou utilizando DataSource/Connection em nenhum campo do relatório é tudo parametros P${}, o primeiro relatório é preenchido corretamente, já no Sub, sendo uma cópia fiel do primeiro (Mudando alguns campos apenas), isso não acontece, vi alugma coisa pela internet para usar o JRBeanCollectionDataSource e passar um ArrayList como parâmetro, fiz isso, criei um Bean, setei os campos necessários, e o adicionei na lista, porém aí no relatório criei um Field do tipo #F{parameter_7}, só que ele retorna erro que não conseguiu encontar o field na classe informada, segue-se stackTrace:

13:44:51,884 ERROR [JRFillSubreport] Fill 864753675: exception
net.sf.jasperreports.engine.JRException: Error retrieving field value from bean : parameter_7
        at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getBeanProperty(JRAbstractBeanDataSource.java:123)
        at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getFieldValue(JRAbstractBeanDataSource.java:96)
        at net.sf.jasperreports.engine.data.JRBeanCollectionDataSource.getFieldValue(JRBeanCollectionDataSource.java:100)
        at net.sf.jasperreports.engine.fill.JRFillDataset.setOldValues(JRFillDataset.java:821)
        at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:785)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1482)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:126)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:946)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:864)
        at net.sf.jasperreports.engine.fill.JRFillSubreport.fillSubreport(JRFillSubreport.java:613)
        at net.sf.jasperreports.engine.fill.JRSubreportRunnable.run(JRSubreportRunnable.java:59)
        at net.sf.jasperreports.engine.fill.JRThreadSubreportRunner.run(JRThreadSubreportRunner.java:205)
        at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.NoSuchMethodException: Unknown property 'parameter_7' on class 'class br.teste.server.stock.Term'
        at org.apache.commons.beanutils.PropertyUtilsBean.getSimpleProperty(PropertyUtilsBean.java:1322)
        at org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:770)
        at org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:846)
        at org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.java:426)
        at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getBeanProperty(JRAbstractBeanDataSource.java:111)
        ... 12 more

Tenho a certeza que os nomes são identicos.

Não sei o que fazer :frowning: , mas alguma sugestão flavioandreaz

Obrigado

pelo q entendi, vc nao ta enviando para o relatorio este parameter_7

1 no relatório principal abra as propriedades do objeto sub-relatório, na aba em sub-relatório colocar o parâmetro $P{REPORT_PARAMETERS_MAP}.

2 na aba sub-relatório (outro) tem uma opção de copiar do mestre, isso vai passar os parâmetros para o sub-relatório.

3 o parâmetro tem de ser declarado no relatório principal e no sub-relatório.

São esses os passos, não tenho certeza se o passo 2 é realmente necessário.

1 no relatório principal abra as propriedades do objeto sub-relatório, na aba em sub-relatório colocar o parâmetro $P{REPORT_PARAMETERS_MAP}.

2 na aba sub-relatório (outro) tem uma opção de copiar do mestre, isso vai passar os parâmetros para o sub-relatório.

3 o parâmetro tem de ser declarado no relatório principal e no sub-relatório.

São esses os passos, não tenho certeza se o passo 2 é realmente necessário.

Senhores, consegui resolver o problema, como citado os parâmetros existiam, e eu já havia feito o que foi citado pelo flavioandreaz, só que de uma forma um pouco diferente, pelos Wizard do Ireport 4 o X da questão foi criar getters para todos os parâmetros, creio que o Jasper trabalhe com reflexão, em vez de usar o acesso direto ao atributo ele procura os getter, estranho não?! . Solucionado

Abraços e obrigado a todos