2016-09-20 30 views
0

我已經使用類型Java.util.collection的參數的圖表報告。當我試圖在組帶上使用此圖表作爲具有類似Java.util.collection類似參數的主報告的子報告時,圖表值會在組內保持迭代。例如,如果圖表在兩個單獨的頁面中顯示L1 & L2的值。但是,當添加到主報告中的值爲L1時,子報表將顯示L1 & L2而不僅僅是L1。Jasper -Java.util.collection參數從主要到子報告

當參數作爲L1傳遞時,我能否在子報表中顯示L1,而不是在組中的L2 L?

僅供參考,使用JasperSoft這個工作室5.6.1

編輯:

假設我經過2個項目P1和P2從主報表參數,結果現在我得到的是:

  • 第1頁主要報告數據P1
  • 子報表數據P1
  • 子報表數據P2
  • 第2頁主報告中的數據P2
  • 子報表數據P1
  • 子報表數據P2

但是,理想的結果應該是這樣的:

  • 第1頁主要報表數據P1
  • 子報告數據P1
  • 第2頁主報告數據P2
  • 子報告數據P2。

我在其中一個組頭中添加了子報表。

主要報告:

<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="test_subreport" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="d2616041-39f3-44ce-a1e4-4ce5a6a1593c"> 
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="Dev DB Conn" /> 
<parameter name="param_project" class="java.util.collection" nestedType="java.lang.Integer"> 
    <parameterDescription> 
     <![CDATA[]]> 
    </parameterDescription> 
</parameter> 
<queryString language="SQL"> 
    <![CDATA[SELECT 
       i.id prid,c.INUSAGE,d.CURRUSAGE 
       FROM 
       project table i, custom table c 
       where i.id = c.id and $X{IN,I.id,param_project} 
       ]]> 
</queryString> 
<field name="prid" class="java.math.BigDecimal" /> 
<field name="INUSAGE" class="java.math.BigDecimal" /> 
<field name="CURRUSAGE" class="java.math.BigDecimal" /> 
<group name="Group1"> 
    <groupExpression> 
     <![CDATA[$F{INVID}]]> 
    </groupExpression> 
</group> 
<columnHeader> 
    <band height="210"> 
     <textField> 
      <reportElement x="0" y="80" width="80" height="30" uuid="263d8d17-1c40-4709-ba8f-76e27a976c75" /> 
      <textFieldExpression> 
       <![CDATA[$F{prid}]]> 
      </textFieldExpression> 
     </textField> 
     <subreport> 
      <reportElement isPrintRepeatedValues="false" x="80" y="2" width="200" height="200" uuid="da630714-b937-493c-9db5-a4baa7128f3d" /> 
      <subreportParameter name="param_invID"> 
       <subreportParameterExpression> 
        <![CDATA[$P{param_project}]]> 
       </subreportParameterExpression> 
      </subreportParameter> 
      <connectionExpression> 
       <![CDATA[$P{REPORT_CONNECTION}]]> 
      </connectionExpression> 
      <subreportExpression> 
       <![CDATA["Workload1_added_collection_group1.jasper"]]> 
      </subreportExpression> 
     </subreport> 
    </band> 
</columnHeader> 

子報表鏈接:subreport

感謝

Sreeram

+0

請編輯您的問題,並在可能的情況下添加'jrxml'信息以及屏幕截圖。你想要什麼樣的方式?你在主要報告中的位置? Tobi, – tobi6

+0

更新了這個問題。添加了jrxml。假設我經過2個項目P1和P2從主報表參數,結果現在我得到的是, 第1頁 主要報表數據P1,子報表數據P1,子報告數據P2 第2頁 主報告數據P2,子報表數據P1,子報告數據P2 但是,理想的結果應該是這樣的, 第1頁 主要報表數據P1,子報告數據P1 第2頁 主報告中的數據P2 ,子報告數據P2。我在第一個子報表中添加了子報表e組頭。 – user2335123

+0

這是否與子報表有關?通常,子報表只能得到它應該顯示的項目,例如P1的「P1 ID」和P2的「P2 ID」。但是,如果您提供一個集合,它將*總是*循環收集數據。 – tobi6

回答

0

通常情況下,應該報表只得到它應該顯示的項目,例如P1的「P1 ID」和P2的「P2 ID」。但是,如果您提供一個集合,它將始終循環收集數據。

因此,您應該將ID添加到子報表或將圖表放在主報表中。

相關問題