2017年10月8日日曜日

JasperReport (IReport)でHH:mm形式の時間を合計する

技術Tipsです

〇要件

グループ計で時間を合計したい。
 ex) 勤務時間のような日別の時間で、グループ計を取る

〇前提

各レコードにはHH:mm形式のデータがある。 ex) 12:30
 定義名はF_HHMMとする

〇実装 (IReportのバージョンは4.0.2)

1)variablesで分に置き換えて保持しておく。
Name:V_HHMM
 Variable 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)))

2017年10月5日木曜日

Illustrator CS2 でIMEが利用できない (事象のみ。未解決)

最近は社内SEもしております。

Illustrator CS2を使って名刺など作りたいという要望があり、個人パソコンへ
インストールするのも後で面倒そうなので、新規にWindows7環境を構築して
Illustrator CS2をインストールしたところ、IMEが使えない。と。。。

現象の詳細

・Illustrator CS2を起動して、テキストエリアなどで半角/全角キーを押しても入力モードが切り替わらない
・アプリを終了 → IMEのバーをタスクバーへ入れてアプリ起動 するとアプリの起動時にIMEのバーが消える (この時点でおかしいよね。。。と)
・他のアプリを起動して利用してみると、IMEのバーは表示される。
・いわゆる「再起動すれば直る」を期待したが、それでもNG

まずは調べてみた

1)Windows7ではCS2に対応していない
2)IME2010をインストールすると直るかもね。
3)キーボードショートカットのバッティングが原因では?

試してみた

1)互換性モードでアプリケーションを起動 → 解消せず
2)IME2010をインストール → 解消せず
3)「キーボードまたは入力方法の変更」から「キーボードの変更」→「詳細なキー設定」→「入力言語を切り替える」を「左shift+Alt」から「なし」へ変更 →解消せず

想定外の挙動

Illustratorが標準で持つショートカットキーも、一部使えない(ズームなど)
結局のところ、未サポート -> キーボード操作の一部に不良 という現象は綺麗に解決できそうにありませんでした。

結果

CS2の利用はあきらめました。
Illustrator CS3があったのでCS2をアンインストール後、CS3をインストール。無事に動くことを確認できました。