いつもお世話になっております。
Access初心者で、クエリについて勉強中ですがいまいち理解が深まりません。教えてください。
全く同じフィールドをもっているテーブルA-1とテーブルA-2があります。
またもう一方で同じフィールドを持っているB-1、B-2、B-3、B-4があります。
AグループとBグループは異なるフィールドになります。
AグループとBグループは一つだけ同じフィールドを持っていて、それをつないでいます(リレーションシップ?)
するとクエリはA-1×B-1、A-1×B-2・・・と全部で8とおり、8つのクエリを作っています。
そのクエリをレポートで表示させているのですが、これを何とか一つのクエリにまとめることが可能でしょうか?
クエリのデザインビューで選択する各フィールドのテーブルをVBAから切り替えればいいのかなと思っているのですが、
そのやり方がさっぱり検討もつきません。
よろしくお願いいたします。
まったく同じフィールドを持っているテーブルを分けるのはデータベース的にはNGな設計になります。一つのテーブルにまとめるべきです。
例えば、A-1とA-2が全く同じフィールドなら、一つのテーブルにして、2つを識別するフィールドを追加します。
A-1とA-2の主キーが重複するなら、識別フィールドと現状の主キーの複合主キーにします。
B-1、B-2、B-3、B-4に関しても同様に一つのテーブルにまとめます。
そうすれば、クエリは一つですみます。あとは、それぞれの識別フィールドに抽出条件を設定すれば希望のデータを取り出せます。
レポートなら開くときにOpenReportメソッドの引数で抽出条件を設定することができます。
なるほど、やはりそうですよね。。。Accessを勉強し始めた頃、将来データ量が増えすぎることを恐れて、カテゴリのちがうDBをそれぞれに分けて作ってしまったんですが、それがそもそもの間違いだったんですね。
統合するとシステム全体を見直さないといけないので、時間がかかりますがコツコツやってみます。
いつも本当に勉強になります。ありがとうございます!