2016-01-02 283 views
0

我想將我的參數值從主報告傳遞給子報告。如何將參數從主報告傳遞給子報告?

我已經嘗試了很多方法。從這個鏈接我也試圖選擇以及 passing-parameters-from-main-report-to-subreport-to-subreport-in-jasper

主報告

<?xml version="1.0" encoding="UTF-8"?> 
<!-- Created with Jaspersoft Studio version 6.2.0.final using JasperReports Library version 6.2.0 --> 
<!-- 2016-01-03T00:04:36 --> 
<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="parademo" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="4949f116-97b5-453c-8581-61ccb1b3159e"> 
    <parameter name="TITLEPARA" class="java.lang.String" isForPrompting="false"> 
     <defaultValueExpression><![CDATA["hi title"]]></defaultValueExpression> 
    </parameter> 
    <queryString> 
     <![CDATA[]]> 
    </queryString> 
    <background> 
     <band splitType="Stretch"/> 
    </background> 
    <title> 
     <band height="79" splitType="Stretch"> 
      <textField> 
       <reportElement x="180" y="36" width="220" height="30" uuid="4ac55979-2248-45d2-a001-3c82b5fec56b"/> 
       <textFieldExpression><![CDATA[$P{TITLEPARA}]]></textFieldExpression> 
      </textField> 
     </band> 
    </title> 
    <pageHeader> 
     <band height="35" splitType="Stretch"/> 
    </pageHeader> 
    <columnHeader> 
     <band height="61" splitType="Stretch"/> 
    </columnHeader> 
    <detail> 
     <band height="286" splitType="Stretch"> 
      <subreport runToBottom="false"> 
       <reportElement x="0" y="86" width="560" height="74" uuid="eca8556b-2d65-462f-a3d3-ac95ea6e3ebf"/> 
       <subreportParameter name="TITLEPARA"> 
        <subreportParameterExpression><![CDATA[$P{TITLEPARA}]]></subreportParameterExpression> 
       </subreportParameter> 
       <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression> 
       <subreportExpression><![CDATA["file:/home/rectrix/workspace/jasper/subparam.jrxml"]]></subreportExpression> 
      </subreport> 
     </band> 
    </detail> 
    <columnFooter> 
     <band height="45" splitType="Stretch"/> 
    </columnFooter> 
    <pageFooter> 
     <band height="54" splitType="Stretch"/> 
    </pageFooter> 
    <summary> 
     <band height="42" splitType="Stretch"/> 
    </summary> 
</jasperReport> 

子報表

<?xml version="1.0" encoding="UTF-8"?> 
<!-- Created with Jaspersoft Studio version 6.2.0.final using JasperReports Library version 6.2.0 --> 
<!-- 2016-01-03T00:04:17 --> 
<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="subparam" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="b4c019e3-0dc2-425c-b449-908c4fd21bde"> 
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="MainReportDataSet"/> 
    <parameter name="TITLEPARA" class="java.lang.String" isForPrompting="false"/> 
    <queryString> 
     <![CDATA[]]> 
    </queryString> 
    <background> 
     <band splitType="Stretch"/> 
    </background> 
    <title> 
     <band height="79" splitType="Stretch"> 
      <textField> 
       <reportElement x="140" y="45" width="100" height="30" uuid="6b9d5038-4163-47ed-a0cd-812f07b27ff0"/> 
       <textFieldExpression><![CDATA[$P{TITLEPARA}]]></textFieldExpression> 
      </textField> 
     </band> 
    </title> 
    <pageHeader> 
     <band height="35" splitType="Stretch"/> 
    </pageHeader> 
    <columnHeader> 
     <band height="61" splitType="Stretch"/> 
    </columnHeader> 
    <detail> 
     <band height="125" splitType="Stretch"/> 
    </detail> 
    <columnFooter> 
     <band height="45" splitType="Stretch"/> 
    </columnFooter> 
    <pageFooter> 
     <band height="54" splitType="Stretch"/> 
    </pageFooter> 
    <summary> 
     <band height="42" splitType="Stretch"/> 
    </summary> 
</jasperReport> 

我能打印 「HI TITLE」 使用參數在我的主報告的title頻段。

我想將此值傳遞給使用該參數的子報告並將其打印在子報告的title帶上。

我想僅使用參數傳遞此值,因爲我想知道這些參數是如何工作的,因此我可以將它用於我的項目,以便通過參數將值傳遞給子報表。

回答

2

您正在正確傳遞參數,這不是您的問題。

使用您的示例文件,您有這些問題。

  1. 如果數據源是空的,你需要的屬性whenNoDataType="AllSectionsNoDetail"jasperReport標籤顯示的東西(無論是在主及子報表)。

  2. 該子報表不能位於detail波段(因爲您的數據源爲空),請將其移至另一個波段示例title波段。

  3. 不能引用JRXMLsubreportExpression,你需要引用.jasper文件(jrxml時,它已經遵守)。注意:路徑需要的是該文件的絕對路徑(您通常使用這個參數,這樣就可以在運行時通過它)

看到這對路徑的詳細信息,以子報表Subreport not rendering in main report

爲了測試,我建議你在子報表中添加另一個靜態文本元素,以便你瞭解子報表是否顯示。

+0

先生您的第一點我沒有得到它的正確...可以詳細說明並解釋原因。以及它在jaspersoft studio中的具體情況 –

+0

哦,謝謝先生,我發現了一種設置whenNoDataType的方式,但是請你解釋它到底是什麼。 –

+0

這是一個「空數據源行爲」,當你沒有數據(空數據源)時,報告應該做什麼?......默認行爲是NoPages(所以不會顯示帶),因爲你沒有傳遞任何數據子報告它根本不顯示任何東西....有關whenNoDataType的更多信息請參閱http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/JRReport.html –

相關問題