Duvida: JasperReports + Crosstab

2 respostas
F

Olá pessoal!

Infelizmente, essa semana me deparei com um relatorio que possuia colunas e linhas dinamicas, ou seja, a qtidade de colunas e de linhas do relatorio variava.
Assim, pesquisando na internet, achei um geito de fazer o relatorio.
Esse geito seria usando o “crosstab tool”.
Crosstab tool é um componente que controla linhas e colunas dinamicamente
Olhando alguns exemplos, como:
http://jasperreports.sourceforge.net/samples/ShipmentsReport.pdf

Eu consegui fazer o relatorio, porem na hora de gera-o ocorre o seguinte erro:

[jrc] org.xml.sax.SAXParseException: Element type crosstab must be declared.

[jrc] 	at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)

[jrc] 	at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)

[jrc] 	at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)

[jrc] 	at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)

[jrc] 	at org.apache.xerces.impl.dtd.XMLDTDValidator.handleStartElement(Unknown Source)

[jrc] 	at org.apache.xerces.impl.dtd.XMLDTDValidator.startElement(Unknown Source)

[jrc] 	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)

[jrc] 	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)

[jrc] 	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)

[jrc] 	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)

[jrc] 	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)

[jrc] 	at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)

[jrc] 	at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)

[jrc] 	at org.apache.commons.digester.Digester.parse(Digester.java:1567)

[jrc] 	at net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:400)

[jrc] 	at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:384)

[jrc] 	at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:338)

[jrc] 	at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:322)

[jrc] 	at net.sf.jasperreports.engine.JasperCompileManager.compileReportToFile(JasperCompileManager.java:151)

[jrc] 	at net.sf.jasperreports.ant.JRAntCompileTask.compile(JRAntCompileTask.java:449)

[jrc] 	at net.sf.jasperreports.ant.JRAntCompileTask.execute(JRAntCompileTask.java:291)

[jrc] 	at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:269)

[jrc] 	at org.apache.tools.ant.Task.perform(Task.java:364)

[jrc] 	at org.apache.tools.ant.Target.execute(Target.java:301)

[jrc] 	at org.apache.tools.ant.Target.performTasks(Target.java:328)

[jrc] 	at org.apache.tools.ant.Project.executeTarget(Project.java:1215)

[jrc] 	at org.apache.tools.ant.Project.executeTargets(Project.java:1063)

[jrc] 	at org.apache.tools.ant.Main.runBuild(Main.java:632)

[jrc] 	at org.apache.tools.ant.Main.startAnt(Main.java:183)

[jrc] 	at org.apache.tools.ant.launch.Launcher.run(Launcher.java:197)

[jrc] 	at org.apache.tools.ant.launch.Launcher.main(Launcher.java:56)

[jrc]

[jrc] NESTED BY :

[jrc] net.sf.jasperreports.engine.JRException: Element type crosstab must be declared.

[jrc] 	at net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:404)

[jrc] 	at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:384)

[jrc] 	at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:338)

[jrc] 	at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:322)

[jrc] 	at net.sf.jasperreports.engine.JasperCompileManager.compileReportToFile(JasperCompileManager.java:151)

[jrc] 	at net.sf.jasperreports.ant.JRAntCompileTask.compile(JRAntCompileTask.java:449)

[jrc] 	at net.sf.jasperreports.ant.JRAntCompileTask.execute(JRAntCompileTask.java:291)

[jrc] 	at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:269)

[jrc] 	at org.apache.tools.ant.Task.perform(Task.java:364)

[jrc] 	at org.apache.tools.ant.Target.execute(Target.java:301)

[jrc] 	at org.apache.tools.ant.Target.performTasks(Target.java:328)

[jrc] 	at org.apache.tools.ant.Project.executeTarget(Project.java:1215)

[jrc] 	at org.apache.tools.ant.Project.executeTargets(Project.java:1063)

[jrc] 	at org.apache.tools.ant.Main.runBuild(Main.java:632)

[jrc] 	at org.apache.tools.ant.Main.startAnt(Main.java:183)

[jrc] 	at org.apache.tools.ant.launch.Launcher.run(Launcher.java:197)

[jrc] 	at org.apache.tools.ant.launch.Launcher.main(Launcher.java:56)

[jrc] Caused by: org.xml.sax.SAXParseException: Element type crosstab must be declared.

[jrc] 	at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)

[jrc] 	at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)

[jrc] 	at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)

[jrc] 	at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)

[jrc] 	at org.apache.xerces.impl.dtd.XMLDTDValidator.handleStartElement(Unknown Source)

[jrc] 	at org.apache.xerces.impl.dtd.XMLDTDValidator.startElement(Unknown Source)

[jrc] 	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)

[jrc] 	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)

[jrc] 	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)

[jrc] 	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)

[jrc] 	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)

[jrc] 	at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)

[jrc] 	at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)

[jrc] 	at org.apache.commons.digester.Digester.parse(Digester.java:1567)

[jrc] 	at net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:400)

[jrc] 	 16 more

Nao sei pq esta aparecendo esse erro ja que gerei o relatorio do mesmo geito q eu gerei os outros(que funcionavam perfeitamente)
Procurei ajuda no google, + parece que ninguem usa Crosstab! =O
Entao minha duvida é a seguinte:
Alguem ja usou crosstab e sabe como resolver esse erro?
ou entao,
Alguem sabe como eu poderia ter colunas dinamicas no relatorio sem ser usando CrossTab?

Obrigado,
Fernando

2 Respostas

F

Opa, encontrei um dado relevante

estamos utilizando a versao 0.6.6 do JasperReports

Sei que nao muito tempo atraz o Crosstab era um TODO no JasperReports
Alguem sabe apartir de que versao foi implementado o crosstab?

Grato

F

Opss,
Desculpe pelo flood

  • olhe o que eu encontrei:

Friday, October 21, 2005
JasperReports 1.1.0 Change Log

  • support for report styles that can be referenced by elements to inherit
    visual properties such as font, color, border, etc; report fonts are now deprecated;

  • new frame element added to support grouping other report element together;

  • new dataset concept that comprises parameter, field, variable and group
    declarations and represents a mixture between a data source and a subreport
    to help iterating through data for chart and crosstab generation;

  • support for crosstabs added using a specialized component;

É acho que é esse o motivo do erro :roll: :roll:

Enfim, alguem sabe um geito simples de “simular” um crosstab?

Criado 30 de março de 2006
Ultima resposta 30 de mar. de 2006
Respostas 2
Participantes 1