通过子报表的大小调整(拉伸)细节带

时间:2014-01-10 09:18:56

标签: jasper-reports

我的主要报告有水平打印顺序(4列)。在主要报告的详细信息带中有可变高度的子报告。问题是当我设置子报表的高度不足以显示它所说的所有数据时的可变高度:

net.sf.jasperreports.engine.JRRuntimeException: 
Subreport overflowed on a band that does not support overflow.

我可以以某种方式告诉主报告的详细信息带来扩展到子报表的大小吗?

主要报告:

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="MainReport" language="groovy" columnCount="4" printOrder="Horizontal" pageWidth="595" pageHeight="1100" columnWidth="138" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="796cf45d-4953-4dea-9173-64556d85b7fc">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
    <defaultValueExpression><![CDATA["C:\\Reports\\"]]></defaultValueExpression>
</parameter>
<queryString language="SQL">
    <![CDATA[select SYSDATE from dual]]>
</queryString>
<field name="SYSDATE" class="java.sql.Timestamp"/>
<detail>
    <band height="20" splitType="Stretch">
        <subreport>
            <reportElement x="0" y="0" width="138" height="20" isPrintWhenDetailOverflows="true" uuid="5901e9d7-0ae3-42b9-a804-106d502a904b"/>
            <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
            <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "SubReport.jasper"]]></subreportExpression>
        </subreport>
    </band>
</detail>

子报表:

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="SubReport" language="groovy" pageWidth="555" pageHeight="802" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="a7078e79-2772-4921-afc9-de4bcd5fe09d">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<queryString>
    <![CDATA[SELECT ROWNUM
FROM DUAL
CONNECT BY LEVEL < 50]]>
</queryString>
<field name="ROWNUM" class="java.math.BigDecimal"/>
<detail>
    <band height="20" splitType="Stretch">
        <textField>
            <reportElement x="0" y="0" width="100" height="20" uuid="10b08205-9452-44e2-8fa2-a3f782ca6aa8"/>
            <textFieldExpression><![CDATA[$F{ROWNUM}]]></textFieldExpression>
        </textField>
    </band>
</detail>

示例(EL是我不想要的空行):

.sub1. .sub2. .sub3. .sub4.
...... ...... ...... ......
...... ...... --EL-- --EL--
...... --EL-- --EL-- --EL--
--EL-- --EL-- --EL-- --EL-- 
--EL-- --EL-- --EL-- --EL-- 

.sub5. .sub6. .sub7. .sub8.
...... ...... ...... ......
...... ...... ...... ......
...... ...... ...... ......
...... ...... ...... --EL-- 
...... ...... --EL-- --EL-- 
...... ...... --EL-- --EL-- 

2 个答案:

答案 0 :(得分:0)

尝试在子报表元素上启用Detail Overflows属性。

答案 1 :(得分:0)

尝试将报告的COLUMN_COUNT属性设置为4,根据报告页面宽度(即COLUMN_WIDTH * 4&lt; Page Width)设置COLUMN_WIDTH。

或多或少,你会得到你想要的东西。

告诉我它是否有效