2016-07-29 57 views
2

iReport 5.6.0工具幫助下,我創建了一個主報告。然後,我將一個子報告拖放到主報告的報告組帶上。我已經定義了SQL查詢並通過嚮導設置了鍵和值。之後,我在子報表中添加了一個餅圖。爲什麼子報表中的餅圖不顯示?

當我單獨運行子報表時,它可以正常使用提供的SQL查詢。但是當我用Java代碼通過DynamicReports運行主報告時,似乎查詢不起作用並返回空值。因此,不顯示圖表。

我的方法中是否有缺失的步驟?我是否需要將子報表查詢結果以某種方式映射/鏈接到主報表?

主報告JRXML:

<?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="templatedesign2" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="575" leftMargin="10" rightMargin="10" topMargin="10" bottomMargin="10" uuid="8c9654e9-6770-46c4-a4d0-4bdf99195b70"> 
    <parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false"> 
     <defaultValueExpression><![CDATA["D:\\DynamicReports\\src\\subreport\\"]]></defaultValueExpression> 
    </parameter> 
    <field name="item" class="java.lang.String"/> 
    <field name="reportTitle" class="java.lang.String"/> 
    <field name="customerName" class="java.lang.String"/> 
    <group name="Intro"> 
     <groupHeader> 
      <band height="255"> 
       <subreport isUsingCache="false"> 
        <reportElement x="0" y="160" width="575" height="77" uuid="eb90e8b6-2860-4c94-ad10-3eb5031502fc"/> 
        <subreportParameter name="SUBREPORT_DIR"> 
         <subreportParameterExpression><![CDATA[$P{SUBREPORT_DIR}]]></subreportParameterExpression> 
        </subreportParameter> 
        <dataSourceExpression><![CDATA[$P{REPORT_DATA_SOURCE}]]></dataSourceExpression> 
        <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "templatereport2_subreport3.jasper"]]></subreportExpression> 
       </subreport> 
      </band> 
     </groupHeader> 
    </group> 
</jasperReport> 

報表JRXML:

<?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="templatereport2_subreport3" pageWidth="555" pageHeight="802" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" isTitleNewPage="true" uuid="3dc0ebf2-660d-4d0c-af85-ccae1f01bdee"> 
    <parameter name="runCycleId" class="java.lang.String"/> 
    <queryString> 
     <![CDATA[SELECT 
    count(status) AS count, 
    case when status=TRUE then 'Succeeded'else 'Failed'end AS status 
FROM 
    "dbtable" dbtable 
WHERE 
    id = 157 
GROUP BY 
    status]]> 
    </queryString> 
    <field name="count" class="java.lang.Long"/> 
    <field name="status" class="java.lang.String"/> 
    <title> 
     <band height="351" splitType="Stretch"> 
      <pie3DChart> 
       <chart evaluationTime="Report"> 
        <reportElement x="20" y="22" width="415" height="244" uuid="a43afa44-c4e5-4ad5-b06e-8922128bcdaf"/> 
        <chartTitle/> 
        <chartSubtitle/> 
        <chartLegend/> 
       </chart> 
       <pieDataset> 
        <keyExpression><![CDATA[$F{status}]]></keyExpression> 
        <valueExpression><![CDATA[$F{count}]]></valueExpression> 
       </pieDataset> 
       <pie3DPlot> 
        <plot/> 
        <itemLabel/> 
       </pie3DPlot> 
      </pie3DChart> 
      <textField> 
       <reportElement x="134" y="292" width="100" height="20" uuid="2726affe-1fef-45a1-abc8-8da8c9856e42"/> 
       <textFieldExpression><![CDATA[$F{count}]]></textFieldExpression> 
      </textField> 
      <textField> 
       <reportElement x="20" y="292" width="100" height="20" uuid="fa4e41c0-b4f4-443c-ab9e-3cf048a3f520"/> 
       <textFieldExpression><![CDATA[$F{status}]]></textFieldExpression> 
      </textField> 
     </band> 
    </title> 
</jasperReport> 

能否請您指教?

+0

在通過數據源的不同 –

回答

1

由於您使用的是查詢子報表,你應該通過連接,而不是數據源到它。

<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression> 

在您的例子

<subreport isUsingCache="false"> 
    reportElement x="0" y="160" width="575" height="77" uuid="eb90e8b6-2860-4c94-ad10-3eb5031502fc"/> 
    <subreportParameter name="SUBREPORT_DIR"> 
     <subreportParameterExpression><![CDATA[$P{SUBREPORT_DIR}]]></subreportParameterExpression> 
    </subreportParameter> 
    <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression> 
    <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "templatereport2_subreport3.jasper"]]></subreportExpression> 
</subreport>