2012-11-08 218 views
14

我想創建一個子報告(report1_subreport3.jrxml)(report1.jrxml)iReport的設計師(均與空數據來源)。主報告細節帶包含一個靜態文本(「主報告」)和子報表元素和報表包含在其相應的細節帶一個靜態文本(「子報告」的JasperReport/iReport的報表顯示了來自主報告的空白(不顯示)

但點擊主要報告的預覽標籤僅顯示靜態文本「主報告」,不顯示子報告(「子報告」)的靜態文本。

我也通過鏈接http://community.jaspersoft.com/questions/524978/empty-subreport-xml-datasource-ireport但仍然面臨問題。

下面是report1.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="report1" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="20036b98-ef64-4dea-8345-b89bcd8f2671"> 
    <property name="ireport.zoom" value="1.0"/> 
    <property name="ireport.x" value="0"/> 
    <property name="ireport.y" value="68"/> 
    <parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false"> 
     <defaultValueExpression><![CDATA["D:\\soapReport\\jasperReport\\"]]></defaultValueExpression> 
    </parameter> 
    <background> 
     <band splitType="Stretch"/> 
    </background> 
    <title> 
     <band height="79" splitType="Stretch"/> 
    </title> 
    <pageHeader> 
     <band height="35" splitType="Stretch"/> 
    </pageHeader> 
    <columnHeader> 
     <band height="61" splitType="Stretch"/> 
    </columnHeader> 
    <detail> 
     <band height="125" splitType="Stretch"> 
      <staticText> 
       <reportElement uuid="d49ee6bf-1a13-41bb-9feb-f0fb2ec414f2" x="71" y="28" width="100" height="20"/> 
       <textElement/> 
       <text><![CDATA[Main Report]]></text> 
      </staticText> 
      <subreport> 
       <reportElement uuid="364d3c38-a0a1-4fa5-b0bf-12b22314ac5e" x="311" y="14" width="200" height="100"/> 
       <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression> 
       <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "report1_subreport3.jasper"]]></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> 

以下是report1_subreport3.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="report1_subreport3" language="groovy" pageWidth="555" pageHeight="802" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="7ca2d973-972c-4c56-8d5e-503b32b4afc6"> 
    <property name="ireport.zoom" value="1.0"/> 
    <property name="ireport.x" value="0"/> 
    <property name="ireport.y" value="0"/> 
    <background> 
     <band splitType="Stretch"/> 
    </background> 
    <title> 
     <band height="79" splitType="Stretch"/> 
    </title> 
    <pageHeader> 
     <band height="35" splitType="Stretch"/> 
    </pageHeader> 
    <columnHeader> 
     <band height="61" splitType="Stretch"/> 
    </columnHeader> 
    <detail> 
     <band height="125" splitType="Stretch"> 
      <staticText> 
       <reportElement uuid="5f488fe4-f9f7-4f12-9c1e-812661026bd7" x="222" y="50" width="100" height="20"/> 
       <textElement/> 
       <text><![CDATA[Sub Report]]></text> 
      </staticText> 
     </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"?> 
<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="report1" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="748f862c-3467-4c8c-89f6-04a571192482"> 
    <property name="ireport.zoom" value="1.0"/> 
    <property name="ireport.x" value="0"/> 
    <property name="ireport.y" value="0"/> 
    <parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false"> 
     <defaultValueExpression><![CDATA["D:/soapReport/jasperReport/"]]></defaultValueExpression> 
    </parameter> 
    <queryString> 
     <![CDATA[]]> 
    </queryString> 
    <background> 
     <band splitType="Stretch"/> 
    </background> 
    <title> 
     <band height="79" splitType="Stretch"/> 
    </title> 
    <pageHeader> 
     <band height="35" splitType="Stretch"/> 
    </pageHeader> 
    <columnHeader> 
     <band height="61" splitType="Stretch"/> 
    </columnHeader> 
    <detail> 
     <band height="71" splitType="Stretch"> 
      <staticText> 
       <reportElement uuid="17f2cfc8-497a-4676-b83a-acf55bccac04" x="33" y="15" width="100" height="20"/> 
       <textElement/> 
       <text><![CDATA[Main Report]]></text> 
      </staticText> 
     </band> 
    </detail> 
    <columnFooter> 
     <band height="134" splitType="Stretch"> 
      <subreport> 
       <reportElement uuid="40f53bea-c9eb-46a7-b4fc-3d592da3ef90" x="234" y="17" width="200" height="100"/> 
       <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression> 
       <subreportExpression><![CDATA["D:/soapReport/jasperReport/report1_subreport1.jasper"]]></subreportExpression> 
      </subreport> 
     </band> 
    </columnFooter> 
    <pageFooter> 
     <band height="54" splitType="Stretch"/> 
    </pageFooter> 
    <summary> 
     <band height="42" splitType="Stretch"/> 
    </summary> 
</jasperReport>  

及以下子報表

<?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="report1_subreport1" language="groovy" pageWidth="555" pageHeight="802" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="62bf7fb7-8145-4aa6-b963-c98eefac9862"> 
    <property name="ireport.zoom" value="1.0"/> 
    <property name="ireport.x" value="0"/> 
    <property name="ireport.y" value="0"/> 
    <background> 
     <band splitType="Stretch"/> 
    </background> 
    <columnHeader> 
     <band height="61" splitType="Stretch"> 
      <staticText> 
       <reportElement uuid="9bf9eafc-c1e0-49fa-8bb8-ed6c496498da" x="213" y="20" width="100" height="20"/> 
       <textElement/> 
       <text><![CDATA[Sub Report]]></text> 
      </staticText> 
     </band> 
    </columnHeader> 
</jasperReport> 

請幫助我,如果我失去了一些東西......

回答

19


將您的報表字段在除了詳細頻段以外的任何其他頻段,並將whenNoDataType="AllSectionsNoDetail"添加到您的xml文件中。
將其添加到<JasperReport>標記的其他報告屬性中。
您也可以使用GUI Designer進行添加。
打開您的子報告並在屬性編輯器中,在選項末尾您會找到
When No Data選項。從可用選項列表中選擇All Sections with No Detail


Mainreport:

<?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="report1" pageWidth="595" pageHeight="842" columnWidth="555" 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="12"/> 
<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false"> 
    <defaultValueExpression><![CDATA["/home/qualian/Desktop/gopi/prjreport/"]]></defaultValueExpression> 
</parameter> 
<queryString> 
    <![CDATA[]]> 
</queryString> 
<background> 
    <band splitType="Stretch"/> 
</background> 
<title> 
    <band height="79" splitType="Stretch"/> 
</title> 
<pageHeader> 
    <band height="35" splitType="Stretch"/> 
</pageHeader> 
<columnHeader> 
    <band height="61" splitType="Stretch"/> 
</columnHeader> 
<detail> 
    <band height="125" splitType="Stretch"> 
     <subreport> 
      <reportElement x="33" y="56" width="208" height="36"/> 
      <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression> 
      <subreportExpression class="java.lang.String"><![CDATA[$P{SUBREPORT_DIR}+"report3_subreport1.jasper"]]></subreportExpression> 
     </subreport> 
     <staticText> 
      <reportElement x="33" y="15" width="100" height="20"/> 
      <textElement/> 
      <text><![CDATA[Main Report]]></text> 
     </staticText> 
    </band> 
</detail> 
<columnFooter> 
    <band height="45" splitType="Stretch"/> 
</columnFooter> 
<pageFooter> 
    <band height="54" splitType="Stretch"/> 
</pageFooter> 
<summary> 
    <band height="42" splitType="Stretch"/> 
</summary> 


子報告:

<?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="report1_subreport3" language="groovy" pageWidth="555" pageHeight="802" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0"> 
<property name="ireport.zoom" value="1.0"/> 
<property name="ireport.x" value="0"/> 
<property name="ireport.y" value="0"/> 
<background> 
    <band splitType="Stretch"/> 
</background> 
<columnHeader> 
    <band height="40" splitType="Stretch"> 
     <staticText> 
      <reportElement x="107" y="12" width="100" height="20"/> 
      <textElement/> 
      <text><![CDATA[Sub Report]]></text> 
     </staticText> 
    </band> 
</columnHeader> 


這工作就像一個魅力。希望這可以幫助。

+1

您好戈皮,感謝您的輸入...我想你的步驟1中添加子報表中的其他波段(columnfooter)和2 .adding的whenNoDataType =「AllSectionsNoDetail」的元素,但是對於最後一步,我沒有在子報表屬性編輯器中看到「何時無數據」選項。然後,如果我去了主要報告的預覽標籤,它會在子報告中顯示空白: – Som

+0

您可以將它添加到標籤中或使用iReport進行編輯。不需要同時添加。 –

+0

是的..戈皮加入標籤後也..同樣的問題觀察...子報告仍然顯示從主報告空白.. – Som

0

任何有問題的jasper reports studio 6.3.0都不顯示子報表,應嘗試更改子報表中參數的名稱,然後更新主報表子報表小部件「編輯參數」選項中的參數連接以匹配新參數名稱。也可以避免下劃線即。 「用戶名」。

2

上面的問題使用了我在mainreport中包含的以下標記得到了解決。我們需要使用空的數據源(新net.sf.jasperreports.engine.JREmptyDataSource())

SUBREPORT.jrxml

<?xml version="1.0" encoding="UTF-8"?> 
<!-- Created with Jaspersoft Studio version 6.3.1.final using  JasperReports Library version 6.3.1 --> 
<!-- 2016-12-15T10:33:58 --> 
<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="HYPERLINKS_SUBREPORT" pageWidth="595" pageHeight="842" columnWidth="595" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="ad9606b1-969d-4340-a7eb-61dc30ec8f0d"> 
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/> 
<property name="com.jaspersoft.studio.unit." value="pixel"/> 
<property name="com.jaspersoft.studio.unit.pageHeight" value="pixel"/> 
<property name="com.jaspersoft.studio.unit.pageWidth" value="pixel"/> 
<property name="com.jaspersoft.studio.unit.topMargin" value="pixel"/> 
<property name="com.jaspersoft.studio.unit.bottomMargin" value="pixel"/> 
<property name="com.jaspersoft.studio.unit.leftMargin" value="pixel"/> 
<property name="com.jaspersoft.studio.unit.rightMargin" value="pixel"/> 
<property name="com.jaspersoft.studio.unit.columnWidth" value="pixel"/> 
<property name="com.jaspersoft.studio.unit.columnSpacing" value="pixel"/> 
<queryString> 
    <![CDATA[]]> 
</queryString> 
<detail> 
    <band height="82" splitType="Stretch"> 
     <staticText> 
      <reportElement x="16" y="47" width="100" height="30" uuid="866e60e7-16a0-4fea-b56f-ca4143e98fec"/> 
      <text><![CDATA[Testing text]]></text> 
     </staticText> 
    </band> 
</detail> 

XML main_report.jrxml的

 <subreport> 
      <reportElement positionType="Float" x="0" y="220" width="200" height="60" uuid="62463158-73b1-4089-b66c-633d3a987649"/> 
      <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.JREmptyDataSource()]]></dataSourceExpression> 
      <subreportExpression><![CDATA["SUBREPORT.jasper"]]></subreportExpression> 
     </subreport> 

使用Jaspersoft Studio可以實現同樣的效果。

enter image description here