Подотчет сервера Jasper в подробной полосе

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

MainReport.jrxml

<group name="Account Summary">
    <groupHeader>
        <band height="100" splitType="Stretch">
            <printWhenExpression><![CDATA[$F{accountSummary.hasRepots}]]></printWhenExpression>
            <subreport isUsingCache="false">
                <reportElement x="28" y="0" width="540" height="100" isRemoveLineWhenBlank="true"/>
                <subreportParameter name="accountSummary">
                    <subreportParameterExpression><![CDATA[$F{accountSummary.hasRepots}]]></subreportParameterExpression>
                </subreportParameter>
                <dataSourceExpression><![CDATA[$P{REPORT_DATA_SOURCE}]]></dataSourceExpression>
                <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "SubReport.jasper"]]></subreportExpression>
            </subreport>
        </band>
    </groupHeader>
</group>

SubReport.jrxml

<detail>
    <band height="100" splitType="Stretch">
        <subreport isUsingCache="false">
            <reportElement positionType="Float" x="0" y="0" width="540" height="100" isRemoveLineWhenBlank="true"/>
            <dataSourceExpression><![CDATA[$P{REPORT_DATA_SOURCE}]]></dataSourceExpression>
            <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + $F{subreportFileName}]]></subreportExpression>
        </subreport>
    </band>
</detail>

Где я передаю $F{subreportFileName} из моего источника данных, например, «SubSubReport.jrxml», но он отображает только первый отчет, я думаю, из-за того, что мой счетчик индекса иссякает в моем подподотчете, поэтому моя полоса подробных сведений о подотчете не перейти к каждому элементу.

SubSubReport.jrxml

<field name="chartData.label" class="java.lang.String"/>
<field name="chartData.value" class="java.lang.Float"/>
<field name="value1" class="java.lang.String"/>
<field name="value2" class="java.lang.String"/>
<field name="value3" class="java.lang.String"/>
<pageHeader>
    <band height="114" splitType="Stretch">
        <staticText>
            <reportElement style="lbl-light-golden" x="12" y="19" width="170" height="67"/>
            <textElement>
                <font size="26"/>
            </textElement>
            <text><![CDATA[Some Label]]></text>
        </staticText>
        <pieChart>
            <chart evaluationTime="Band">
                <reportElement x="272" y="0" width="268" height="114"/>
                <chartTitle/>
                <chartSubtitle/>
                <chartLegend position="Left"/>
            </chart>
            <pieDataset>
                <keyExpression><![CDATA[$F{chartData.label}]]></keyExpression>
                <valueExpression><![CDATA[$F{chartData.value}]]></valueExpression>
                <labelExpression><![CDATA[null]]></labelExpression>
            </pieDataset>
            <piePlot isShowLabels="false" isCircular="true">
                <plot/>
                <itemLabel/>
            </piePlot>
        </pieChart>
    </band>
</pageHeader>
<columnHeader>
    <band height="18" splitType="Stretch">
        <line>
            <reportElement x="0" y="1" width="540" height="1"/>
        </line>
        <staticText>
            <reportElement style="lbl-black-table-header" x="12" y="4" width="158" height="14"/>
            <textElement/>
            <text><![CDATA[Header 1]]></text>
        </staticText>
        <staticText>
            <reportElement style="lbl-black-table-header" x="205" y="4" width="199" height="14"/>
            <textElement textAlignment="Right"/>
            <text><![CDATA[Header 2]]></text>
        </staticText>
        <staticText>
            <reportElement style="lbl-black-table-header" x="445" y="4" width="74" height="13"/>
            <textElement textAlignment="Center"/>
            <text><![CDATA[Header 3]]></text>
        </staticText>
        <line>
            <reportElement x="0" y="17" width="540" height="1"/>
        </line>
    </band>
</columnHeader>
<detail>
    <band height="18" splitType="Stretch">
        <textField isStretchWithOverflow="true">
            <reportElement positionType="Float" x="12" y="1" width="158" height="16"/>
            <textElement/>
            <textFieldExpression><![CDATA[$F{value1}]]></textFieldExpression>
        </textField>
        <textField isStretchWithOverflow="true">
            <reportElement positionType="Float" x="205" y="1" width="199" height="16"/>
            <textElement textAlignment="Right">
                <font isStrikeThrough="false"/>
            </textElement>
            <textFieldExpression><![CDATA[$F{value2}]]></textFieldExpression>
        </textField>
        <textField isStretchWithOverflow="true">
            <reportElement positionType="Float" x="445" y="1" width="74" height="16"/>
            <textElement textAlignment="Right"/>
            <textFieldExpression><![CDATA[$F{value3}]]></textFieldExpression>
        </textField>
    </band>
</detail>

Также я попытался использовать группы вместо полосы подробностей, как показано ниже в «SubReport.jrxml».

SubReport.jrxml

<group name="Sub report 1">
    <groupHeader>
        <band height="100" splitType="Stretch">
            <subreport isUsingCache="false">
                <reportElement positionType="Float" x="0" y="0" width="540" height="100" isRemoveLineWhenBlank="true"/>
                <dataSourceExpression><![CDATA[$P{REPORT_DATA_SOURCE}]]></dataSourceExpression>
                <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "SubSubReport.jasper"]]></subreportExpression>
            </subreport>
        </band>
    </groupHeader>
</group>
<group name="Sub report 2">
    <groupHeader>
        <band height="200" splitType="Stretch">
            <staticText>
                <reportElement x="110" y="10" width="100" height="20"/>
                <textElement/>
                <text><![CDATA[Sub report 2]]></text>
            </staticText>
            <subreport isUsingCache="false">
                <reportElement positionType="Float" x="0" y="40" width="540" height="100" isRemoveLineWhenBlank="true"/>
                <dataSourceExpression><![CDATA[$P{REPORT_DATA_SOURCE}]]></dataSourceExpression>
                <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "SubSubReport1.jasper"]]></subreportExpression>
            </subreport>
        </band>
    </groupHeader>
</group>

Он печатает метку «Подотчет 2», но не печатает «SubSubReport1.jasper».

Что я делаю неправильно, какие-либо предложения или направления, которые могут помочь.


person Yogesh    schedule 20.11.2011    source источник
comment
У меня такая же проблема... Я хотел передать данные, которые являются списком, в мой подотчет и отображение подотчета в таблице. что я должен сделать.?   -  person Hemang Rami    schedule 15.02.2013


Ответы (1)


источник данных отчета никогда не должен использоваться для подачи вложенного отчета. REPORT_DATA_SOURCE — это источник данных, который является потребляемым объектом.

Это означает, что его можно использовать для подачи отчета только один раз. Таким образом, метод параметров не подходит, когда каждая запись основного отчета имеет собственный подчиненный отчет (если только в основном отчете нет только одной записи). Я думаю, это может быть причиной того, что вы видите только один.

person adis    schedule 13.12.2011