JasperReports: problema com o tamanho da banda

Pessoal, to tendo um problema assim… quando coloco no elemento detail de um JRXML um subrelatorio e ele estrapola o height definido na band do detail o jasper lança exceção q esta fora da range… mas eu preciso fazer com q ela espanda sozinha, ja que nao tenho como saber a quantidade de dados que virao!!! Vlw!! :wink:

Ninguem? Ajuda eu pessoal… quem é o guru no Jasper??? Preciso mto saber isso…

Olha, “guru” eu não sou não… mas vamos tentar vai…

Veja se sua banda detail está com a propriedade Split allowed marcada como true.

http://www.guj.com.br/posts/list/22030.java

O slipt ta true… por isso q to penrguntando… eu tava achando que soh isso iria funcionar, mas parece q nao… olha soh um exemplo q ta bugando:

<?xml version="1.0" encoding="iso-8859-1"?>
<jasperReport bottomMargin="0" columnCount="1" columnWidth="496"
    isSummaryNewPage="false" isTitleNewPage="false" leftMargin="0"
    name="sem_nome_subreport_0" pageHeight="231" pageWidth="496"
    printOrder="Vertical" rightMargin="0" topMargin="0" whenNoDataType="AllSectionsNoDetail">
    <queryString><![CDATA[SELECT ACESSO.ACESS_BLOQUEADO, ACESSO.ACESS_CHAVE, ACESSO.ACESS_DATA, ACESSO.EMP_CODG FROM ACESSO]]></queryString>
    <field class="java.lang.String" name="ACESS_BLOQUEADO"/>
    <field class="java.lang.String" name="ACESS_CHAVE"/>
    <field class="java.util.Date" name="ACESS_DATA"/>
    <field class="java.lang.Integer" name="EMP_CODG"/>
    <detail>
        <band height="38" isSplitAllowed="true">
            <textField>
                <reportElement forecolor="#000000" height="38"
                    width="486" x="3" y="0"/>
                <textElement textAlignment="Left" verticalAlignment="Middle">
                    <font fontName="Arial" isBold="false"
                        isItalic="false" isUnderline="false"
                        pdfFontName="Arial" size="10"/>
                </textElement>
                <textFieldExpression class="java.lang.Integer"><![CDATA[$F{EMP_CODG}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>

<?xml version="1.0" encoding="iso-8859-1"?>
<jasperReport bottomMargin="0" columnCount="1" columnWidth="798"
    isSummaryNewPage="false" isTitleNewPage="false" leftMargin="0"
    name="sem_nome" pageHeight="1140" pageWidth="798"
    printOrder="Horizontal" rightMargin="0" topMargin="0" whenNoDataType="AllSectionsNoDetail">
    <detail>
        <band height="231" isSplitAllowed="true">
            <subreport>
                <reportElement height="231" width="496" x="39" y="0"/>
                <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
                <subreportExpression class="java.lang.String"><![CDATA["sem_nome_subreport_0.jasper"]]></subreportExpression>
            </subreport>
        </band>
    </detail>
</jasperReport>

Como vc pode ver são dois XMLs… um eh o relatorio principal e o segundo eh um subrelatorio dele… que deveria expandir…

E a exceção que dá é essa:

29/05/2007 16:10:10 net.sf.jasperreports.engine.fill.JRFillSubreport prepare
SEVERE: Fill 27468736: exception
net.sf.jasperreports.engine.JRRuntimeException: Subreport overflowed on a band that does not support overflow.

Desculpe a demora para a resposta, mas é que sem as notificações do GUJ tá difícil!

Então, faz um teste, se vc rodar só o subrelatório direto ele dá o msm erro? Pq talvez este erro esteja no subrelatório, seja algo dentro dele que está dando estouro de tamanho e não a chamada no relatório principal do subrelatório.

Abaixo meu relatório principal (resumido) com o detail onde chamo o subrelatorio:

&lt?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;  ?&gt
&lt;!-- Created with iReport - A designer for JasperReports --&gt;
&lt;!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd"&gt;
&lt;jasperReport
		 name="RelatorioFinalizador"
		 columnCount="1"
		 printOrder="Vertical"
		 orientation="Portrait"
		 pageWidth="595"
		 pageHeight="842"
		 columnWidth="535"
		 columnSpacing="0"
		 leftMargin="30"
		 rightMargin="30"
		 topMargin="20"
		 bottomMargin="20"
		 whenNoDataType="NoPages"
		 scriptletClass="jasper.scriptlet.RelatorioFinalizadorScriptlet"
		 isTitleNewPage="false"
		 isSummaryNewPage="false"&gt;
	&lt;property name="ireport.scriptlethandling" value="2" /&gt;
	&lt;property name="ireport.encoding" value="UTF-8" /&gt;
	&lt;import value="java.util.*" /&gt;
	&lt;import value="net.sf.jasperreports.engine.*" /&gt;
	&lt;import value="net.sf.jasperreports.engine.data.*" /&gt;
	&lt;reportFont name="fonteGeral" isDefault="false" fontName="Courier New" size="10" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica" pdfEncoding="Cp1250" isPdfEmbedded="false"/&gt;
	&lt;reportFont name="fonteCabecGrupo" isDefault="false" fontName="Courier New" size="12" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica" pdfEncoding="Cp1250" isPdfEmbedded="false"/&gt;
	&lt;reportFont name="fonteTitulo" isDefault="false" fontName="Courier New" size="14" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica" pdfEncoding="Cp1250" isPdfEmbedded="false"/&gt;
	&lt;reportFont name="fonteFiltro" isDefault="false" fontName="Courier New" size="12" isBold="false" isItalic="true" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica" pdfEncoding="Cp1250" isPdfEmbedded="false"/&gt;

		&lt;detail&gt;
			&lt;band height="105"  isSplitAllowed="true" &gt;
				&lt;subreport  isUsingCache="true"&gt;
					&lt;reportElement
						x="0"
						y="0"
						width="533"
						height="15"
						key="subreport-1"
						isRemoveLineWhenBlank="true"&gt;
							&lt;printWhenExpression&gt;&lt;![CDATA[$F{layout} == 1]]&gt;&lt;/printWhenExpression&gt;
						&lt;/reportElement&gt;
					&lt;connectionExpression&gt;&lt;![CDATA[$P{REPORT_CONNECTION}]]&gt;&lt;/connectionExpression&gt;
					&lt;subreportExpression  class="java.lang.String"&gt;&lt;![CDATA["./jasper/relatorio/RelatorioFinalizador_cheques.jasper"]]&gt;&lt;/subreportExpression&gt;
				&lt;/subreport&gt;
			&lt;/band&gt;
		&lt;/detail&gt;
&lt;/jasperReport&gt;

O meu subrelatório segue exatamente o msm padrão que o relatório principal. Aliás, eu tenho subrelatórios que tem outros subrelatórios, etc…

Tente rodar seu subrelatório direto, sem chamar pelo relatório principal e me diga o que acontece.

Pois eh… tentei compilar soh o subrelatorio e deu certo… ele compila, gera todas as paginas… tudo certinho :shock:
E agora? Não sei mais qq eu faço :frowning:

será que o tamanho fixo do subrelatório + os tamanhos fixos (cabeçalho, rodapé,…) do relatório não estão maiores que o tamanho do papel?

Porque o campo de detalhe de um subrelatório pode até quebrar de página, mas de repente a soma dos tamanhos fixos tá muito grande.

[quote=otaviofcs]será que o tamanho fixo do subrelatório + os tamanhos fixos (cabeçalho, rodapé,…) do relatório não estão maiores que o tamanho do papel?

Porque o campo de detalhe de um subrelatório pode até quebrar de página, mas de repente a soma dos tamanhos fixos tá muito grande.[/quote]

O subrelatorio ta com tamanho de 231… o tamanho do subrelatorio no relatorio principal tb eh de 231, que eh o mesmo tamanho do detail do relatorio principal…

O detail do subrelatorio esta com 38… entao acho q nao esta estrapolando…

PS: nao existem outras sessoes, somente a detail em ambos os relatorios (principal e subrelatorio). Veja no XML la em cima…

RESOLVIDO PESSOALLLLL!!!

Pessoal, consegui resolver o problema… foi mto simples…
acontece que o printOrder do relatorio principal esta como Horizontal (Errado), então quando o subrelatorio expande a banda ele tenta expandir pro lado… mas o relatorio master nao espande a banda pro lado, soh pra baixo… dai o band overflow!!!

Obrigado, ai a todos que tentaram ajudar :slight_smile:

André pegando carona em sua mensagem, você consseguiu ou você fez o ireport imprimir um bloco de informação várias vezes quanto forem necessárias mudando somente os dados dos campo, anexei uma imgem com o exemplo que achei na web, mas no tutorial não diz como se faz esse tipo de coisa, eu tenho uma lista e estou imprimindo atravéz de sub-relatórios.

Saberia me dar alguma dica de como fazer isso??

Abraços.

Tem esse tópico com ótimos tutoriais que vão lhe auxiliar muito:

http://www.guj.com.br/posts/list/83494.java

Um deles, é uma parte do livro de relatórios do autor Edson Gonçalves, que possui alguns exemplos que poderão lhe dar uma visão sobre o que precisa, tem mais de 100 páginas, então, acredito que seja válido.

Bom, espero que ajude.