その2の続きです。
順調にテーブルができたので次はクエリに移りますが、やっぱり初心者はクエリって難しく感じるみたいです。リレーション自体を掴めてないせいもあるかもしれませんが何をどうくっつけて、どう条件をつければいいのか分からないって人が多いようです。そんな人にはまず完成後の表をExcelか何かで書いてみることをお奨めします。もちろんフィールド名から書式まで理想とする完成形を作ってみて下さい。あとはそれを逆算的にクエリが作成できるよう分解していきましょう。このときクエリを無理に一纏めとかにしないよう自分のレベルに合わせて細分化します。
例
Dをグループ化したクエリ(完成形) ← BとCを結合したクエリ(D) ← Aに抽出条件を設定したクエリ(C) ← テーブル(A)
← テーブル(B)
例のようにすると一つ一つのクエリの難易度が下がるので多少はやりやすくなると思います。自分は今でも定義に悩んだ時はよくやったりするのでクエリが分かんないって人はやってみてください。
では本題に戻って今回使用するクエリを考えてみます。今回、フォームは直接テーブルを操作するケースが多くなりそうなのでクエリを利用することはほぼなさそうです。せいぜいコンボボックスのソースにってとこですがこれはコンボボックス内で定義します。なのでクエリを利用するのはレポートのみになりそうです。作成予定のレポートは前提条件(VBA無しでどこまでできるの?その1)からすると日別売上レポート(商品ベース)、月別売上レポート(商品ベース)、日別売上レポート(メーカーベース)、月別売上レポート(メーカーベース)ってとこでしょうか?それでは各レポートに使用するクエリを考えてみましょう。
さて各レポートに使用するクエリと言いましたが、結局のところ全部が売上に関するレポートなので大本になるのは売上データになりそうです。売上データを日別、月別に抽出し、それに商品なりメーカーなりを結びつけるなりグループ化するなりすればいいじゃないか?って感じです。
では早速、日別、月別に売上データを抽出するクエリを考えます。これよく考えると1つで済ませることできなくはないんですが、今回はまじめに2つ作ります。
日別売上データ(物理名:DaySales)
月別売上データ(物理名:MonthSales)
う~ん、ちょっと幼稚するぎるかなぁって気もしないでもないですが…。一応解説しておくとWHERE句に入力している[]に囲まれてるのがパラメータになります。このパラメータは最終的にはフォームから引っ張るようにする予定なので今回は仮のパラメータです。
さて、面倒くさくなったわけではありませんがあとはさくっと完成させちゃいましょう。
日別売上データ(商品ベース)(物理名:DayGoodsSales)
月別売上データ(商品ベース)(物理名:MonthGoodsSales)
日別売上データ(メーカーベース)(物理名:DayMakersSales)
月別売上データ(メーカーベース)(物理名:MonthMakersSales)
こんな感じでどうでしょう。商品ベースで組む際にメーカーのフィールドも結合しちゃうことでメーカーベースの時に商品ベースをグループ化するだけで済むようにしています。
こうやってやってみるとちょっと前提条件が緩すぎて簡単になりすぎちゃって初心者講座なの?どうなの?って感じになってる気がしないでもないですが、とにかく次回はフォームを作ってみます。