iReport: Getting multiple copies of table in detai

2019-02-06 16:23发布

问题:

I am new at iReport. So I want to make a simple report based on data.

My problem is when my rows are less then detail band's size the whole table gets repeated in detail band, and I dont want it again. If my rows are aproximately 5, then same table gets copied 4 times in detail band, and not only table but each and every thing I put in detail band. It gets repeated itself till detail band limits come.

So am I making some mistake, or I have to set some property of detail band in iReport?

please help me friends. Thanks in advance.

This is the generated result:

Here is my code of jrxml:

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport language="groovy" bottomMargin="20" topMargin="20" rightMargin="20" leftMargin="20" columnWidth="555"
              whenNoDataType="AllSectionsNoDetail" pageHeight="842" pageWidth="595" name="test"
              xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xmlns="http://jasperreports.sourceforge.net/jasperreports">
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <style name="table">
        <box>
            <pen lineColor="#000000" lineWidth="1.0"/>
        </box>
    </style>
    <style name="table_TH" backcolor="#F0F8FF" mode="Opaque">
        <box>
            <pen lineColor="#000000" lineWidth="0.5"/>
        </box>
    </style>
    <style name="table_CH" backcolor="#BFE1FF" mode="Opaque">
        <box>
            <pen lineColor="#000000" lineWidth="0.5"/>
        </box>
    </style>
    <style name="table_TD" backcolor="#FFFFFF" mode="Opaque">
        <box>
            <pen lineColor="#000000" lineWidth="0.5"/>
        </box>
    </style>
    <style name="table 1">
        <box>
            <pen lineColor="#000000" lineWidth="1.0"/>
        </box>
    </style>
    <style name="table 1_TH" backcolor="#F0F8FF" mode="Opaque">
        <box>
            <pen lineColor="#000000" lineWidth="0.5"/>
        </box>
    </style>
    <style name="table 1_CH" backcolor="#BFE1FF" mode="Opaque">
        <box>
            <pen lineColor="#000000" lineWidth="0.5"/>
        </box>
    </style>
    <style name="table 1_TD" backcolor="#FFFFFF" mode="Opaque">
        <box>
            <pen lineColor="#000000" lineWidth="0.5"/>
        </box>
    </style>
    <style name="table 2">
        <box>
            <pen lineColor="#000000" lineWidth="1.0"/>
        </box>
    </style>
    <style name="table 2_TH" backcolor="#F0F8FF" mode="Opaque">
        <box>
            <pen lineColor="#000000" lineWidth="0.5"/>
        </box>
    </style>
    <style name="table 2_CH" backcolor="#BFE1FF" mode="Opaque">
        <box>
            <pen lineColor="#000000" lineWidth="0.5"/>
        </box>
    </style>
    <style name="table 2_TD" backcolor="#FFFFFF" mode="Opaque">
        <box>
            <pen lineColor="#000000" lineWidth="0.5"/>
        </box>
    </style>
    <style name="table 3">
        <box>
            <pen lineColor="#000000" lineWidth="1.0"/>
        </box>
    </style>
    <style name="table 3_TH" backcolor="#F0F8FF" mode="Opaque">
        <box>
            <pen lineColor="#000000" lineWidth="0.5"/>
        </box>
    </style>
    <style name="table 3_CH" backcolor="#BFE1FF" mode="Opaque">
        <box>
            <pen lineColor="#000000" lineWidth="0.5"/>
        </box>
    </style>
    <style name="table 3_TD" backcolor="#FFFFFF" mode="Opaque">
        <box>
            <pen lineColor="#000000" lineWidth="0.5"/>
        </box>
    </style>
    <style name="table 4">
        <box>
            <pen lineColor="#000000" lineWidth="1.0"/>
        </box>
    </style>
    <style name="table 4_TH" backcolor="#F0F8FF" mode="Opaque">
        <box>
            <pen lineColor="#000000" lineWidth="0.5"/>
        </box>
    </style>
    <style name="table 4_CH" backcolor="#BFE1FF" mode="Opaque">
        <box>
            <pen lineColor="#000000" lineWidth="0.5"/>
        </box>
    </style>
    <style name="table 4_TD" backcolor="#FFFFFF" mode="Opaque">
        <box>
            <pen lineColor="#000000" lineWidth="0.5"/>
        </box>
    </style>
    <style name="table 5">
        <box>
            <pen lineColor="#000000" lineWidth="1.0"/>
        </box>
    </style>
    <style name="table 5_TH" backcolor="#F0F8FF" mode="Opaque">
        <box>
            <pen lineColor="#000000" lineWidth="0.5"/>
        </box>
    </style>
    <style name="table 5_CH" backcolor="#BFE1FF" mode="Opaque">
        <box>
            <pen lineColor="#000000" lineWidth="0.5"/>
        </box>
    </style>
    <style name="table 5_TD" backcolor="#FFFFFF" mode="Opaque">
        <box>
            <pen lineColor="#000000" lineWidth="0.5"/>
        </box>
    </style>
    <subDataset name="a">
        <parameter name="sem" class="java.lang.String">
            <defaultValueExpression>
                <![CDATA[]]>
            </defaultValueExpression>
        </parameter>
        <queryString>
            <![CDATA[select final."M" as "ENROLLMENT",sem_batch.sem,sem_batch.batch,final."N" as "TTL_WKDY",final."O" as "PRESENT",round(((100*"O")/"N"),2) as "PERCENTAGE" from sem_batch, (select m."Std_id" as "M",l."Batch" as "L",l."Btch" as "N",m."Std" as "O" from (select count(b.batch_id) as "Btch",b.batch_id as "Batch" from batch_wkday b where b.batch_id like $P{sem} group by batch_id) l, (select count(a.std_id) as "Std",a.std_id as "Std_id",s.batch_id as "Batch" from attendance a,student_detail s where a.std_id=s.std_id and s.batch_id like $P{sem} group by a.std_id,s.batch_id) m where l."Batch"=m."Batch") final where final."L"=sem_batch.batch_id]]>
        </queryString>
        <field name="ENROLLMENT" class="java.math.BigDecimal"/>
        <field name="SEM" class="java.math.BigDecimal"/>
        <field name="BATCH" class="java.lang.String"/>
        <field name="TTL_WKDY" class="java.math.BigDecimal"/>
        <field name="PRESENT" class="java.math.BigDecimal"/>
        <field name="PERCENTAGE" class="java.math.BigDecimal"/>
        <group name="ENROLLMENT">
            <groupExpression>
                <![CDATA[$F{ENROLLMENT}]]>
            </groupExpression>
        </group>
    </subDataset>
    <parameter name="SEM" class="java.lang.String"/>
    <queryString>
        <![CDATA[select * from sem_batch]]>
    </queryString>
    <field name="SEM" class="java.math.BigDecimal"/>
    <field name="BATCH" class="java.lang.String"/>
    <field name="BATCH_ID" class="java.lang.String"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band splitType="Stretch" height="69">
            <staticText>
                <reportElement height="53" width="421" y="0" x="68"/>
                <textElement markup="none" textAlignment="Center">
                    <font size="22"/>
                </textElement>
                <text>
                    <![CDATA[ATTENDANCE - CLASS ]]>
                </text>
            </staticText>
        </band>
    </title>
    <pageHeader>
        <band splitType="Stretch"/>
    </pageHeader>
    <columnHeader>
        <band splitType="Stretch" height="61">
            <staticText>
                <reportElement height="20" width="53" y="0" x="0"/>
                <textElement>
                    <font size="12"/>
                </textElement>
                <text>
                    <![CDATA[SEM]]>
                </text>
            </staticText>
            <staticText>
                <reportElement height="20" width="53" y="20" x="0"/>
                <textElement>
                    <font size="12"/>
                </textElement>
                <text>
                    <![CDATA[DATE]]>
                </text>
            </staticText>
            <staticText>
                <reportElement height="20" width="10" y="0" x="58"/>
                <textElement/>
                <text>
                    <![CDATA[:]]>
                </text>
            </staticText>
            <staticText>
                <reportElement height="20" width="10" y="20" x="58"/>
                <textElement/>
                <text>
                    <![CDATA[:]]>
                </text>
            </staticText>
            <textField pattern="dd/MM/yyyy">
                <reportElement height="20" width="100" y="20" x="68"/>
                <textElement/>
                <textFieldExpression>
                    <![CDATA[new java.util.Date()]]>
                </textFieldExpression>
            </textField>
            <textField>
                <reportElement height="20" width="100" y="0" x="68"/>
                <textElement/>
                <textFieldExpression>
                    <![CDATA[$P{SEM}]]>
                </textFieldExpression>
            </textField>
        </band>
    </columnHeader>
    <detail>
        <band splitType="Stretch" height="125">
            <componentElement>
                <reportElement height="50" width="360" y="0" x="35" style="table 5" key="table 5"/>
                <jr:table
                        xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd"
                        xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components">
                    <datasetRun subDataset="a">
                        <datasetParameter name="sem">
                            <datasetParameterExpression>
                                <![CDATA[$P{SEM}+'%']]>
                            </datasetParameterExpression>
                        </datasetParameter>
                        <connectionExpression>
                            <![CDATA[$P{REPORT_CONNECTION}]]>
                        </connectionExpression>
                    </datasetRun>
                    <jr:column width="118">
                        <jr:columnHeader height="23" style="table 5_CH" rowSpan="1">
                            <staticText>
                                <reportElement height="20" width="118" y="0" x="0"/>
                                <textElement textAlignment="Center">
                                    <font size="14" isBold="false"/>
                                </textElement>
                                <text>
                                    <![CDATA[ENROLLMENT]]>
                                </text>
                            </staticText>
                        </jr:columnHeader>
                        <jr:detailCell height="20" style="table 5_TD" rowSpan="1">
                            <textField>
                                <reportElement height="20" width="118" y="0" x="0"/>
                                <textElement textAlignment="Center">
                                    <font size="10" isBold="false"/>
                                </textElement>
                                <textFieldExpression>
                                    <![CDATA[$F{ENROLLMENT}]]>
                                </textFieldExpression>
                            </textField>
                        </jr:detailCell>
                    </jr:column>
                    <jr:column width="90">
                        <jr:columnHeader height="23" style="table 5_CH" rowSpan="1">
                            <staticText>
                                <reportElement height="20" width="90" y="0" x="0"/>
                                <textElement textAlignment="Center">
                                    <font size="14"/>
                                </textElement>
                                <text>
                                    <![CDATA[SEM]]>
                                </text>
                            </staticText>
                        </jr:columnHeader>
                        <jr:detailCell height="20" style="table 5_TD" rowSpan="1">
                            <textField>
                                <reportElement height="20" width="90" y="0" x="0"/>
                                <textElement textAlignment="Center">
                                    <font size="10"/>
                                </textElement>
                                <textFieldExpression>
                                    <![CDATA[$F{SEM}]]>
                                </textFieldExpression>
                            </textField>
                        </jr:detailCell>
                    </jr:column>
                    <jr:column width="90">
                        <jr:columnHeader height="23" style="table 5_CH" rowSpan="1">
                            <staticText>
                                <reportElement height="20" width="90" y="0" x="0"/>
                                <textElement textAlignment="Center">
                                    <font size="14"/>
                                </textElement>
                                <text>
                                    <![CDATA[BATCH]]>
                                </text>
                            </staticText>
                        </jr:columnHeader>
                        <jr:detailCell height="20" style="table 5_TD" rowSpan="1">
                            <textField>
                                <reportElement height="20" width="90" y="0" x="0"/>
                                <textElement textAlignment="Center"/>
                                <textFieldExpression>
                                    <![CDATA[$F{BATCH}]]>
                                </textFieldExpression>
                            </textField>
                        </jr:detailCell>
                    </jr:column>
                    <jr:column width="90">
                        <jr:columnHeader height="23" style="table 5_CH" rowSpan="1">
                            <staticText>
                                <reportElement height="20" width="90" y="0" x="0"/>
                                <textElement textAlignment="Center">
                                    <font size="14"/>
                                </textElement>
                                <text>
                                    <![CDATA[PRESENT]]>
                                </text>
                            </staticText>
                        </jr:columnHeader>
                        <jr:detailCell height="20" style="table 5_TD" rowSpan="1">
                            <textField>
                                <reportElement height="20" width="90" y="0" x="0"/>
                                <textElement textAlignment="Center"/>
                                <textFieldExpression>
                                    <![CDATA[$F{PRESENT}]]>
                                </textFieldExpression>
                            </textField>
                        </jr:detailCell>
                    </jr:column>
                    <jr:column width="90">
                        <jr:columnHeader height="23" style="table 5_CH" rowSpan="1">
                            <staticText>
                                <reportElement height="20" width="90" y="0" x="0"/>
                                <textElement textAlignment="Center">
                                    <font size="14"/>
                                </textElement>
                                <text>
                                    <![CDATA[PERCENTAGE]]>
                                </text>
                            </staticText>
                        </jr:columnHeader>
                        <jr:detailCell height="20" style="table 5_TD" rowSpan="1">
                            <textField>
                                <reportElement height="20" width="90" y="0" x="0"/>
                                <textElement textAlignment="Center"/>
                                <textFieldExpression>
                                    <![CDATA[$F{PERCENTAGE}]]>
                                </textFieldExpression>
                            </textField>
                        </jr:detailCell>
                    </jr:column>
                </jr:table>
            </componentElement>
        </band>
    </detail>
    <columnFooter>
        <band splitType="Stretch"/>
    </columnFooter>
    <pageFooter>
        <band splitType="Stretch" height="54">
            <textField>
                <reportElement height="20" width="100" y="16" x="227"/>
                <textElement textAlignment="Center"/>
                <textFieldExpression>
                    <![CDATA[$V{PAGE_NUMBER}]]>
                </textFieldExpression>
            </textField>
        </band>
    </pageFooter>
    <summary>
        <band splitType="Stretch" height="42"/>
    </summary>
</jasperReport>

回答1:

You should put the table component into the Title band (or into the Summary band, for example). Not into the Detail band.



回答2:

Select Table Properties and add printWhenExpression on the table to $V{REPORT_COUNT} == 1 Now to avoid repetation table values in your ireport.



回答3:

Based on the previous answer response I was able with the table on the Detail section and the following properties set to avoid generating duplicated nor empty pages at the end of the document.

Detail Band -> set the Print When Expression with value $V{REPORT_COUNT} == 1 Table Element -> Set the Print When Expression $V{REPORT_COUNT} == 1



回答4:

hey i got the solution of my problem. If in main query more than one rows are returned then such things will happen. Try to give query which returns not more than one row. Like "Select 1 from dual". This solution solved my problem.