2012-11-25 75 views
21

我在Jaspersoft iReport Designer中有類似的報告,但無法弄清楚如何總結垂直列「Doctor Payment」中的所有值以獲得總數爲「1601」的結果?這些列的長度是可變的(即,根據數據庫的更新頻率的大小,行的數量不同)。如何在Jaspersoft iReport Designer中的列中求和所有值?

是否有像$V{COLUMN_COUNT}(實際上不給出行數,這裏是5), 這樣的變量,它給出了列中所有值的總和?如果沒有,怎麼辦總和

Doctor ID Doctor Payment 
A1    123 
B1    223 
C2    234 
D3    678 
D1    343 
Total   1601 

回答

53

這很容易解決你的任務。您應該創建並使用一個新變量來對「醫生付款」列的值進行求和。

你的情況的變量可以聲明如下:

<variable name="total" class="java.lang.Integer" calculation="Sum"> 
    <variableExpression><![CDATA[$F{payment}]]></variableExpression> 
</variable> 
  • 計算類型總和;
  • the Reset type is Report;
  • 變量表達式$ F {}付款,其中$ F {}付款是一個字段的名稱包含總和(醫生付款)。

工作示例。

CSV數據源:

 
doctor_id,payment 
A1,123 
B1,223 
C2,234 
D3,678 
D1,343 

模板:

<?xml version="1.0" encoding="UTF-8"?> 
<jasperReport ...> 
    <queryString> 
     <![CDATA[]]> 
    </queryString> 
    <field name="doctor_id" class="java.lang.String"/> 
    <field name="payment" class="java.lang.Integer"/> 
    <variable name="total" class="java.lang.Integer" calculation="Sum"> 
     <variableExpression><![CDATA[$F{payment}]]></variableExpression> 
    </variable> 
    <columnHeader> 
     <band height="20" splitType="Stretch"> 
      <staticText> 
       <reportElement x="0" y="0" width="100" height="20"/> 
       <box leftPadding="10"/> 
       <textElement textAlignment="Center" verticalAlignment="Middle"> 
        <font size="10" isBold="true" isItalic="true"/> 
       </textElement> 
       <text><![CDATA[Doctor ID]]></text> 
      </staticText> 
      <staticText> 
       <reportElement x="100" y="0" width="100" height="20"/> 
       <box leftPadding="10"/> 
       <textElement textAlignment="Center" verticalAlignment="Middle"> 
        <font size="10" isBold="true" isItalic="true"/> 
       </textElement> 
       <text><![CDATA[Doctor Payment]]></text> 
      </staticText> 
     </band> 
    </columnHeader> 
    <detail> 
     <band height="20" splitType="Stretch"> 
      <textField> 
       <reportElement x="0" y="0" width="100" height="20"/> 
       <box leftPadding="10"/> 
       <textElement/> 
       <textFieldExpression><![CDATA[$F{doctor_id}]]></textFieldExpression> 
      </textField> 
      <textField> 
       <reportElement x="100" y="0" width="100" height="20"/> 
       <box leftPadding="10"/> 
       <textElement/> 
       <textFieldExpression><![CDATA[$F{payment}]]></textFieldExpression> 
      </textField> 
     </band> 
    </detail> 
    <summary> 
     <band height="20"> 
      <staticText> 
       <reportElement x="0" y="0" width="100" height="20"/> 
       <box leftPadding="10"/> 
       <textElement> 
        <font isBold="true"/> 
       </textElement> 
       <text><![CDATA[Total]]></text> 
      </staticText> 
      <textField> 
       <reportElement x="100" y="0" width="100" height="20"/> 
       <box leftPadding="10"/> 
       <textElement> 
        <font isBold="true" isItalic="true"/> 
       </textElement> 
       <textFieldExpression><![CDATA[$V{total}]]></textFieldExpression> 
      </textField> 
     </band> 
    </summary> 
</jasperReport> 

結果將是:

Generated report via iReport's preview


你可以在JasperReports Ultimate Guide找到很多信息。

+0

我得到了一些邏輯,但是在哪裏放置新的變量,我正在開始,即後宣佈許多,但給錯誤變量未發現:「總」 –

+0

@SagarNikam你試試我的樣品? –

+0

是的,先生與樣品它的工作原理,但我切換到實時數據,與MySQL查詢工作,它給了錯誤「變量未找到」,我宣佈變量之後過,要高度重視我發送完整的文件 –

7

iReports自定義字段列的 (求和,平均值等)

  1. 右鍵單擊變量,然後單擊新變量

    一個創建變量

  2. 點擊。注意右邊

  3. 屬性變量相應

  4. 更改值類的名稱重命名爲正確的數據類型

    一個。您可以通過點擊3點

  5. 搜索選擇正確的類型計算

  6. 改變所述表達

    一個的。點擊小圖標

    b。選擇您正在尋找的列進行計算

    c。單擊Finish

  7. 設置初始值表達式爲0

  8. 設置增量類型爲無

  9. 離開增量器工廠類名的空白
  10. 設置復位類型(通常彙報)

  11. 將一個新的文本字段拖到舞臺上(通常在Last Page Footer或Column Footer中)

  12. 雙擊新文本字段
  13. 清除表達式「文本字段」
  14. 選擇新的變量

  15. 單擊Finish

  16. 將新文本在一個理想的位置
相關問題