2012-03-14 12 views
1

Crystal 2008でレポートを完成するのに一歩足を踏み切った。私は以下のレポートのスナップショットを含めた。何らかの理由で、私は正しく計算するために黄色の列に数式を取得することはできません。私は、各メインデータソースごとのNet Aの値を年ごとのNet Aの合計に分割して、各メインデータソースのデータの%を取得しようとしています。ネットAはアクセス中のフィールドから引き出され、ネットAの合計は、実行合計の評価セクションに式({HNT_End_To_End_Data.REPT_YYMM} = cStr(currentdate,'yyMM')を使用して現在の実行日に基づく実行合計であり、フィールドは各変更時にリセットされます。Crystal Reportsの除算式が望ましいものとして計算されない

黄色の数式は現在({HNT_End_To_End_Data.Net_A}/Sum ({HNT_End_To_End_Data.Net_A}))*100で、NetAを個々の年に分割するのではなく、3年(3,727,560/108,666,439)のNet Aに分割したような値を示しています(3,727,560/34,981,163)。私は毎年の各メインデータソースを毎年のNet A合計に分割する公式を取得しようとしています。

私は多くの異なる数式を試してみましたが、運がなかったので、誰もが持っている可能性のある提案を感謝します。

enter image description here

答えて

1

あなたはyear({sometable.somedate})のグループを持っていますか?あなたの集計(合計)関数にそのグループを追加する必要があります。

(
{HNT_End_To_End_Data.Net_A} 
/
Sum({HNT_End_To_End_Data.Net_A}, year({sometable.somedate})) 
) * 100 

EDITを:レポートを確認した後、私はあなたが詳細セクションを抑制するための条件式{HNT_End_To_End_Data.REPT_YYMM} <> cStr(currentdate,'yyMM')を使用している見ることができます。したがって、SUM({HNT_End_To_End_Data.Net_A},{HNT_End_To_End_Data.SERVICE_THRU_YEAR})は実際に表示されていないレコードを含んでいます。これを回避するにはいくつかの方法があります。最も簡単なネットワーク・オブジェクトはNet_Aのための新しい式を作成するには、おそらくです:

if {HNT_End_To_End_Data.REPT_YYMM} <> cStr(currentdate,'yyMM') then 
{HNT_End_To_End_Data.Net_A} 
else 
0; 

ます。次に行うことができます。

(
{HNT_End_To_End_Data.Net_A} 
/
Sum({@net_a}, year({sometable.somedate})) 
) * 100 
+0

を私は年によってグループ化されたレポートを持っています。私は式({HNT_End_To_End_Data.Net_A} /(SUM({HNT_End_To_End_Data.SERVICE_THRU_YEAR}))* 100) 'を使用していますが、正しい結果を得ることはできません。私はテーブルにいくつかの実行日がありますが、レポートは現在の月のみを表示しています。この式は、今月のNet Aを、各年の現在の月の合計ではなく、テーブル内のすべての値の合計に対するNet Aの合計に分割するように見えます。レポートの現在の実行日のみを表示するレコード選択式がありますが、式が同じ処理を行っていません – Trish

+0

「Sum({HNT_End_To_End_Data.Net_A}、{HNT_End_To_End_D ata.SERVICE_THRU_YEAR})」で列を追加すると、その列に何が含まれているのかを理解してください。 –

+0

あなたが示唆したように、現在の '{HNT_End_To_End_Data.REPT_YYMM} 'の合計ではなく、テーブル内のすべての値に対してNet Aの合計を返しています。私はいろいろ試してみましたが、現在のREPT_YYMMのために、合計Net Aを毎年加算するように見えません。それが数式が正しいわけではない理由です。何とかこれを得ることができれば、私はうまくいくでしょう。 ; o) – Trish

関連する問題