|
こもれびです
結論としては出来ます。
ただし、表示の条件が付きます。
集計データの表示は日もしくは週のスパンが大きくなると「横スクロール」
が必要になるわけですが、表示切替のボタンを配したメインフォームの
中にサブフォームを配することを考えたときにサブフォームで表示できる
スパンは限度があるということです。
試しにフォームをデザインしてみましたら、集計データは
31日分 もしくは 31週分でした。(テキストボックス31個分ということ)
よって、集計データを表示させるためのSQLで表示する範囲を限定する必要
があります。
例)
SQL="TRANSFORM Sum(T_売り上げdata.売り上げ) AS 売り上げの合計 " _
& "SELECT T_開始日.shimei AS 氏名 " _
& "FROM T_開始日 LEFT JOIN T_売り上げdata " _
& "ON T_開始日.id = T_売り上げdata.社員id " _
& "WHERE (((T_売り上げdata.日付) " _
& "Between #1/5/2004# And #1/20/2004#)) " _
& "GROUP BY T_開始日.shimei " _
& "PIVOT T_売り上げdata.日付;"
サンプルとして作成したフォームでは表示の切り替えに「トグルボタン」を
用いました。
ボタンのCaptionは「日表示」と「週表示」となっております。
このボタン操作をSelect case文でSQLを切り替えて、2通りの表示を
1つのサブフォームで表示できるようにしてみました。
実際のフォームでは日付の表示範囲を入力するテキストボックスも必要に
なります。
上に記述したSQL文中のWHERE句のBetweenの日付を変数入力とします。
トグルボタンのイベントプロシージャのソースコードは必要でしょうか?
▼パンダまん さん:
>はじめまして。いつも参考にさせていただいています。
>
>フォームで、クロス集計クエリのようなものを作りたいと思っています。
>
>名前|日付|売上|売上開始日|現在週|
>
>上記のようなクエリAがあり、日々のデータを蓄積しています。
>現在週は売上開始日から日付まで何週目にあたるかを計算しています。
>
>あああ | 2004/1/1 | 10000 | 2003/10/15 | 4
>あああ | 2004/1/2 | 6000 | 2003/10/15 | 4
>あああ | 2004/1/3 | 7500 | 2003/10/15 | 4
>あああ | 2004/1/4 | 12000 | 2003/10/15 | 5
>あああ | 2004/1/5 | 6000 | 2003/10/15 | 5
>
>と、上記のような感じです。
>集計してみるにはクロス集計クエリが最適だと思うのですが、
>
>名前 | 1週目 | 2週目 | 3週目 |
>あああ | 60000 | 51000 | 68000 |
>いいい | | | 23000 |
>ううう | | 51000 | 52000 |
>えええ | | 42000 | 40000 |
>おおお | 120000 | 98000 | 88000 |
>かかか | 60000 | 51000 | 68000 |
>
>上記のようにフォームで週ごとに表示させたいのですが、なおかつボタン1つで
>
>名前 | 2003/1/1 | 2003/1/2 | 2003/2/3 |
>あああ | 10000 | 7500 | 12000 |
>いいい | | | 4000 |
>ううう | | 25000 | 13000 |
>えええ | | 30000 | 30000 |
>おおお | 30000 | 24000 | 18000 |
>かかか | 40000 | 18000 | 8000 |
>
>というよな、日ごとの集計を表示させたいと思います。
>上記のようなフォームをコントロールなどを使って作成することはできるのでしょうか?
>また、もっとよい方法がございましたらその方法などヒントでも結構ですのでぜひ教えてください。
>
>OSはXP Access2000です。
>
|
|