プロが教える店舗&オフィスのセキュリティ対策術

以下のような売り上げテーブルと原価テーブルがあります。
売り上げテーブル
店番号,日付,売り上げ
000001,20051201,50000
000001,20051202,40000
000002,20051201,150000
000002,20051202,100000
000003,20051201,30000
000003,20051202,40000

原価テーブル
店番号,日付,原価
000001,20051201,30000
000001,20051202,20000
000002,20051201,70000
000002,20051202,50000
000003,20051201,15000
000003,20051202,20000

この二つのテーブルから年と月を指定して以下のような表を作成したいのですが、どのように行えばいいのでしょうか。
2005年12月
店番号,日付 01, 02,...
000001,売上, 50000, 40000...
原価, 30000, 20000...
000002,売上,150000,100000...
原価, 70000, 50000...
000003,売上, 30000, 40000...
原価, 15000, 20000...

よろしくお願いします。

A 回答 (5件)

>クロス集計クエリからフォームを作れないので、開いていません



この状態では
PARAMETERS [Forms]![F売上と原価]![cob年] Text ( 255 ), [Forms]![F売上と原価]![cob月] Text ( 255 );
のパラメータに値がセットされないため上手く行かないのでしょう。対策として思い付くのは

1.パラメータの内容を直接セットする
2.「F売上と原価」をコピーして(仮に)「F売上と原価x」フォームを造り、それを利用してパラメータをセット、出来上がったらば差し替える
3.クロス集計クエリを利用する部分を別フォームで作成し、最終的に「F売上と原価」のサブフォームとして差し込む

くらいでしょうか。
    • good
    • 0

#2、#3です。


ご呈示いただいた、クロス集計クエリですが、パラメータに「F売上と原価」フォーム上の値が使われています。
フォームやレポートのウィザードを使って作成しようとするとき、「F売上と原価」フォームはアクティブになっているでしょうか?

この回答への補足

返事が遅れてすみません。

>フォームやレポートのウィザードを使って作成しようと
>するとき、「F売上と原価」フォームはアクティブになっ
>ているでしょうか?

とは、「F売上と原価」フォームを開いているか、ということでしょうか。という意味であれば、クロス集計クエリからフォームを作れないので、開いていません。

よろしくお願いします。

補足日時:2006/01/16 14:50
    • good
    • 0

#2です。

#2に対する補足の意味が良く判りません

>作成したテーブル
私が提案した(仮名)Reportテーブル でしょうか?

>クロス集計クエリ
このSQL文を提示できませんか?

>このクエリ
クロス集計クエリですか?

>フォームやレポートを作成することができません。
どのようなエラーになるのでしょうか?

この回答への補足

>作成したテーブル
私が提案した(仮名)Reportテーブル でしょうか?
→そうです。

>クロス集計クエリ
このSQL文を提示できませんか?
→以下の通りです。

PARAMETERS [Forms]![F売上と原価]![cob年] Text ( 255 ), [Forms]![F売上と原価]![cob月] Text ( 255 );
TRANSFORM Sum(売上と原価.Sales) AS Salesの合計
SELECT 売上と原価.ShopCode, dbo_ShopMaster.ShopName, 売上と原価.ShopCode2
FROM dbo_ShopMaster INNER JOIN 売上と原価 ON dbo_ShopMaster.ShopCode = 売上と原価.ShopCode
WHERE (((Year([SalesDate]))=[Forms]![F売上と原価]![cob年]) AND ((Month([SalesDate]))=[Forms]![F売上と原価]![cob月]))
GROUP BY 売上と原価.ShopCode, dbo_ShopMaster.ShopName, 売上と原価.ShopCode2
ORDER BY 売上と原価.ShopCode, 売上と原価.ShopCode2 DESC , 売上と原価.SalesDate
PIVOT 売上と原価.SalesDate;

>このクエリ
クロス集計クエリですか?
→そうです。

>フォームやレポートを作成することができません。
どのようなエラーになるのでしょうか?
→フォームやレポートのウィザードを使って作成しようとすると、選択可能なフィールドに何も表示されず先に進めません。

補足日時:2006/01/14 03:21
    • good
    • 0

データー量が膨大ではないと推測して



1.Reportテーブル作成(名前は適当。一度だけ作成)
   フィールドは:店番号、店番号+アルファ、日付、金額
2.Reportの全データ削除
3.売り上げテーブルからReportテーブルへ「追加クエリー」実行。この時「店番号+アルファ」フィールドに、店番号+"a" など、並べ替えようデータを出力
4.原価テーブルからReportテーブルへ「追加クエリー」実行。この時「店番号+アルファ」フィールドに、店番号+"b" など、並べ替えようデータを出力

5.Reportテーブルを「店番号+アルファ」フィールドで並べ替える(選択クエリー使用)

みたいな流れで

この回答への補足

作成したテーブルを元にクロス集計クエリで表を作成することができました。
しかし、このクエリを元にフォームやレポートを作成することができません。どのようにしたらいいのでしょうか。
よろしくお願いします。

補足日時:2006/01/11 16:09
    • good
    • 0

データベースの種類や表を作成する環境を書かないと明確な回答は得られないと思いますよ。



一般的な回答ですと売上テーブルと原価テーブルのカーソルを二つ用意して交互にデータを出力すればよいです。
それとも一つのSQL文で表を作成したいのでしょうか?
ご使用の環境を詳しく書いてください。

この回答への補足

すみません。書き忘れました。
Windows2000でaccess2002を使用します。
できれば結果をフォームで表示し、それをレポートで印刷したいと思っています。
よろしくお願いします。

補足日時:2006/01/10 14:18
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す