私はCrystal Reports 2016を使用しています。何かが変更されたときに表すdatetime
という値があります。私はdatetime
値で何が変化するの数値を持っています。この場合、一部のネットワーク接続は3つの値(0,1,2)の間で状態を変更しています。期間と期間の合計を計算したいと思います。次に、期間の比率とレポートの時間をグラフ化します。私はこれをいくつかやったことがありますが、最後のビットが機能していないので、私は間違ったアプローチを取ったと思います。タイムスタンプのみの時間の計算方法と合計時間はどのくらいですか?
私はそうのような部分的にオンラインオンライン、オフラインのための式、および、(それぞれ)を持つ:
If {CRV_AttributeLog.AnalogValue}=2
Then {CRV_AttributeLog.LogTimeStamp}
If {CRV_AttributeLog.AnalogValue}=0
Then {CRV_AttributeLog.LogTimeStamp}
If {CRV_AttributeLog.AnalogValue}=1
Then {CRV_AttributeLog.LogTimeStamp}
私は状態間の期間を計算するための式を有する:
オンライン
abs(dateDiff("s", next({@TimeStampPartiallyOnline}), {@TimeStampOffline})) +
abs(dateDiff("s", next({@TimeStampPartiallyOnline}), {@TimeStampOnline}))
オフライン
abs(dateDiff("s", next({@TimeStampOffline}), {@TimeStampOnline})) +
abs(dateDiff("s", next({@TimeStampOffline}), {@TimeStampPartiallyOnline}))
一部オンライン
abs(dateDiff("s", next({@TimeStampPartiallyOnline}), {@TimeStampOffline})) +
abs(dateDiff("s", next({@TimeStampPartiallyOnline}), {@TimeStampOnline}))
私は効果的な変数である式の最初のセットを持っていると思われるので、期間を計算式の概要を作成することはできません。 Crystal Reportsでは、数式の入れ子が好きではありません。私は式の名前をif ... then
式に置き換えてcopypastaできません。それは私がエラーをチェックするときに私にエラーを与えます(フィールドはここになければなりません)。私はif文を前に持ち、オフラインレコードであれば操作を行うことを考えましたが、他のタイムスタンプは参照できません。
期間をチャートに入れることができます。これにより、期間が追加されます。しかし、計算された時間は、レポートが実行されている期間のすべての時間を表しているわけではないので、データの特異性のために比率が依然として良好ですが、結果のグラフは100%正確ではありません。エッジの場合、接続がオフラインになっている時間の合計を計算することができません。たとえば、レポートの全期間にわたって接続がオフラインであった場合、オフラインである多くのタイムスタンプがありますが、オンラインのタイムスタンプがないため、オフライン期間は0であり、チャートを破棄します。
どのようにしてこれらの期間を計算し、それをレポートの期間と比較できますか?私はすでにレポートの時間の長さ(分子という別名分子)を与える式を作成しましたが、計算には配分(分母)が必要です。
この問題にアプローチするより良い方法はありますか?
あなたはこれまでに何をしていますか?あなたはここにそれを見ることができます –