Access (一般機能)

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

 
(Windows 10 Pro : Access 2016)
Accessレポートでデータ部を分割する方法
投稿日時: 19/05/13 09:33:44
投稿者: boatlife

よろしくお願いします。
 
前提:
(1)Accessレポートで店舗別数量を印刷しています。
(2)列見出し4列 に A店、B店、C店、D店、E店、F店 の6店舗を印刷します。
(3)ページ数は日によって変動します。
 
やりたいこと:
(1)レポートの印刷を下記のように分けて印刷したいと考えています。
 (イ)列見出し4列 と A店、B店、C店
 (ロ)列見出し4列 と D店、E店、F店
(2)印刷前にはプレビューを表示して内容を確認してから印刷します。
 
一つのレポートで、(1)の内容を作成するにはどうしたらよいでしょうか。
 
検討したこと:
思いつくのは(イ)(ロ)の二つのレポートを作成しておくことですが、
それぞれ別々にプレビューを確認する必要が生じるので面倒かなぁと思います。
 
Excelのように列見出しと印刷範囲の指定で、一度にプレビューと印刷ができるようにしたいと考えています。

回答
投稿日時: 19/05/13 09:54:32
投稿者: hatena
投稿者のウェブサイトに移動

店舗のマスターテーブルに、
A店、B店、C店 と D店、E店、F店 を区別するためのフィールドを追加します。
 
例えば、フィールド名は、「店舗グループ」として
A店、B店、C店 は 1、D店、E店、F店 は 2 としておきます。
 
「店舗グループ」でグループ化して、グループフッターを表示させて、
グループフッターセクションの「改ページ」プロパティを「カレントセクションの後」に
設定します。
 
列見出しは、ページヘッダーに配置します。
 
以上でどうでしょうか。

投稿日時: 19/05/13 15:19:09
投稿者: boatlife

hatena様 ご指導ありがとうございます。
 
印刷元のデータがクロス集計の形になっていましたので、
店舗グループをどこに入れるべきかでとん挫してしまいました。
クロス集計前のデータに「店舗グループ」を追加してみましたが、うまくいきませんでした。
なにか見落としがあれば、どうぞご教授ください。よろしくお願いします。
 
説明が不足していたのかもしれないと思ったので、やりたいことを追記しました。
 
やりたいこと(追記訂正):
(1)レポートの印刷を下記のように分けて印刷したいと考えています。
※列見出しが店名でした。 行見出しが商品名や商品コードになっています。
※列見出し部に「店舗グループ」番号の追加ができませんでした。
 
   出力イメージ
 (イ)行見出し4列 と A店、B店、C店
   商品名1など    5 10  0
   商品名2など    3  6  4
   商品名3など    0  8  18
    以下続く
 
 (ロ)列見出し4列 と D店、E店、F店
   商品名1など    4 22  6
   商品名2など    11  1  0
   商品名3など    5  3  9
    以下続く
 
やってみたことと結果:
店舗マスタに項目追加は禁じられているので、別テーブルで店舗名と、店舗グループ番号を登録し、
クロス集計を作成する前のテーブルデータに「店舗グループ」番号を追記しました。
  行見出し 店舗グループ 店名 数量
  商品名1  1      A店  5
  商品名1  1      B店  10 
  商品名1  1      C店  0
  商品名2  1      A店  3
  商品名2  1      B店  6
  商品名2  1      C店  4
   中略
  商品名1  2      D店  4
  商品名1  2      E店  22 
  商品名1  2      F店  6
  商品名2  2      D店  11
  商品名2  2      E店  1
  商品名2  2      F店  0
 
ここからレポートを作成すると 店名が繰り返し表示される項目なります。
ちゃんと、C店とD店では改ページしましたが、3店舗づつ横並びで印刷することができませんでした。

  商品名1  1       5
  商品名2  1       3
              B店
  商品名1  1       10 
  商品名2  1       6
              C店
  商品名1  1       0 
  商品名2  1       4
   改ページ
              D店
  商品名1  1       4
  商品名2  1       11
              E店
  商品名1  1       22 
  商品名2  1       1
              F店
  商品名1  1       6 
  商品名2  1       0
 
以上です。

回答
投稿日時: 19/05/13 16:48:36
投稿者: hatena
投稿者のウェブサイトに移動

クロス集計クエリがレコードソースなんですね。
 
テーブル構成の詳細が不明なので、下記のようだと仮定して回答します。
 
店舗マスター
・店舗コード 主キー
・店舗名
 
データ例
店舗コード 店舗名
1      A店
2      B店
3      C店
4      D店
5      E店
6      F店
 
 
店舗グループマスター
・店舗コード  主キー
・グループID  数値型
・列ID     数値型
 
データ例
店舗コード グループID 列ID
1      1     1
2      1     2
3      1     3
4      2     1
5      2     2
6      2     3
 
クエリで上記2つのテーブルを店舗コードで結合して、
Q_店舗グループ と名前を付けて保存します。
 
 
クエリにQ_店舗グループとデータテーブル(売上データかな?)を追加して、
店舗コードで結合します。
これを、クロス集計クエリにして、
下記のように設定します。
 
行見出し 商品名 グループID
列見出し 列ID
値    数量 (合計)
 
 
ページヘッダーにテキストボックスを3つ配置して、
コントロールソースを下記のように設定します。
 
=DLookup("店舗名","Q_店舗グループ","列ID=1 AND グループID=" & [グループID])
 
=DLookup("店舗名","Q_店舗グループ","列ID=2 AND グループID=" & [グループID])
 
=DLookup("店舗名","Q_店舗グループ","列ID=3 AND グループID=" & [グループID])
 
これが店舗名の見出しになります。
 
 
あとは、前回の回答のように、
グループID でグループ化して、グループフッターで改ページするように設定します。

投稿日時: 19/05/22 13:59:28
投稿者: boatlife

hatena様 詳しい説明をありがとうございます!
 
お礼が遅くなり、大変申し訳ありませんでした。
やっと動作を確認できました。
 
受注データのリスト化をしていました。
グループで改ページする方法が理解でき、うまくいきました。
 
同じ商品名リストと店舗コードでレポートを作成していたときには
グループ1とグループ2の商品明細行は同じ行数でしたが、
この方法で出力すると、グループ1とグループ2の商品明細行の行数が変わりました。
受注のない商品名が表示されなくなったため、印刷用紙も数枚ですが少なくなりました。
 
ご指導ありがとうございました。