subrelatório iReport

3 respostas
B

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

3 Respostas

G

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.

T

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

G

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

Criado 9 de junho de 2007
Ultima resposta 15 de jun. de 2007
Respostas 3
Participantes 4