Microsoft Access 掲示板

レポート用のテーブル(クエリ)を作成したい

4 コメント
views
4 フォロー

こちらの質問をさせて頂いた者です。
皆様のおかげでこのような感じでT_取込にデータをインポートできるようになりました。↓

取込IDNo社名住所TEL商品1商品2商品3商品4
11A社000-0000東京都00-00002121
2以下同様
3

今度はこのテーブルを、R_シールラベルというレポート出力用のレコードソースとして、このように加工したいです。↓

ラベルIDNo社名住所1住所2TEL商品
11A社000-0000東京都練馬区00-0000商品1
21A社000-0000東京都練馬区00-0000商品1
31A社000-0000東京都練馬区00-0000商品2
41A社000-0000東京都練馬区00-0000商品3
51A社000-0000東京都練馬区00-0000商品3
61A社000-0000東京都練馬区00-0000商品4
72B社000-0001京都府宇治00-0001商品1
以下同様

以下のようなテーブルを作成しています。
1.会社マスター↓

会社ID社名住所1住所2TEL
1A社000-0000東京都練馬区00-0000
2B社000-0001京都府宇治00-0001
以下同様

2.商品マスター↓

商品ID商品名
1商品1
2商品2
3商品3
4商品4
My Car Bomber
作成: 2023/12/13 (水) 13:44:05
最終更新: 2023/12/13 (水) 15:42:56
通報 ...
1
hatena 2023/12/13 (水) 16:45:08 修正

まずは「T_取込」テーブルを正規化されたテーブルに変換します。
正規形のテーブルは記のようになります。

T_会社別売上 (テーブル名は適当ですので実態にあったものに変更してください。)

ID会社ID商品ID個数
1112
3121
4132
6141
7211

上記のフィールドも持つ空のテーブルを作成しておきます。
ID はオートナンバー型の主キーにしておきます。

下記のSQLのクエリを作成します。

SELECT
 会社マスター.会社ID,
 商品マスター.商品ID,
 Choose([商品ID],[商品1],[商品2],[商品3],[商品4]) AS 個数
FROM
 T_取込 INNER JOIN 会社マスター ON T_取込.社名 = 会社マスター.社名, 商品マスター
ORDER BY
 T_取込.取込ID, 会社マスター.会社ID, 商品マスター.商品ID;

これを保存してデータシートビューで希望のデータになっていることを確認したら、
追加クエリに変更して追加先を「T_会社別売上」テーブルにします。
この追加クエリを実行するとT_会社別売上に上記のデータ例のようにデータが追加されます。


下記のような数値型フィールドが一つのテーブルを作成します。
予想される最大個数までの連番を入力しておきます。

T_Num

Num
1
2
3
4
5

下記のようなSQLのクエリを作成すればレポート出力用にデータになります。

SELECT
 会社マスター.社名,
 会社マスター.[〒],
 会社マスター.住所1,
 商品マスター.商品名
FROM
  (T_会社別売上 INNER JOIN 会社マスター ON T_会社別売上.会社ID = 会社マスター.会社ID)
   INNER JOIN 商品マスター ON T_会社別売上.商品ID = 商品マスター.商品ID
  , T_Num
WHERE
 T_Num.Num<=[個数]
ORDER BY
 T_会社別売上.会社ID, T_会社別売上.商品ID, T_Num.Num;

これをレポートのレコードソースに設定すればいいでしょう。

3
My Car Bomber 2023/12/14 (木) 14:21:41 7fdfc@46fae >> 1

ありがとうございます!
正規化されたテーブルを作るところからやってみます!

2
すずやん 2023/12/14 (木) 08:01:20

My Car Bomberさんの質問から発生する一連の構築に関する回答は、DBを使ったシステムのスタンダードかつお手本のような内容で素晴らしいですね。
出来上がればDBの速度低下で悩まされることも無く、カスタマイズもし易いシステムになりそうです。

4
My Car Bomber 2023/12/15 (金) 11:46:37 7fdfc@46fae

お世話になっております。
意図した通りの出力結果が出るようになりました!ありがとうございました
何がどのように繋がって出力結果にたどり着いたのか、クエリやテーブルの構造・関数などを確認し勉強させて頂きます!