Duvida: JasperReports + Crosstab

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

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

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?