Jasper reports JasperReports:当使用水平打印顺序时,为什么摘要栏会被推到下一页?

Jasper reports JasperReports:当使用水平打印顺序时,为什么摘要栏会被推到下一页?,jasper-reports,ireport,Jasper Reports,Ireport,我使用的是Jasper Reports 3.7.2。我有一个包含两列的报告,设置为水平打印顺序,一个摘要栏,并使用XML数据源。每当打印停止时,所有列的记录数都完全相同(在我的例子中是偶数),摘要栏总是被推到下一页。为什么会发生这种情况?这几乎是一个错误 如果将打印顺序切换为垂直,问题就会消失。我找不到任何解释来解释为什么横向打印顺序会导致摘要转到下一页。我还注意到这个问题发生在版本4.1上。下面是一个简单报告的示例,显示了问题: <?xml version="1.0" encoding=

我使用的是Jasper Reports 3.7.2。我有一个包含两列的报告,设置为水平打印顺序,一个摘要栏,并使用XML数据源。每当打印停止时,所有列的记录数都完全相同(在我的例子中是偶数),摘要栏总是被推到下一页。为什么会发生这种情况?这几乎是一个错误

如果将打印顺序切换为垂直,问题就会消失。我找不到任何解释来解释为什么横向打印顺序会导致摘要转到下一页。我还注意到这个问题发生在版本4.1上。下面是一个简单报告的示例,显示了问题:

<?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="horizontal-issue" columnCount="2" printOrder="Horizontal" pageWidth="595" pageHeight="842" columnWidth="277" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<queryString>
    <![CDATA[select * from

(select 'hello' as hello) AS hello

union all

select * from

(select 'hello' as hello) AS hello

union all

select * from

(select 'hello' as hello) AS hello

union all

select * from

(select 'hello' as hello) AS hello]]>
</queryString>
<field name="hello" class="java.lang.String"/>
<background>
    <band splitType="Stretch"/>
</background>
<title>
    <band splitType="Stretch"/>
</title>
<pageHeader>
    <band splitType="Stretch"/>
</pageHeader>
<columnHeader>
    <band splitType="Stretch"/>
</columnHeader>
<detail>
    <band height="20" splitType="Stretch">
        <textField>
            <reportElement x="0" y="0" width="129" height="20"/>
            <textElement/>
            <textFieldExpression class="java.lang.String"><![CDATA[$F{hello}]]></textFieldExpression>
        </textField>
    </band>
</detail>
<columnFooter>
    <band splitType="Stretch"/>
</columnFooter>
<pageFooter>
    <band splitType="Stretch"/>
</pageFooter>
<summary>
    <band height="33" splitType="Stretch">
        <staticText>
            <reportElement x="239" y="7" width="100" height="20"/>
            <textElement>
                <font size="16"/>
            </textElement>
            <text><![CDATA[SUMMARY]]></text>
        </staticText>
    </band>
</summary>
</jasperReport>

我也有同样的问题,但似乎仍然没有解决

我的解决方案只是一种变通方法,但它可以:

创建一个虚拟组 在此组中设置keepTogether=true 例如:

<?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="summaeryTest" language="groovy" columnCount="2" printOrder="Horizontal" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="277" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="2a33a9ce-0a7c-4af3-b190-2dab6b25d268">
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <queryString>
        <![CDATA[select * from user_tables order by 1]]>
    </queryString>
    <field name="TABLE_NAME" class="java.lang.String"/>
    <field name="TABLESPACE_NAME" class="java.lang.String"/>
    <field name="CLUSTER_NAME" class="java.lang.String"/>
    <field name="IOT_NAME" class="java.lang.String"/>
    <field name="STATUS" class="java.lang.String"/>
    <field name="PCT_FREE" class="java.math.BigDecimal"/>
    <field name="PCT_USED" class="java.math.BigDecimal"/>
    <field name="INI_TRANS" class="java.math.BigDecimal"/>
    <field name="MAX_TRANS" class="java.math.BigDecimal"/>
    <field name="INITIAL_EXTENT" class="java.math.BigDecimal"/>
    <field name="NEXT_EXTENT" class="java.math.BigDecimal"/>
    <field name="MIN_EXTENTS" class="java.math.BigDecimal"/>
    <field name="MAX_EXTENTS" class="java.math.BigDecimal"/>
    <field name="PCT_INCREASE" class="java.math.BigDecimal"/>
    <field name="FREELISTS" class="java.math.BigDecimal"/>
    <field name="FREELIST_GROUPS" class="java.math.BigDecimal"/>
    <field name="LOGGING" class="java.lang.String"/>
    <field name="BACKED_UP" class="java.lang.String"/>
    <field name="NUM_ROWS" class="java.math.BigDecimal"/>
    <field name="BLOCKS" class="java.math.BigDecimal"/>
    <field name="EMPTY_BLOCKS" class="java.math.BigDecimal"/>
    <field name="AVG_SPACE" class="java.math.BigDecimal"/>
    <field name="CHAIN_CNT" class="java.math.BigDecimal"/>
    <field name="AVG_ROW_LEN" class="java.math.BigDecimal"/>
    <field name="AVG_SPACE_FREELIST_BLOCKS" class="java.math.BigDecimal"/>
    <field name="NUM_FREELIST_BLOCKS" class="java.math.BigDecimal"/>
    <field name="DEGREE" class="java.lang.String"/>
    <field name="INSTANCES" class="java.lang.String"/>
    <field name="CACHE" class="java.lang.String"/>
    <field name="TABLE_LOCK" class="java.lang.String"/>
    <field name="SAMPLE_SIZE" class="java.math.BigDecimal"/>
    <field name="LAST_ANALYZED" class="java.sql.Timestamp"/>
    <field name="PARTITIONED" class="java.lang.String"/>
    <field name="IOT_TYPE" class="java.lang.String"/>
    <field name="TEMPORARY" class="java.lang.String"/>
    <field name="SECONDARY" class="java.lang.String"/>
    <field name="NESTED" class="java.lang.String"/>
    <field name="BUFFER_POOL" class="java.lang.String"/>
    <field name="FLASH_CACHE" class="java.lang.String"/>
    <field name="CELL_FLASH_CACHE" class="java.lang.String"/>
    <field name="ROW_MOVEMENT" class="java.lang.String"/>
    <field name="GLOBAL_STATS" class="java.lang.String"/>
    <field name="USER_STATS" class="java.lang.String"/>
    <field name="DURATION" class="java.lang.String"/>
    <field name="SKIP_CORRUPT" class="java.lang.String"/>
    <field name="MONITORING" class="java.lang.String"/>
    <field name="CLUSTER_OWNER" class="java.lang.String"/>
    <field name="DEPENDENCIES" class="java.lang.String"/>
    <field name="COMPRESSION" class="java.lang.String"/>
    <field name="COMPRESS_FOR" class="java.lang.String"/>
    <field name="DROPPED" class="java.lang.String"/>
    <field name="READ_ONLY" class="java.lang.String"/>
    <field name="SEGMENT_CREATED" class="java.lang.String"/>
    <field name="RESULT_CACHE" class="java.lang.String"/>
    <group name="dummy" keepTogether="true">
        <groupExpression><![CDATA[$F{TABLE_NAME}]]></groupExpression>
        <groupHeader>
            <band height="50">
                <printWhenExpression><![CDATA[false]]></printWhenExpression>
            </band>
        </groupHeader>
        <groupFooter>
            <band height="50">
                <printWhenExpression><![CDATA[false]]></printWhenExpression>
            </band>
        </groupFooter>
    </group>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="79" splitType="Stretch">
            <staticText>
                <reportElement uuid="ae91c2f6-9f63-4d9f-9acd-2dfc8487cf8d" x="250" y="30" width="100" height="20"/>
                <textElement/>
                <text><![CDATA[titole]]></text>
            </staticText>
        </band>
    </title>
    <pageHeader>
        <band height="35" splitType="Stretch"/>
    </pageHeader>
    <columnHeader>
        <band height="61" splitType="Stretch">
            <staticText>
                <reportElement uuid="5f4f2cc7-c7c1-42c0-bff7-e4ae12655d29" x="124" y="16" width="100" height="20"/>
                <textElement/>
                <text><![CDATA[TABLE_NAME]]></text>
            </staticText>
        </band>
    </columnHeader>
    <detail>
        <band height="21" splitType="Stretch">
            <textField>
                <reportElement uuid="8ea73055-f8d6-4340-af79-d5c4e05f41a8" x="0" y="0" width="100" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{TABLE_NAME}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
    <columnFooter>
        <band height="45" splitType="Stretch"/>
    </columnFooter>
    <pageFooter>
        <band height="54" splitType="Stretch"/>
    </pageFooter>
    <summary>
        <band height="42" splitType="Stretch">
            <staticText>
                <reportElement uuid="d65a72f4-a05e-4d30-80ea-488668b3f379" x="252" y="17" width="100" height="20"/>
                <textElement/>
                <text><![CDATA[Summary]]></text>
            </staticText>
        </band>
    </summary>
</jasperReport>

您是否有显示问题的最小报告?e、 g.以垂直打印顺序生成,汇总保持在同一页上。生成3条记录,汇总保持在同一页上。但使用2条记录和水平打印顺序生成将摘要推到下一页。另外,JR当前版本中的行为是否相同?@mdahlman我在上面添加了一个报告示例。这是一个可爱的bug!只需再添加一行,报告就会变短。很抱歉这没什么帮助,但很酷。我确认该行为与当前版本的iReport相同。我很惊讶。我没有立即的建议,但我会多看看。