まず、レコードはテーブルコンポーネントごとにテーブルに表示されますが、レポートコンポーネントには表示されません。
結果は次のようになります。
YEARS MONTHS SUMMONTH SUMQUARTER
----- ------ -------- ----------
2009 Jan 130984 432041
Feb 146503
Mar 154554
Apr 147917 435150
May 131822
Jun 155411
Jul 144000 424806
Aug 130369
Sep 150437
Oct 112137 400114
Nov 152057
Dec 135920
=====================================
Jan-Dec 1692111
=====================================
2010 Jan 139927 417564
Feb 154940
Mar 122697
Apr 163257 413305
May 124999
Jun 125049
Jul 145127 427612
Aug 138804
Sep 143681
Oct 143398 406381
Nov 125351
Dec 137632
=====================================
Jan-Dec 1664862
=====================================
Sumquarter列には、年の各四半期の合計が表示されます。
フィールドの値を繰り返した場合、それらは印刷されません。
問題は、sumquarterの列をグループ化して、各行に最初に出力された繰り返し値が次の繰り返し値に結合され、繰り返されない値に達するまで単一のセルになるようにする方法です。
あなたはそれを画像で簡単に見ることができます。以下は表が示す画像であり、私が好んだ解決策は、これらの3か月の合計を1つのセルにグループ化することです。
これが画像です:
このサンプルを使用できます:
<?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="year_sum_quarter" language="groovy" 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="0"/>
<queryString>
<![CDATA[]]>
</queryString>
<field name="year" class="Java.lang.Integer"/>
<field name="month" class="Java.lang.String"/>
<field name="sum" class="Java.lang.Integer"/>
<field name="q" class="Java.lang.Integer"/>
<variable name="yearSum" class="Java.lang.Integer" resetType="Group" resetGroup="yearGroup" calculation="Sum">
<variableExpression><![CDATA[$F{sum}]]></variableExpression>
</variable>
<variable name="qSum" class="Java.lang.Integer" resetType="Group" resetGroup="quaterGroup" calculation="Sum">
<variableExpression><![CDATA[$F{sum}]]></variableExpression>
</variable>
<group name="yearGroup">
<groupExpression><![CDATA[$F{year}]]></groupExpression>
<groupFooter>
<band height="20">
<textField>
<reportElement x="100" y="0" width="100" height="20"/>
<box leftPadding="10">
<topPen lineWidth="1.0"/>
<leftPen lineWidth="0.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="0.0"/>
</box>
<textElement/>
<textFieldExpression><![CDATA["Jan-Dec, " + $F{year}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="200" y="0" width="100" height="20"/>
<box leftPadding="0">
<topPen lineWidth="1.0"/>
<leftPen lineWidth="0.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="0.0"/>
</box>
<textElement/>
<textFieldExpression><![CDATA[$V{yearSum}]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="0" y="0" width="100" height="20"/>
<box>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="0.0"/>
</box>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font isBold="true" isItalic="true"/>
</textElement>
<text><![CDATA[]]></text>
</staticText>
<staticText>
<reportElement x="300" y="0" width="100" height="20"/>
<box>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="0.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font isBold="true" isItalic="true"/>
</textElement>
<text><![CDATA[]]></text>
</staticText>
</band>
</groupFooter>
</group>
<group name="quaterGroup">
<groupExpression><![CDATA[$F{year} + $F{q}]]></groupExpression>
</group>
<columnHeader>
<band height="50">
<staticText>
<reportElement x="100" y="30" width="100" height="20"/>
<box>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font isBold="true" isItalic="true"/>
</textElement>
<text><![CDATA[Month]]></text>
</staticText>
<staticText>
<reportElement x="0" y="30" width="100" height="20"/>
<box>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font isBold="true" isItalic="true"/>
</textElement>
<text><![CDATA[Year]]></text>
</staticText>
<staticText>
<reportElement x="200" y="30" width="100" height="20"/>
<box>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font isBold="true" isItalic="true"/>
</textElement>
<text><![CDATA[Month Sum]]></text>
</staticText>
<staticText>
<reportElement x="300" y="30" width="100" height="20"/>
<box>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font isBold="true" isItalic="true"/>
</textElement>
<text><![CDATA[Quarter Sum]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="20" splitType="Stretch">
<staticText>
<reportElement x="300" y="0" width="100" height="20"/>
<box>
<topPen lineWidth="0.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="0.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font isBold="true" isItalic="true"/>
</textElement>
<text><![CDATA[]]></text>
</staticText>
<staticText>
<reportElement x="0" y="0" width="100" height="20"/>
<box>
<topPen lineWidth="0.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="0.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font isBold="true" isItalic="true"/>
</textElement>
<text><![CDATA[]]></text>
</staticText>
<textField>
<reportElement x="0" y="0" width="100" height="20">
<printWhenExpression><![CDATA[$V{yearGroup_COUNT} == 1]]></printWhenExpression>
</reportElement>
<box leftPadding="10">
<topPen lineWidth="0.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="0.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement/>
<textFieldExpression><![CDATA[$F{year}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="200" y="0" width="100" height="20"/>
<box leftPadding="10">
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement/>
<textFieldExpression><![CDATA[$F{sum}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="100" y="0" width="100" height="20"/>
<box leftPadding="10">
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement/>
<textFieldExpression><![CDATA[$F{month}]]></textFieldExpression>
</textField>
<textField evaluationTime="Group" evaluationGroup="quaterGroup" isBlankWhenNull="false">
<reportElement stretchType="RelativeToBandHeight" isPrintRepeatedValues="false" x="300" y="0" width="100" height="20" printWhenGroupChanges="quaterGroup">
<printWhenExpression><![CDATA[$V{quaterGroup_COUNT} == 1]]></printWhenExpression>
</reportElement>
<box leftPadding="10">
<topPen lineWidth="0.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="0.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement/>
<textFieldExpression><![CDATA[$V{qSum}]]></textFieldExpression>
</textField>
<line>
<reportElement x="300" y="0" width="100" height="1" printWhenGroupChanges="quaterGroup">
<printWhenExpression><![CDATA[$V{quaterGroup_COUNT} == 1]]></printWhenExpression>
</reportElement>
</line>
</band>
</detail>
</jasperReport>
結果は(PDF形式で)次のようになります。
このサンプルでは、Detail
列のYear
バンドで2つの要素を使用しました:1つtextField
垂直方向の境界線のみで、printWhenExpression: "$V{yearGroup_COUNT} == 1"
プロパティ(全体で1回だけ表示しますyearGroup)と1つstaticText
テキストなしで、垂直方向の境界線のみ。
Quarter Sum
列のDetail
バンドで3つの要素を使用しました。
1つtextField
、垂直方向の境界線のみ、printWhenExpression: "$V{quaterGroup_COUNT} == 1"
プロパティ(全体で1回だけ表示しますquaterGroup)、1つstaticText
テキストなしで、垂直方向の境界線と描画用のline
要素のみprintWhenExpression: "$V{quaterGroup_COUNT} == 1"
プロパティのある水平方向の境界線。