2012-03-12 17 views
4

レポートの各グループのカウントの小計を生成するグループフッターバンドに変数データ型を設定しました。よく働く。 レポートの最後のページで小計の合計を単純に集計して総計を生成したいとします。これは把握することが難しかった。 提案がありますか?JasperReportsのiReport - 総計を生成する

答えて

-1

ただ、新しい変数を作成し、変数式では、例えば

をその変数名を使用して小計のすべてを追加します。その後

$V{subtotal1}+$V{subtotal2}+$V{subtotal3} 

を、「要約」バンドでそれを投げるとレポートのプロパティで、「新しいページの要約」と表示されているボックスをオンにします。そうすれば、レポートの最後のページに表示されます。

+0

私はこの答えは右の領域にあると思いますが、私の小計欄には、単一のフィールドであります1つの変数名しか表示されません。上記のような式エディタで変数名をインクリメントしても機能しません。 –

+0

これは、各小計が実際には各グループに対してリセットされた同じ変数であるため機能しません。 –

6

さまざまresetTypeで2つの変数を使用することができます - (resetType="Group" resetGroup="groupName" calculation="Sum"特性を持つ)のグループで合計を計算すると、(resetType="Report" calculation="Sum"性質を持つ)レポート全体の総和を計算します。

サンプル(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="grand_total_sample" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" isIgnorePagination="true"> 
    <property name="ireport.zoom" value="1.0"/> 
    <property name="ireport.x" value="0"/> 
    <property name="ireport.y" value="0"/> 
    <queryString> 
     <![CDATA[SELECT DOCUMENTID, POSITIONNO, PRODUCTID, QUANTITY FROM POSITIONS WHERE PRODUCTID < 10 AND POSITIONNO > 18 ORDER BY POSITIONNO]]> 
    </queryString> 
    <field name="DOCUMENTID" class="java.lang.Integer"/> 
    <field name="POSITIONNO" class="java.lang.Integer"/> 
    <field name="PRODUCTID" class="java.lang.Integer"/> 
    <field name="QUANTITY" class="java.lang.Integer"/> 
    <variable name="quantitySumInGroup" class="java.lang.Integer" resetType="Group" resetGroup="positionNoGroup" calculation="Sum"> 
     <variableExpression><![CDATA[$F{QUANTITY}]]></variableExpression> 
     <initialValueExpression><![CDATA[0]]></initialValueExpression> 
    </variable> 
    <variable name="quantityTotalSum" class="java.lang.Integer" calculation="Sum"> 
     <variableExpression><![CDATA[$F{QUANTITY}]]></variableExpression> 
     <initialValueExpression><![CDATA[0]]></initialValueExpression> 
    </variable> 
    <group name="positionNoGroup"> 
     <groupExpression><![CDATA[$F{POSITIONNO}]]></groupExpression> 
     <groupHeader> 
      <band height="20"> 
       <textField> 
        <reportElement x="0" y="0" width="400" height="20"/> 
        <box> 
         <topPen lineWidth="1.0"/> 
         <leftPen lineWidth="1.0"/> 
         <bottomPen lineWidth="1.0"/> 
         <rightPen lineWidth="1.0"/> 
        </box> 
        <textElement textAlignment="Center"> 
         <font isBold="true" isItalic="true" isUnderline="false"/> 
        </textElement> 
        <textFieldExpression><![CDATA["Position no: " + $F{POSITIONNO}]]></textFieldExpression> 
       </textField> 
      </band> 
     </groupHeader> 
     <groupFooter> 
      <band height="20"> 
       <textField> 
        <reportElement x="0" y="0" width="400" height="20"/> 
        <textElement> 
         <font isBold="false" isItalic="true" isUnderline="false"/> 
        </textElement> 
        <textFieldExpression><![CDATA["Sum in group: " + $V{quantitySumInGroup}]]></textFieldExpression> 
       </textField> 
      </band> 
     </groupFooter> 
    </group> 
    <detail> 
     <band height="20" splitType="Stretch"> 
      <textField> 
       <reportElement x="0" y="0" width="100" height="20"/> 
       <textElement/> 
       <textFieldExpression><![CDATA[$F{DOCUMENTID}]]></textFieldExpression> 
      </textField> 
      <textField> 
       <reportElement x="100" y="0" width="100" height="20"/> 
       <textElement/> 
       <textFieldExpression><![CDATA[$F{PRODUCTID}]]></textFieldExpression> 
      </textField> 
      <textField> 
       <reportElement x="200" y="0" width="100" height="20"/> 
       <textElement/> 
       <textFieldExpression><![CDATA[$F{QUANTITY}]]></textFieldExpression> 
      </textField> 
     </band> 
    </detail> 
    <lastPageFooter> 
     <band height="20"> 
      <textField> 
       <reportElement x="0" y="0" width="400" height="20"/> 
       <textElement> 
        <font isBold="true" isItalic="true" isUnderline="false"/> 
       </textElement> 
       <textFieldExpression><![CDATA["Total sum: " + $V{quantityTotalSum}]]></textFieldExpression> 
      </textField> 
     </band> 
    </lastPageFooter> 
</jasperReport> 

が、結果は次のようになります。

The result in iReport preview

+0

ありがとう、その魅力のような仕事。素晴らしい解決策。 –

関連する問題