Oi galera, to com um seguinte problema. Eu tenho q popular um relatorio no jasper sem poder gerar um result set pra popular o relatorio. Gostaria de saber se existem outras formas, se possivel com exemplos de como fazer, para popular essa tabela, seja via um arquivo qualquer,xml, ou se eu posso atraves de um list com parametros. Minha necessidade era q eu pudesse atraves de uma estrutura poder preencher esse relatorio.Acredito q consigo solucionar via xml,mas se tiver outras formas por favor me ajudem
Oi. Eu verifiquei os links e nao consigo ver um exemplo. Um possui topico onde tb nao tem exemplo e o segundo parece q o servidor onde esta hospedado a pagina nao ta processando o html e nao mostra a hp…rs. Quem por favor tiver um exemplo de bean collection para q eu possa usar.
Oi gente, montei o seguinte codigo e apareceu o seguinte erro :
net.sf.jasperreports.engine.JRException: Error retrieving field value from bean :
at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getBeanProperty(JRAbstractBeanDataSource.java:127)
at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getFieldValue(JRAbstractBeanDataSource.java:100)
at net.sf.jasperreports.engine.data.JRBeanCollectionDataSource.getFieldValue(JRBeanCollectionDataSource.java:104)
at net.sf.jasperreports.engine.fill.JRFillDataset.setOldValues(JRFillDataset.java:799)
at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:763)
at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1383)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:111)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:889)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:811)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601)
at JasperListTest.execute(JasperListTest.java:33)
at Main.main(Main.java:14)
Caused by: java.lang.NoSuchMethodException: Unknown property ''
at org.apache.commons.beanutils.PropertyUtilsBean.getSimpleProperty(PropertyUtilsBean.java:1122)
at org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:686)
at org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:715)
at org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.java:290)
at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getBeanProperty(JRAbstractBeanDataSource.java:115)
... 12 more
Exception in thread "main" net.sf.jasperreports.engine.JRException: Error retrieving field value from bean :
at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getBeanProperty(JRAbstractBeanDataSource.java:127)
at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getFieldValue(JRAbstractBeanDataSource.java:100)
at net.sf.jasperreports.engine.data.JRBeanCollectionDataSource.getFieldValue(JRBeanCollectionDataSource.java:104)
at net.sf.jasperreports.engine.fill.JRFillDataset.setOldValues(JRFillDataset.java:799)
at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:763)
at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1383)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:111)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:889)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:811)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601)
at JasperListTest.execute(JasperListTest.java:33)
at Main.main(Main.java:14)
Caused by: java.lang.NoSuchMethodException: Unknown property ''
at org.apache.commons.beanutils.PropertyUtilsBean.getSimpleProperty(PropertyUtilsBean.java:1122)
at org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:686)
at org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:715)
at org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.java:290)
at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getBeanProperty(JRAbstractBeanDataSource.java:115)
... 12 more
Ja vi no google que geralmente aparece uma tipo dizem qual propriedade deu erro,mas nao meu caso nao esta aparecendo. Eu estou reaproveitando u mrelatorio que criei usando um sql,mas testando ao enviar num array list os campos que preencheriam uma linha desse relatorio. segue o codigo
import java.util.*;
public class Main {
public static void main (String[] args)throws Exception
{
JasperListTest relatorio = new JasperListTest();
Cliente c = new Cliente("Oi - Bahia",new java.math.BigDecimal(String.valueOf("553485")),"ANGELA CONCEICAO ANDRADE DIAS . ANGELA CONCEICAO ANDRADE DIAS",new java.math.BigDecimal(String.valueOf("1234")));
ArrayList lst = new ArrayList();
lst.add(c);
relatorio.setItens(lst);
relatorio.execute("report5");
}
}
fala vinidouradoh , nao entendi mt bem a sua solucao…vc quer q eu passe o arraylist direto sem passar como parametro do beancollection? e q parametros sao esses q devo passar como map? eu reaproveitei esse exemplo de outro relatorio onde eu deixava esse campo como null,ja q eu gerava o preenchimento atraves de jdbc
Você queria uma forma diferente de popular um jasper, certo? Eu preencho ele com um arrayList. Eu faço uma pesquisa no banco e jogo em um array e passo para o jasper imprimir. Mas ele precisa saber qual jasper imprimir, por isso você deve passar o caminho do seu jasper. Eu não sei de sua experiência com iReport e jasper, mas você pode passar parâmetros para o relatório, que é justamente o Map. Caso você nao queira passar nenhum parâmetro, basta passar null. Essa é a maneira mais simples que encontrei para gerar um relatório, primeiro que você trabalhar com classes Java e também evita de colocar querys em relatório, já que muitas destas querys têm regra de negócio embutida.
Respondi sua pergunta?? Se nao… posta ai suas dúvidas,
você já prestou atenção no nome dos campos que você quer imprimir?? O nome dos campos deve ser o mesmo nome dos campos da classe JAVA que está sendo impressa.
Se não foi isso, posta ai a tela se iReport printado e sua classe pra gente da uma olhada.
Ai eh q esta… O relatorio q eu to usando foi um gerado por um sql. eu posso fazer isso?caso contrario, qual das opcoes posso usar pra poder criar um relatorio. Eu tava usando a opcao java beans collection mas eu nao tenho nenhum bean criado…
se vc gerou o relatório via sql, entao os campos do relatorio tem o mesmo nome das colunas de sua tabela, por isso, quando você tenta passar um array, dá erro. Você tá usando o iReport para gerar o .jasper?? O array que você ta passando, é de uma classe de seu projeto, tipo Array<SuaClasse> ??
Parou de dar erro,mas em compensacao os valores aparecem no relatorio como nulos. Eu preciso gerar um relatorio com objetos em hash map q sao os parametros q recebo de um sistema…segue a modificacao.
Main.java
[code]import java.util.*;
public class Main {
public static void main (String[] args)throws Exception
{
JasperListTest relatorio = new JasperListTest();
//Cliente c = new Cliente("Oi - Bahia",new java.math.BigDecimal(String.valueOf("553485")),"ANGELA CONCEICAO ANDRADE DIAS . ANGELA CONCEICAO ANDRADE DIAS",new java.math.BigDecimal(String.valueOf("1234")));
Map lst = new HashMap();
//lst.add(c);
lst.put("REGION","Oi - Bahia");
lst.put("ACCOUNT_NO",new java.math.BigDecimal(String.valueOf("553485")));
lst.put("NAME", "ANGELA CONCEICAO ANDRADE DIAS . ANGELA CONCEICAO ANDRADE DIAS");
lst.put("PREV_BALANCE",new java.math.BigDecimal(String.valueOf("1234")));
relatorio.setItens(lst);
relatorio.execute("report5");
System.out.println("Funcionou");
}
os valores aparecem nulos em um relatório se ele realmente está nulo ou você nao está passando o campo no seu arrayList. Vale ressaltar que ele faz tipo reflexão, ele pega o nome do atributo da classe e joga no campo de mesmo nome do relatório.
Entendi vinidouradoh . Só q dessa vez eu tirei a classe q eu tinha usado pra passar parametros. Tipo o sistema q to mexendo me retorma uma matriz de hashmap q tenho q usar como entrada do jrbeancollection, o problema eh q esse objeto nao aceita objeto do tipo hashmap e sim do array,como eu vc sugeriu…porem nao funcionou. Kra sera q vc tem algum exemplo de uma classe onde vc conseguiu rodar?tipo eu ja olhei varias coisas na internet e nada eu consegui botar pra funcionar…Mt obrigado pela força ai q vc ta me dando. Abraço
Estou com problema em preencher os dados no meu relatório. Quando ele chega no método JasperFillManager.fillReport(pathJasper, parametros, jrDataSourse); quando o relatório não possui gráfico ele passa normal, porem quando o relatório possuiu algum gráfico ele para e não retorna erro nenhum, como se tivesse um break ali no meio.
estou algum tempo tentando fazer isso e até consegui fazer funcionar fora da minha aplicação, mas quando tento importar para a mesma para nesse JasperFIllManager…alguma ideia do que pode ser? Já testei as libs e aparentemente tá tudo certo.