2015-12-29 5 views
1

Я создал отчет Jasper, и я пытаюсь интегрировать отчет в основной отчет. Я могу заполнить данные в подчиненном виде как есть, но если я интегрирую его в основной отчет, я не смогу отобразить данные, которые я делаю в подзаголовке. На самом деле я получаю пустое место в том месте, где я включил подзаголовок.Subreport not rendering в основном отчете

Я также передал выражение соединения REPORT_CONNECTION и предоставил подзадачу выражение с расположением файла jasper, который находится в том же проекте и тот же CLASSPATH (по «Table1Jasper.jasper», который является именем моего подчиненного Джаспера). Я не могу найти проблему, где я ошибаюсь. Ниже приведен фрагмент кода отчета, с которым я работаю.

Это мой подотчет JRXML:

<?xml version="1.0" encoding="UTF-8"?> 
<!-- Created with Jaspersoft Studio version 6.2.0.final using JasperReports Library version 6.2.0 --> 
<!-- 2015-12-29T14:51:49 --> 
<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="Table1Jasper" pageWidth="250" pageHeight="842" columnWidth="250" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="168d5180-08f7-4e70-a176-9757e902e707"> 
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="TableOneTestFactory"/> 
    <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> 
    <field name="a" class="java.lang.String"/> 
    <field name="b" class="java.lang.Integer"/> 
    <background> 
     <band splitType="Stretch"/> 
    </background> 
    <title> 
     <band height="31" splitType="Stretch"> 
      <staticText> 
       <reportElement mode="Opaque" x="10" y="0" width="230" height="30" forecolor="#6E4A85" backcolor="#E9E1ED" uuid="c96bbba0-dd6f-4572-92ea-19b5a6165ce4"/> 
       <box> 
        <topPen lineWidth="1.0" lineStyle="Double"/> 
        <leftPen lineWidth="1.0" lineStyle="Double"/> 
        <bottomPen lineWidth="1.0" lineStyle="Double"/> 
        <rightPen lineWidth="1.0" lineStyle="Double"/> 
       </box> 
       <textElement textAlignment="Center" verticalAlignment="Middle"> 
        <font size="14" isBold="true"/> 
       </textElement> 
       <text><![CDATA[TABLE ONES' FIELDS']]></text> 
      </staticText> 
     </band> 
    </title> 
    <columnHeader> 
     <band height="60" splitType="Stretch"> 
      <staticText> 
       <reportElement mode="Opaque" x="23" y="30" width="100" height="30" backcolor="#39FA50" uuid="611cad70-6062-4bc6-863c-bb4dbb4d5d55"/> 
       <box> 
        <topPen lineWidth="0.5" lineStyle="Solid"/> 
        <leftPen lineWidth="0.5" lineStyle="Solid"/> 
        <bottomPen lineWidth="0.5" lineStyle="Solid"/> 
        <rightPen lineWidth="0.5" lineStyle="Solid"/> 
       </box> 
       <textElement textAlignment="Center" verticalAlignment="Middle"> 
        <font size="12" isBold="true"/> 
       </textElement> 
       <text><![CDATA[a]]></text> 
      </staticText> 
      <staticText> 
       <reportElement mode="Opaque" x="123" y="30" width="100" height="30" backcolor="#39FA50" uuid="77893362-087e-4df0-9ca3-48acf820741f"/> 
       <box> 
        <topPen lineWidth="0.5" lineStyle="Solid"/> 
        <leftPen lineWidth="0.5" lineStyle="Solid"/> 
        <bottomPen lineWidth="0.5" lineStyle="Solid"/> 
        <rightPen lineWidth="0.5" lineStyle="Solid"/> 
       </box> 
       <textElement textAlignment="Center" verticalAlignment="Middle"> 
        <font size="12" isBold="true"/> 
       </textElement> 
       <text><![CDATA[b]]></text> 
      </staticText> 
     </band> 
    </columnHeader> 
    <detail> 
     <band height="29" splitType="Stretch"> 
      <textField> 
       <reportElement mode="Opaque" x="23" y="-1" width="100" height="30" backcolor="#C28C8C" uuid="05928dbf-95d4-491b-9ef5-905a1fa18b2a"/> 
       <box> 
        <topPen lineWidth="0.5" lineStyle="Solid"/> 
        <leftPen lineWidth="0.5" lineStyle="Solid"/> 
        <bottomPen lineWidth="0.5" lineStyle="Solid"/> 
        <rightPen lineWidth="0.5" lineStyle="Solid"/> 
       </box> 
       <textElement textAlignment="Center" verticalAlignment="Middle"/> 
       <textFieldExpression><![CDATA[$F{a}]]></textFieldExpression> 
      </textField> 
      <textField> 
       <reportElement mode="Opaque" x="123" y="-1" width="100" height="30" backcolor="#C28C8C" uuid="54082691-6a9e-4c28-b960-b729bdae9458"/> 
       <box> 
        <topPen lineWidth="0.5" lineStyle="Solid"/> 
        <leftPen lineWidth="0.5" lineStyle="Solid"/> 
        <bottomPen lineWidth="0.5" lineStyle="Solid"/> 
        <rightPen lineWidth="0.5" lineStyle="Solid"/> 
       </box> 
       <textElement textAlignment="Center" verticalAlignment="Middle"/> 
       <textFieldExpression><![CDATA[$F{b}]]></textFieldExpression> 
      </textField> 
     </band> 
    </detail> 
</jasperReport> 

Это мой главный отчет JRXML, где я интегрируя свою подотчет.

<?xml version="1.0" encoding="UTF-8"?> 
<!-- Created with Jaspersoft Studio version 6.2.0.final using JasperReports Library version 6.2.0 --> 
<!-- 2015-12-29T14:14:23 --> 
<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="MainReport" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="a0a24146-f700-4edb-8746-7825a1fa923d"> 
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="TableOneTestFactory"/> 
    <queryString> 
     <![CDATA[]]> 
    </queryString> 
    <background> 
     <band splitType="Stretch"/> 
    </background> 
    <title> 
     <band height="79" splitType="Stretch"> 
      <staticText> 
       <reportElement mode="Opaque" x="0" y="0" width="560" height="30" forecolor="#000000" backcolor="#834EED" uuid="5f92ae14-f194-4e5e-bf26-8f11a9335900"/> 
       <box> 
        <topPen lineWidth="1.0" lineStyle="Double"/> 
        <leftPen lineWidth="1.0" lineStyle="Double"/> 
        <bottomPen lineWidth="1.0" lineStyle="Double"/> 
        <rightPen lineWidth="1.0" lineStyle="Double"/> 
       </box> 
       <textElement textAlignment="Center" verticalAlignment="Middle"> 
        <font size="20" isBold="true"/> 
       </textElement> 
       <text><![CDATA[Main Report]]></text> 
      </staticText> 
     </band> 
    </title> 
    <columnHeader> 
     <band height="61" splitType="Stretch"/> 
    </columnHeader> 
    <detail> 
     <band height="329" splitType="Stretch"> 
      <subreport> 
       <reportElement x="0" y="90" width="560" height="60" uuid="021bbef9-3a86-48a1-a15f-64627101521f"/> 
       <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression> 
       <subreportExpression><![CDATA["Table1Jasper.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> 

Пожалуйста, помогите мне найти мою проблему и, пожалуйста, дайте мне решение.

ответ

2

Вы можете не использование относительный путь к отчету югу, вам нужно использовать абсолютный путь.

Обычно это достигается с помощью параметра (с выражением по умолчанию).

Пример

<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false"> 
    <defaultValueExpression><![CDATA["C:\\The\\Path\\To\\Subreport\\"]]></defaultValueExpression> 
</parameter> 

И при вызове подотчет

<subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "Table1Jasper.jasper"]]></subreportExpression> 

Использование параметра помогает при развертывании приложения вы можете, например, в Java оценить относительный путь приложения а передайте его как абсолютный путь к вашему отчету в карте параметров.

Пример в java (параметр настройки в карте параметров).

parameterMap.put("SUBREPORT_DIR", new File("theRelativeSubReportDir").getAbsolutePath() + File.separator); 

и ... помните, когда вы меняете подотчет вам нужно всегда перекомпилировать в .jasper