2009-03-19 7 views
2

私はMS Accessレポートで次のようにSUMを計算しようとしています上:MS Accessのグループの合計ではなく、細部

  • Group1header - ラベル

    • Group2header - 値 を
      • 詳細 - 例
      • 詳細 - 例
    • Group2header - 値
      • 詳細 - 例えば
  • Group1footer詳細行が表示され

何とか[Group2header値の和]、合計でgroup1footerが正しく計算されません(詳細ごとに値が追加されます)。

「の値が」(副問合せは、多くの行に戻ります)既にクエリで計算されているので、私は、クエリで合計を計算することができません。

(
    (
     (sl_ticketdetail.weight,0) * sl_ticketdetail.amount 
     - (
      SELECT SUM(sl_invoicedetail.amount) 
      FROM sl_invoicedetail 
      WHERE ticketdetailid = sl_ticketdetail.ticketdetailid 
     ) 
     /1000 
    ) 
    * sl_ticketdetail.cost 
) 
/1000 

行くことができるもの上の任意のアイデア違う?

答えて

0

すでにグループ2の合計がクエリで事前に計算されているため、結果の各行に対して繰り返されるため、グループ1の合計を計算するために使用することはできません。

は、次の2つのソリューション

1)だけでなく、クエリでグループ1合計を事前に計算し、あなたがグループ2は を合計行うliek単にそれらをレポート)グループ2フッター形式/印刷のコードを使用してい私は1を言う値をキャプチャし、手動で実行しているグループ1合計

をインクリメントするイベント)が最も簡単です - 2)少し毛深いで、ユーザーページの場合、時にはあなたはWOU前後に

1

はあなたがこのような結果を得ていると言っている:

Group 1a 
    Group 2a 
     Foo1   1 
     Foo2   1 
     foo3   2 
    Group 2a Sum 4 
    Group 2b 
     Foo1   3 
     Foo2   3 
    Group 2a Sum 6 
Group 1a Sum 10 
Group 1b 
    Group 2a 
     Foo1   4 
     Foo2   1 
     foo3   2 
    Group 2a Sum 7 
    Group 2b 
     Foo1   4 
     Foo2   3 
    Group 2a Sum 14 
Group 1b Sum 21 

これは私が期待する動作です。私は、=Sum([value])を各グループフッター(そしてレポートフッター)のバインドされていないフィールドに置くことでそれを行うことができました。

「私のために働く」ことは分かりません。

データソースと同じ名前のディテールの値フィールド(またはサマリーフィールド)にラベルを付けましたか?ときどきあなたのフィールドがバインドされたデータソースと同じ名前を持っているとMS Accessに奇妙な振る舞いがあります(名前を少し変更する傾向がありますので、コードで何を参照しているのでしょう)。

0

不正確合計になりグループ2の合計を含めるために、メインレポートのレコードソースを持っていなければなりません。次に、詳細レベルにある別のレコードソースを持つサブレポートが必要になります。

私はあなたの最善の策は、クエリ内の合計を省略して、レポートに詳細の合計を行わせることです。後で、ユーザーは同じ日付で集計を行うことができますが、別のグループ分けを行うことができます(はい、別のレコードソースを作成することができます)。これは、グループ化以外のフィールドで、ユーザーがレポートにフィルタを適用した場合(このオプションを指定しても与えなくてもかまいません)に対処する必要があります。

関連する問題