subrelatório iReport

Olá Colegas,

estou com um problema no ireport (1.3.1). Criei um subrelatório. O mestre exibe os dados da nota fiscal de compra e o sub exibe os itens da nota.
Passo o nro da compra por parâmetro para o subrelatorio exibir os itens. Olhei seu tutorial e acredito estar tudo de acordo. Mas não está…

O erro que aparece é o seguinte:

Error filling print… Unable to get next record.
net.sf.jasperreports.engine.JRException: Unable to get next record. at net.sf.jasperreports.engine.JRResultSetDataSource.next(JRResultSetDataSource.java:99) at net.sf.jasperreports.engine.fill.JRFillDataset.advanceDataSource(JRFillDataset.java:842) at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:760) at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1078) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:111) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:751) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:660) at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:63) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:402) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:234) at it.businesslogic.ireport.IReportCompiler.run(IReportCompiler.java:815) at java.lang.Thread.run(Unknown Source) Caused by: org.firebirdsql.jdbc.FBSQLException: The result set is closed at org.firebirdsql.jdbc.FBResultSet.checkCursorMove(FBResultSet.java:217) at org.firebirdsql.jdbc.FBResultSet.next(FBResultSet.java:249) at net.sf.jasperreports.engine.JRResultSetDataSource.next(JRResultSetDataSource.java:95) … 11 more
Print was not filled. Try using an EmptyDataSource…

Por favor… se souberem de algo que possa me ajudar, fico grato.

Vlw pela atenção.

Marcos

Espero ajudar

Eu possuo uma situação semelhante onde uma nota possui uma lista de detalhes da nota e este detalhe é um subReport. Está funcionando OK e os códigos abaixo representam como o relatório principal chama este subReport:

<parameter name="SUBREPORT_DIR" isForPrompting="true" class="java.lang.String">
<defaultValueExpression ><![CDATA["/var/company/sitelogado/config/"]]></defaultValueExpression>
</parameter>
<field name="resumoList" class="java.util.List"/>
  • este trecho de código esta logo no começo do arquivo jrxml e define um parametro chamado “SUBREPORT_DIR” que aponta para o diretório onde se encontra o subReport ‘ja compilado’ (.jarper)
<subreport  isUsingCache="true">
<reportElement mode="Opaque" x="4" y="17" width="525" height="169"
  key="subreport-1" stretchType="RelativeToTallestObject"  
  positionType="Float" isRemoveLineWhenBlank="true"
  isPrintInFirstWholeBand="true"	isPrintWhenDetailOverflows="true"/>
  <dataSourceExpression><![CDATA[new JRBeanCollectionDataSource($F{resumoList})]]></dataSourceExpression>
<subreportExpression  class="java.lang.String"><![CDATA[$P{SUBREPORT_DIR} + "SegundaViaCNAB_subreport0.jasper"]]>
</subreportExpression>
</subreport>

Este trecho de código é a chamada do subReport propriamente dita. observe a chamada:
{SUBREPORT_DIR} + “SegundaViaCNAB_subreport0.jasper”
onde eu utilizo o parâmetro anteriormente criado e passo o nome do subReport, onde este já se encontra compilado.

O ponto chave para a passagem da lista de dados para o subReport esta em:

<dataSourceExpression><![CDATA[new JRBeanCollectionDataSource($F{resumoList})]]></dataSourceExpression>

onde resumoList é o detalhe da conta que por sua vez no meu código insiro na sessão (request.getSession().setAttribute(“resumoList”, resumoList))

Se o seu código estiver igual e o erro persistir mande mais detalhes sobre com vc esta chamando o subReport e como esta passando os dados para ele.

Cara pelo erro que tá dando me parece erro na sql, revise a consulta do subrelatorio…

É verdade. Parece que o problema está no SQL.