Relatório com iReport - Problemas ao imprimir uma lista do java para iReport

4 respostas
A

Olá!
Estou postando uma duvida referente a relatórios.
Estou trabalhando com o iReport 3.7.
E obvio que estou com um pequeno problema.
Do java atiro para o iReport uma lista.
Esta lista esta preenchida com diversos atributos.
Só que na hora que coloco em um Groups no iReport ele atira a minha lista inteira de uma só vez.
Tem alguma forma de poder percorrer a minha lista no iReport e setar uma por uma das minhas Strings no relatório, sem ter que colocar todas de uma vez.

ArrayList listaDeString = new ArrayList();
// preencho minha lista
// passo para o iReport uma listaDeString
// pego minha lista no iReport,
// ai que vem o problema.
// minha lista é atirada toda de uma vez.
// tem como percorrer.
// Se tiver alguem me da uma ajuda.
// A principio meu DataField esta pegando e imprimindo minha lista sem quebra de linha, todas as minhas strings concatenadas.
// mas quero imprimir uma por uma, uma linha abaixo da outra.

Se alguem tiver uma ideia. Da um grito!

4 Respostas

L

Se estás passando uma lista e agrupando, coloque:

  • no header / footer, os dados coincidentes ou agrupadores;
  • no detail, os dados diferentes da lista, os que serão ‘percorridos’. Essa banda já têm essa característica automaticamente.

Nota: para que o agrupamento funcione corretamente, é necessário que a lista esteja ordenada pelos itens agrupadores.

Abraço!

PS: dá uma melhorada na especificação do teu problema. Especificar mal o problema é a fonte da dor de cabeça da grande maioria dos desenvolvedores. Se queres que teus usuários especifiquem bem os problemas deles pra você, comece dando o exemplo :wink:

T

leoramos…
Tem como dar um exemplo nao!
to passando por isso e nao consigo fazer a lista… fiz ate um subreport com a lista pra tentar iterar ela em um detail mas nao deu certo…

O erro é este aki:

ERRO: Este erro na verdade nao entendi Bem no meu codigo esta desta forma aki: $F{csuList}.getDescricao()

Error evaluating expression :

Source text : $F{csuList}
net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression :

Source text : $F{csuList}

at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:195)

at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:589)

at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:557)

at net.sf.jasperreports.engine.fill.JRFillElement.evaluateExpression(JRFillElement.java:929)

at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateSubreport(JRFillSubreport.java:336)

at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluate(JRFillSubreport.java:263)

at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:258)

at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:499)

at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2036)

at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:760)

at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:270)

at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:128)

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.JRFiller.fillReport(JRFiller.java:84)

at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:624)

at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:540)

at br.com.spdata.sysproj.controller.ConsultaPedidoServico.imprimir(ConsultaPedidoServico.java:120)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at com.sun.el.parser.AstValue.invoke(AstValue.java:234)

at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)

at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)

at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:148)

at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)

at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:777)

at javax.faces.component.UICommand.broadcast(UICommand.java:300)

at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:787)

at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1252)

at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)

at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)

at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:470)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)

at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:861)

at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)

at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1584)

at java.lang.Thread.run(Thread.java:662)

Caused by: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object [br.com.spdata.sysproj.entity.Csu[id=4], br.com.spdata.sysproj.entity.Csu[id=6]] with class java.util.ArrayList to class net.sf.jasperreports.engine.JRDataSource due to: groovy.lang.GroovyRuntimeException: Could not find matching constructor for: net.sf.jasperreports.engine.JRDataSource(br.com.spdata.sysproj.entity.Csu, br.com.spdata.sysproj.entity.Csu)

at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.castToType(DefaultTypeTransformation.java:325)

at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.castToType(ScriptBytecodeAdapter.java:602)

at solicitacaoAlteracao_1308074003590_365210.evaluate(calculator_solicitacaoAlteracao_1308074003590_365210:193)

at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:182)

 47 more
L

Como você está chamando a geração do teu relatório?
$F{csuList} é de que tipo no Jasper? É igual do do Java?

Se tu estás passando a lista, e esse csuList é tua lista, não tem porque tu usar o getDescricao pra buscar a descricao.
Cria um field ‘descricao’ do tipo adequado, e ele busca o valor.

E mais: você não precisa de um subReport pra fazer a repetição, a banda detail serve exatamente pra isso.

Exemplo até pode ser dado, mas pelo que eu tô vendo você sequer conhece o uso correto de cada banda , o que inviabiliza por completo o uso adequado da ferramenta. Acredito que você não quer ser mais um desenvolvedor “copy - paste”; estou certo?

Estou traduzindo a documentação do JasperReports há 2 meses, todo dia faço um pouco, mas só por hobby e colaboração com o projeto. Mas a documentação do site, mesmo em inglês, é ridícula de entender. Tá mastigadíssimo.

Tem exemplo aqui no fórum, mas sugiro fortemente que você sofra um pouquinho, vai valer a pena.

Abraço!

A

Pessoal consegui resolver o problema.
E Thiago fernando tipo se quiser eu te arrumo umas apostila que tenho, só me manda o teu mail.

Criado 13 de junho de 2011
Ultima resposta 15 de jun. de 2011
Respostas 4
Participantes 3