20

I am trying to create a sub report(report1_subreport3.jrxml) from the main report(report1.jrxml) using iReport designer (both with empty data source) . The main report detail band contains a static text ("Main Report") and the subreport element and the subreport contains a static text in its corresponding detail band("Sub Report")

But clicking the preview tab of the main report shows only static text "Main Report" not displaying the static text of subreport ("Sub Report") .

I also went through the link http://community.jaspersoft.com/questions/524978/empty-subreport-xml-datasource-ireport but still facing the issue .

Below is the 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>

and below is the 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>

Thanks in advance for any help on that ...


Thanks Gopi for the change, but still it is showing the blank in the place of subreport . Below is the main report

<?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>       

and below is the subreport

<?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>

PLease help me if I am missing something...

Bill the Lizard
  • 398,270
  • 210
  • 566
  • 880
Som
  • 4,618
  • 4
  • 29
  • 32

4 Answers4

27


Place your sub-report field in the any other band other than detail band and add whenNoDataType="AllSectionsNoDetail" to your xml file.
Add it among the other report properties in <JasperReport> tag.
You can also add using the GUI Designer.
Open your sub report and in the properties editor, at the end of the options you will find
When No Data option. Select All Sections with No Detail from the list of available options.


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>


Sub report:

<?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>


This worked like a charm. Hope this helps.

Gopinagh.R
  • 4,826
  • 4
  • 44
  • 60
  • 1
    Hi Gopi, Thanks for your input... I tried your steps 1. Adding the subreport in the other band (columnfooter) and 2 .adding the whenNoDataType="AllSectionsNoDetail" in the element but for the last step I am not getting "When No Data" option in the subreport properties Editor . And after that if I go the preview tab of the main report it shows same out put as blank in the place of subreport :( – Som Nov 08 '12 at 13:27
  • you can either add it in the tag or use iReport to edit.. Not necessary to add both. – Gopinagh.R Nov 08 '12 at 13:40
  • Yes.. Gopi After adding in the tag also.. same issue observed... subreport still showing blank from the main report .. – Som Nov 08 '12 at 13:47
  • In the report, i removed few bands, to keep it simple. – Gopinagh.R Nov 08 '12 at 14:43
  • 1
    Can you give the source why it is not possible to place your sub-report field in the detail band? – zygimantus Sep 20 '16 at 08:14
5

Above issue got resolved using below tag which I had included in my mainreport. We need to use empty data source (new 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 of 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>

The same can be achieved using Jaspersoft Studio.

enter image description here

Vinayak Dornala
  • 1,609
  • 1
  • 21
  • 27
  • Editing the subreport.jrxml file is the only option after you have created the file. Or you can set the value also through editing the parameter expression after you select the subreport element in the main file. – raikumardipak Jul 13 '18 at 10:46
  • Placing the element `<![CDATA[new net.sf.jasperreports.engine.JREmptyDataSource()]]>` on jasper studio, it cleans that out after. Likely not in the correct XSD. – Osify Nov 27 '18 at 07:09
  • Forget my above comment, it will be OK, when we place it from GUI and in the XML display as above in the answer. – Osify Nov 27 '18 at 07:55
0

Anyone having a problem with jasper reports studio 6.3.0 not displaying subreports should try changing the name of the parameter in the subreport and then update the parameter connection in the master reports subreport widget "edit parameter" option to match the new parameter name. Also might avoid underscore ie. "USER_ID".

Dellsmash
  • 21
  • 2
0

In my case problem was caused by JasperReportStudio NOT building .jasper file after saving subreport. This caused the the main report to always include very first version of subreport I have created (which had some error, so was not displaying anything).

Solution is to press Ctrl-B after pressing Ctrl-S each time you save. This rebuilds subreport .jasper file and caused it to refresh properly in preview of main report.

Artur Biesiadowski
  • 3,595
  • 2
  • 13
  • 18