お世話になります。
ID 社名 〒 住所 TEL りんご 梨 ぶどう みかん
1 A社 000-0000 東京 00-0000 1 2 2 1
2 B社 000-0001 京都 00-0001 1 1 1 1
3 C社 000-0002 大阪 00-0002 1 1 1 1
上記のようなテーブルをExcelからインポートしてきたとして、発送用のレポートのレコードソースにするために
1 A社 000-0000 東京 00-0000 りんご
2 A社 000-0000 東京 00-0000 梨
3 A社 000-0000 東京 00-0000 梨
4 A社 000-0000 東京 00-0000 ぶどう
5 A社 000-0000 東京 00-0000 ぶどう
6 A社 000-0000 東京 00-0000 みかん
7 B社 000-0001 京都 00-0001 りんご
8 B社 000-0001 京都 00-0001 梨
・
・
・
のようなテーブル(クエリ?)を作成したいです。
社名ID、社名、住所、TELフィールドを持つ社名マスター
商品ID、商品名フィールドを持つ商品マスターは作成しましたが、ここからどうしたらいいのか分かりません。
助けて頂きたいです。
できるだけクエリのみで解決したいのか、VBAを使用してもよいかによって
提示される解決方法は異なります。
大元のデータがExcelワークシート上のテーブルなのであれば、
先に Power Query によってそのような形に変換されたテーブルを
Access データベースにインポートする、という選択肢もあるでしょう。
Excelファイル自体は加工を行わず、インポート時に必要なフィールドだけを取り込み、それを加工してレコードソースを作成したいです。
1. Excel取込フォームの取込ボタンのクリック時イベントで↑のExcelファイルを選択
2. ExcelファイルからID、りんご、梨、ぶどう、みかんのフィールドをインポートしてT_取込テーブルに追加(注文日はExcelファイル2行目の日付を入れる)
T_取込テーブルとマスターで↑のようなレコードを作り、ラベルシール出力用レポートのレコードソースにしたいです。
参照元のExcelワークシートが上記のようなレイアウトになっている、
ということなのであれば、少なくとも Access のテーブルへの取込は
オートメーションによって行うことになるでしょう。
Excelワークシートからデータを取り込んだテーブルを使用して
レポートへの出力を行う処理については、それとはまた別の問題です。
概ねそんな感じのレイアウトで、A列も空白になっています。
いままでExcel上で整形してから取込むといったことしかしてこなかったので、どうすれば自動で4行目のフィールドからとりこめるのか分かりません。
わたしが構築する場合は、という想定で記載してみます。
他に良い方法はいくらでもあると思うので、あくまで参考までに。
※Excelからインポートした後
既存のテーブル:
T-INPORT:インポートしたテーブル
M-社名:社名マスター
M-商品:商品マスター
作るテーブル:
T-購入履歴:インポートしたテーブルから購入された情報を抽出するテーブル
項目:「ID」「社名ID」「商品名ID」
作るView:
V-発送用レポート:発送用のレポートのレコードソース
発送用のレポート:
発送レポート
1.まずT-INPORTから1行、読みます。
2.T-INPORTの「社名」とM-社名を比較し、社名マスターのIDを取得します。これは変数に一時保持します。
3.T-INPORTの「りんご」の個数をもとに「りんごの商品ID」「社名のID」「個数」を関数に渡します
※上記の「関数」とは渡された引数をもとに「T-購入履歴」に情報を書き込む機能です
中では「個数」の回数分、「T-購入履歴」に書き込みが発生します。
4.T-INPORTの「梨」の個数をもとに「梨の商品ID」「個数」「社名のID」を関数に渡します
※以下「ぶどう」「みかん」同じ
5.「4.」が終わったら、「T-購入履歴」と「M-社名」「M-商品」をViewで連結した「V-発送用レポート」に中身が発生していると思いますので、これをもとに「発送レポート」を出力します。
以上です。
これだと品目が増えるとプログラムの修正が必要なので、かなり力技です。
が、とりあえずなんとかなるかと思います。