コンテンツまでスキップ
  • 検索フィールドが空なので、候補はありません。

計算式クラスターで時刻の計算が正しく計算処理されない

時刻クラスターは内部的にシリアル値でデータを管理しています。

シリアル値は「1900年1月1日」を「1」とし、その日からの通算日数と時刻を数値として表したものです。

時刻クラスターや時刻計算クラスター、年月日クラスター等は内部的にシリアル値で管理されています。

これが影響して計算式クラスター上に計算結果が正しく表示されていないか、想定通りに計算処理ができていない可能性があります。

以下のいずれかの対処をご検討ください。

【時刻計算クラスターを活用する】

2つの時刻クラスターとの差分を算出する単純な時刻計算であれば、時刻計算クラスターを活用する方法があります。

時刻計算クラスターの詳細につきましては下記のマニュアルをご参考ください。

 

# 参照マニュアル

i-Reporterで使用できるクラスター種別の詳細 > クラスタ―種別詳細 > 時刻計算

 

【計算式クラスターの「計算結果データ型」を「年月日・時刻」にする】

ConMas Designerで計算式クラスターの入力パラメータ設定を開き、
「計算結果データ型」を「年月日・時刻」にします。※ 下記赤枠参照

これにより、計算結果がシリアル値となる場合は「HH:mm」等の形式で計算結果を表示できます。

表示形式は上記青枠の「日付・時刻 書式」から変更します。

 

なお、計算結果が24時間を超過する場合は正しく時刻を表示することができません。

計算結果が24時間を超過することが想定される場合は次項の【シリアル値を数値に変換する】をご参考ください。

 

【シリアル値を数値に変換する】

シリアル値は1日=24時間を「1」として扱う数値であり、時刻は小数値で扱います。

そのため、例えばシリアル値を「分」単位に変換したい場合は「シリアル値 * 24 *60」の計算処理を行うことで可能です。

このようにして数値の変換を行いながら、24時間以上の計算結果を出力するように
計算式を作成してください。

! 注意事項

i-Reporterでは小数計算を行うときに誤差が発生することがあるため、
これを回避するためROUND関数を使用してください。

例えば、以下のように「分」単位に変換してから
ROUND関数で小数を四捨五入することで、誤差の発生を回避できます。

 

=ROUND(【シリアル値】* 24 * 60 , 0)

 

# 参照マニュアル

帳票定義を作成する > 帳票定義Excelファイルを準備する > EXCEL関数機能 > EXCEL関数 小数計算の誤差と回避方法