〇要件
グループ計で時間を合計したい。ex) 勤務時間のような日別の時間で、グループ計を取る
〇前提
各レコードにはHH:mm形式のデータがある。 ex) 12:30定義名はF_HHMMとする
〇実装 (IReportのバージョンは4.0.2)
1)variablesで分に置き換えて保持しておく。
Name:V_HHMMVariable Class : java.lang.Integer
Calculation : Sum
Reset type:Group
Reset group:対象のグループ名
Increment type:none
Variable Expression:
$F{F_HHMM}.equals(null) ? 0 : new Double(new Double(new Double($F{F_HHMM}.substring(0,2)) * 60) + new Double($F{F_HHMM}.substring(3,5)))
2)レコード出力対象のフィールドにてFieldExpressionを定義
$F{V_HHMM}.equals(null)?null:(((new Integer($F{V_HHMM}) / 60).toString().replace('.',':').split(':')[0]) + ':' + ((new Integer($F{V_HHMM}) % 60).toString().length()==1?('0'+(new Integer($F{V_HHMM}) % 60)):(new Integer($F{V_HHMM}) % 60)))