Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法使用Jasper生成子报告_Java_Reporting Services_Jasper Reports_Report_Subreport - Fatal编程技术网

Java 无法使用Jasper生成子报告

Java 无法使用Jasper生成子报告,java,reporting-services,jasper-reports,report,subreport,Java,Reporting Services,Jasper Reports,Report,Subreport,我正在使用Jaspersoft studio创建报告。我的Jasper主报告中有一个子报告。问题是我无法实现这一点,因为如果我将子报表添加到主报表的详细信息栏中,子报表将生成多次,有时是逐行生成,有时是以页数重复整个子报表。由于同样的原因,我不能把这个放在夏季乐队里 我无法将其放入列页脚栏或其他页脚,因为它显示以下错误 net.sf.jasperreports.engine.JRException: net.sf.jasperreports.engine.JRRuntimeException:

我正在使用Jaspersoft studio创建报告。我的Jasper主报告中有一个子报告。问题是我无法实现这一点,因为如果我将子报表添加到主报表的详细信息栏中,子报表将生成多次,有时是逐行生成,有时是以页数重复整个子报表。由于同样的原因,我不能把这个放在夏季乐队里

我无法将其放入列页脚栏或其他页脚,因为它显示以下错误

net.sf.jasperreports.engine.JRException: net.sf.jasperreports.engine.JRRuntimeException: Subreport overflowed on a band that does not support overflow.
    at com.jaspersoft.studio.editor.preview.view.control.ReportControler.fillReport(ReportControler.java:467)
    at com.jaspersoft.studio.editor.preview.view.control.ReportControler.access$18(ReportControler.java:442)
    at com.jaspersoft.studio.editor.preview.view.control.ReportControler$4.run(ReportControler.java:334)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: net.sf.jasperreports.engine.JRRuntimeException: Subreport overflowed on a band that does not support overflow.
    at net.sf.jasperreports.engine.fill.FillerSubreportParent.addPage(FillerSubreportParent.java:113)
    at net.sf.jasperreports.engine.fill.JRBaseFiller.addPageToParent(JRBaseFiller.java:1213)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.addPage(JRVerticalFiller.java:1836)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillPageBreak(JRVerticalFiller.java:1919)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBreak(JRVerticalFiller.java:1948)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:730)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:264)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:124)
    at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:540)
    at net.sf.jasperreports.engine.fill.BaseReportFiller.fill(BaseReportFiller.java:393)
    at net.sf.jasperreports.engine.fill.JRFillSubreport.fillSubreport(JRFillSubreport.java:704)
    at net.sf.jasperreports.engine.fill.JRSubreportRunnable.run(JRSubreportRunnable.java:59)
    at net.sf.jasperreports.engine.fill.AbstractThreadSubreportRunner.run(AbstractThreadSubreportRunner.java:203)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
由于下面的错误,我无法将其放入页眉,否则它将继续执行

net.sf.jasperreports.engine.JRException: net.sf.jasperreports.engine.JRRuntimeException: Infinite loop creating new page due to page header overflow.
    at com.jaspersoft.studio.editor.preview.view.control.ReportControler.fillReport(ReportControler.java:467)
    at com.jaspersoft.studio.editor.preview.view.control.ReportControler.access$18(ReportControler.java:442)
    at com.jaspersoft.studio.editor.preview.view.control.ReportControler$4.run(ReportControler.java:334)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: net.sf.jasperreports.engine.JRRuntimeException: Infinite loop creating new page due to page header overflow.
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillPageHeader(JRVerticalFiller.java:415)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:258)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:124)
    at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:540)
    at net.sf.jasperreports.engine.fill.BaseFillHandle$ReportFill.run(BaseFillHandle.java:120)
    at java.lang.Thread.run(Unknown Source)
以下是我主要报告的代码

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.0.0.final using JasperReports Library version 6.0.0  -->
<!-- 2014-12-16T11:26:41 -->
<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="Portfolio_View_Report" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="961f2f5f-8ed1-422c-9a1a-6b9dcdf1624f">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="xxx"/>
    <parameter name="idPortfolio" class="java.lang.Integer"/>
    <queryString>
        <![CDATA[SELECT * FROM Client]]>
    </queryString>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="119" splitType="Stretch">
            <property name="local_mesure_unitheight" value="pixel"/>
            <property name="com.jaspersoft.studio.unit.height" value="px"/>
            <image>
                <reportElement x="210" y="1" width="140" height="76" uuid="f5d606fc-24d8-4536-9c35-56ce81c863c2"/>
                <imageExpression><![CDATA["C:/Users/xxx/JaspersoftWorkspace/xxx/xxx.png"]]></imageExpression>
            </image>
            <staticText>
                <reportElement x="0" y="80" width="210" height="30" uuid="8c8eb2f8-9d3d-46a0-9d4c-0d049e8c544d"/>
                <textElement>
                    <font fontName="Times New Roman" size="14" isBold="true" isUnderline="true"/>
                </textElement>
                <text><![CDATA[Portfolio View Report]]></text>
            </staticText>
        </band>
    </title>
    <pageHeader>
        <band height="159" splitType="Stretch">
            <staticText>
                <reportElement x="-1" y="0" width="163" height="20" uuid="8ffdf975-7965-4402-b9af-ef7785872f24"/>
                <textElement verticalAlignment="Middle">
                    <font fontName="Times New Roman"/>
                </textElement>
                <text><![CDATA[Generated By: xxx]]></text>
            </staticText>
            <textField pattern="dd-MM-yyyy">
                <reportElement x="450" y="0" width="100" height="20" uuid="cfd44de8-bc3d-4a2d-9f53-b9fdb969b061"/>
                <textElement verticalAlignment="Middle"/>
                <textFieldExpression><![CDATA[new java.util.Date()]]></textFieldExpression>
            </textField>
            <subreport runToBottom="true">
                <reportElement stretchType="RelativeToTallestObject" x="0" y="55" width="555" height="60" uuid="a99b1643-200b-4d7c-ade2-26e30b4fcc82">
                    <property name="local_mesure_unitheight" value="pixel"/>
                    <property name="com.jaspersoft.studio.unit.height" value="px"/>
                </reportElement>
                <subreportParameter name="idPortfolio">
                    <subreportParameterExpression><![CDATA[$P{idPortfolio}]]></subreportParameterExpression>
                </subreportParameter>
                <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
                <subreportExpression><![CDATA["Transactions_Report.jasper"]]></subreportExpression>
            </subreport>
        </band>
    </pageHeader>
    <detail>
        <band height="36" splitType="Stretch">
            <property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.FreeLayout"/>
        </band>
    </detail>
    <columnFooter>
        <band height="285" splitType="Stretch">
            <property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.FreeLayout"/>
        </band>
    </columnFooter>
    <pageFooter>
        <band height="120" splitType="Stretch"/>
    </pageFooter>
    <summary>
        <band height="100" splitType="Stretch"/>
    </summary>
</jasperReport>
下面是我的子报告的代码

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.0.0.final using JasperReports Library version 6.0.0  -->
<!-- 2014-12-16T11:28:26 -->
<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="Transactions_Report" pageWidth="500" pageHeight="842" columnWidth="500" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="4204d16c-e22f-46a2-b4c5-8be93fa35bc4">
    <property name="com.jaspersoft.studio.unit." value="pixel"/>
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="xxx"/>
    <parameter name="idPortfolio" class="java.lang.Integer"/>
    <queryString language="SQL">
        <![CDATA[SELECT Transactions.`idTransactions`,
Transactions.`Transaction_TimeStamp`,
Transactions.`idPortfolio`,
CASE when Transactions.`Transaction_Amount` <= 0 
     THEN NULL 
     else Transaction_Amount
END AS Encashments,
CASE when Transactions.`Transaction_Amount` > 0 
     THEN NULL 
     else (Transactions.`Transaction_Amount`*-1)
END AS Additions,
Portfolio.Activation 
FROM Transactions 
INNER JOIN Portfolio ON Transactions.idPortfolio = Portfolio.idPortfolio 
WHERE Transactions.idPortfolio= $P{idPortfolio} 
ORDER BY `Transaction_TimeStamp` DESC]]>
    </queryString>
    <field name="Transaction_TimeStamp" class="java.sql.Date">
        <fieldDescription><![CDATA[]]></fieldDescription>
    </field>
    <field name="Additions" class="java.lang.Double"/>
    <field name="Encashments" class="java.lang.Double"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="47" splitType="Stretch">
            <staticText>
                <reportElement x="5" y="10" width="180" height="30" uuid="30e059fd-caed-4e67-a4f6-d06f2897ac59"/>
                <textElement>
                    <font fontName="Times New Roman" size="14" isBold="true" isUnderline="true"/>
                </textElement>
                <text><![CDATA[Transations]]></text>
            </staticText>
        </band>
    </title>
    <columnHeader>
        <band height="44" splitType="Stretch">
            <staticText>
                <reportElement x="0" y="0" width="160" height="30" uuid="344e0833-c92a-47bf-bece-162b5ac7e52b">
                    <property name="local_mesure_unitwidth" value="pixel"/>
                    <property name="com.jaspersoft.studio.unit.width" value="px"/>
                </reportElement>
                <text><![CDATA[Date]]></text>
            </staticText>
            <staticText>
                <reportElement x="166" y="0" width="160" height="30" uuid="9bf82277-53b7-4244-aae9-84cf310e6d94">
                    <property name="com.jaspersoft.studio.unit.width" value="px"/>
                </reportElement>
                <text><![CDATA[Additions]]></text>
            </staticText>
            <rectangle>
                <reportElement x="0" y="30" width="490" height="1" uuid="45244617-f10e-4867-bc84-71aa0c42649b"/>
                <graphicElement>
                    <pen lineWidth="0.5"/>
                </graphicElement>
            </rectangle>
            <staticText>
                <reportElement x="330" y="0" width="160" height="30" uuid="68c554b4-0d79-4236-9e3f-db1b5dd19f7f">
                    <property name="com.jaspersoft.studio.unit.width" value="px"/>
                </reportElement>
                <text><![CDATA[Encashments]]></text>
            </staticText>
        </band>
    </columnHeader>
    <detail>
        <band height="40" splitType="Stretch">
            <textField pattern="dd-MM-yyyy">
                <reportElement x="2" y="10" width="158" height="30" uuid="e2ab3765-dd44-4f8d-aedb-d411cce30384">
                    <property name="local_mesure_unitwidth" value="pixel"/>
                    <property name="com.jaspersoft.studio.unit.width" value="px"/>
                </reportElement>
                <textFieldExpression><![CDATA[$F{Transaction_TimeStamp}]]></textFieldExpression>
            </textField>
            <textField isBlankWhenNull="true">
                <reportElement x="166" y="10" width="160" height="30" uuid="bb3baa95-bf15-4462-bb59-3461b1f4e1c7">
                    <property name="com.jaspersoft.studio.unit.width" value="px"/>
                </reportElement>
                <textFieldExpression><![CDATA[$F{Additions}]]></textFieldExpression>
            </textField>
            <textField isBlankWhenNull="true">
                <reportElement x="330" y="10" width="160" height="30" uuid="c625f008-1390-4245-8035-9bdc98c21d79">
                    <property name="com.jaspersoft.studio.unit.width" value="px"/>
                </reportElement>
                <textFieldExpression><![CDATA[$F{Encashments}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>

这有什么问题

我发现在我的情况下,最好使用表而不是子报表。这就是我所做的

在详图栏中创建表格。 为这些表创建并分配单独的数据集。 现在,尽管我不需要对主报告进行查询,但我必须提供一个查询,以便jasper继续。这个查询很复杂,很有可能,因为如果它返回多个结果,那么细节栏中的项目将重复。因此,由于我需要只打印一次细节栏中的表,因此必须将主报表查询返回的结果限制为一次。我做了下面的事情

从idClient=1的客户端选择名称

现在,“详细信息”栏中的项目将只执行一次操作。由于“详细信息”栏中的表包含它们自己的查询,因此整个表将填充预期的结果

同样的方法也适用于子报告