Access (一般機能)

Accessの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Professional : Access 2007)
メインレポートの合計をサブレポートに表示する
投稿日時: 18/06/18 20:12:23
投稿者: ゴマゴマ

お世話になります。
メインレポートの合計をサブレポートに表示したいのですが、サブレポートにメインレポートの合計を=で表示する計算式を設定すると、メインレポートの合計が0になってしまい困っています。サブレポートに=の計算式を設定しないとメインレポートの合計は正常に計算されます。正常に表示される設定方法をご教示ください。
 
メインレポートの元クエリの構成としては次のようになっています。よって分類BBBBの2行目は重量200とともに重複データ非表示「はい」としています。
分類    重量2    商品    重量3        
AAAA    100    aaaa    100        
BBBB    200    bbbb1    150    
BBBB    200    bbbb2    50
 

レポートヘッダー						
	(サブレポート)	原材料	重量			
		    XXXX	500			
		 (使用重量)	 0←理想は分類合計の300 		
		  (残重量)	500←理想は500-300=200		
詳細						
	分類	重量2	商品	重量3		
	AAAA	100	aaaa	100		
	BBBB	200	bbbb1	150	
			bbbb2	 50		
レポートフッター						
	合計	0		300		
		↑理想は300				


重量2には可視「いいえ」のtxt1の非連結テキストボックスを置きコントロースソースには「=IIf([重量2].[IsVisible],[重量2],0)」と設定しています。また重量2の合計(現在0となっている「txt重量2合計」)コントロールには「=[txt1]」と設定しています。
 
サブレポートの(使用重量)コントロールには「=[Reports]![メインレポート]![txt重量2合計]」と設定しています。
 
以上

回答
投稿日時: 18/06/19 15:27:52
投稿者: sk

引用:
メインレポートの合計をサブレポートに表示したいのですが、
サブレポートにメインレポートの合計を=で表示する計算式を
設定すると、メインレポートの合計が0になってしまい困っています。

引用:
レポートヘッダー                        
    (サブレポート)    原材料    重量            
            XXXX    500            
         (使用重量)     0←理想は分類合計の300
          (残重量)    500←理想は500-300=200

引用:
サブレポートの(使用重量)コントロールには
「=[Reports]![メインレポート]![txt重量2合計]」と設定しています。

メインレポートの全てのレコードの詳細セクションや
レポートフッターセクションのフォーマットが終わってない
(全体の集計実行も完了していない)うちから、レポート
フッターセクションに配置された演算テキストボックスの値を
取得しようとすれば、当然そういうことになるのではないかと。
 
例えば、サブレポートのレコードソースであるクエリ側で
[使用重量]や[残重量]の演算/取得を行なうようにされた
方がよいと思います。

投稿日時: 18/06/20 07:19:40
投稿者: ゴマゴマ

sk様
 
いつもありがとうございます。
メインレポートとサブレポートは共通のリンクフィールドを介してつながってはいますが元クエリは別々です(当然ですが)。その場合サブレポートのレコードソースであるクエリ側でどのようにして[使用重量]を演算するのかもう少し詳しく教えていただけますと助かります。メインレポートの重複データの扱いに非常に苦慮しています(無視したいが簡単ではない)。
 
以上

回答
投稿日時: 18/06/20 09:51:59
投稿者: sk

引用:
メインレポートとサブレポートは共通のリンクフィールドを介して
つながってはいますが元クエリは別々です(当然ですが)。
その場合サブレポートのレコードソースであるクエリ側で
どのようにして[使用重量]を演算するのかもう少し詳しく
教えていただけますと助かります。

では、メインレポートとサブレポートのそれぞれの
レコードソースであるクエリの SQL ビューの内容を
明記されることをお奨めします。
 
引用:
メインレポートの重複データの扱いに非常に苦慮しています
(無視したいが簡単ではない)。

それは[原材料], [商品], [分類]といった要素が
どのように関連し合っているのかや、
[重量]という属性がどの要素に付加されているかが
判らないことにはお答えのしようがありません。
 
例えば、[分類マスタ]と[商品マスタ]に当たるテーブルが存在し、
その両者は1対多の関係にあり、「[商品マスタ]の全ての/一部の
レコードの[重量]の値を[分類]グループごとに合計した結果」が
[重量2]である、と仮定します。
 
そこで更に[使用重量]として「全ての[分類]グループの[重量2]の合計」を
求めようとされているのであれば、その合計とは
「[商品マスタ]の全ての/一部のレコードの[重量]の値の合計」でも
あり得るわけですから、それを求める集計クエリを作るのは
それほど難しいものではないと思います。

投稿日時: 18/06/20 12:11:50
投稿者: ゴマゴマ

sk様
 
お世話様です。
クエリのSQLビューを明記させていただきます。
T_分類に対しT_商品が1対多であれば良かったのですが下記@のパターンもあることから複雑になっています。                        
@
分類    重量2    商品    重量3        
BBBB    100    bbbb1    150    
CCCC    100    bbbb2     50
 
SQLビュー
(メインレポート)
SELECT T_分類.分類ID, T_分類.分類, T_分類.重量2, T_商品.商品, T_商品.重量3
FROM T_分類 INNER JOIN T_商品 ON T_分類.統一C=T_商品.統一C;
 
(サブレポート)
SELECT T_原材料.原材料ID, T_原材料.原材料, T_原材料.重量3,
FROM T_原材料;
 
宜しくお願いいたします。
以上

回答
投稿日時: 18/06/21 10:38:13
投稿者: sk

引用:
T_分類に対しT_商品が1対多であれば良かったのですが
下記@のパターンもあることから複雑になっています。
@
分類 重量2 商品 重量3
BBBB 100 bbbb1 150
CCCC 100 bbbb2 50

引用:
(メインレポート)
SELECT T_分類.分類ID, T_分類.分類, T_分類.重量2, T_商品.商品, T_商品.重量3
FROM T_分類 INNER JOIN T_商品 ON T_分類.統一C=T_商品.統一C;

[分類ID]や[統一C]の値が例示されていないので、
何がどう「複雑」なのかがよく分かりません。
 
単に「[T_分類]の全てのレコードの[重量2]の値の合計」を
[使用重量]として求めたい、ということならば、
DSum 関数を使用するか、以下のような集計クエリを
作成なさればよいはず。
 
( SQL ビュー)
--------------------------------------------------------------
SELECT Sum([T_分類].[重量2]) AS [使用重量]
FROM [T_分類];
--------------------------------------------------------------
 
引用:
(サブレポート)
SELECT T_原材料.原材料ID, T_原材料.原材料, T_原材料.重量3,
FROM T_原材料;

[T_原材料]にはレコードが 1 件しか格納されていないのでしょうか。

投稿日時: 18/06/21 14:10:13
投稿者: ゴマゴマ

sk様
 
お世話様です。
ご丁寧にご回答ありがとうございます。
DSumかいただいたSQLビューでいけそうな気がするので、チャレンジしてみます。
またよろしくお願いいたします。
 
以上