Microsoft Officeの簡易データベースシステムMicrosoft Access、使いこなしていますか?
「使いこなす」ほどではないものの、「クエリーぐらいなら作れる」という方も多いかもしれません。
そんな気軽に作れるクエリーですが、検索条件の指定方法を確認してみましょう。
※サンプルデータはWebに公開されているサンプル売上データです。
基本的なクエリーの作り方
メニューバーより「作成」「クエリーデザイン」を選択
①必要なテーブルを選択します。
②追加ボタンをクリックします。
グループ化・集計
売上日で集計して日々の売上の推移を見たい時などの方法です。
必要な項目を選択します。(本日は売上日、部門名、売上金額を使います。)
※部門毎の日毎の売上を把握することにします。
デザインから集計(Σ)をクリックします。
売上金額のみ、集計を「合計」にします。
ホームから表示をクリックすると部門毎・日毎の売上金額を表示することができました。
抽出する条件を指定する
このクエリーを使って5月以降の営業1課の売上が見ることにします。
その場合、売上日を5月以降、営業部門を営業1課と指定することになります。
一番入門編的な方法は、指定フィールドの抽出条件に直接値を入力することです。
※Accessでは日付型の値は「#」で囲むというルールになっています。(半角です)
この条件であれば、売上が5月以降の営業1課の売上合計を表示できます。
また、5月の売上のみ指定したい場合は以下のような方法もあります。
Month()関数を使用して計算式『Month([売上日])』で、売上月を算出し『売上月』という別名を付けます。
その上で条件に「5」を入力することで、5月の売上を集計します。
ただし、これらの方法だと条件が変わるたびにクエリーを修正する必要があり修正忘れなどによるミスを誘発します。
そこで紹介するのが【パラメータクエリー】です。
パラメータクエリーとは
パラメーターとは日本語で言うと引数(条件の受け渡し変数)です。
先の例で言えば売上月、部門名が受け渡し条件になります。
では早速上記のクエリーをパラメータークエリーに変更しましょう。
まずはパラメーターを設定します。
パラメーターとして以下の2つを指定してください。
- 売上月を入力してください (整数型)
- 部門名を入力してください (テキスト型)
この時、それぞれに入力する値に合致するデータ型を選んでください。
次に、抽出条件の行に上記で指定したパラメーターを指定します。
これで設定は終了です。早速動かしてみましょう。
入力を促すダイアログボックスが2回表示されますので、それぞれに5、営業1課を入力します。
これで条件に合うデータが抽出されます。
このクエリーを保存しておくと毎月何の編集もなく、起動するだけで当月の必要なデータを集計できます。
注意点として、パラメータは変数名とは異なる値にしたほうが良いです。
先日パラメータークエリーの動作確認をしていて不可解な挙動が現れました。
上記とほぼ同じような構成なのですが、パラメータとして作成した変数は「処理日付」「処理部門」です。この名前はテーブルの項目名と同じでした。
結果、「処理部門」の方は正しく条件指定されましたが「処理日付」の方が全く機能していない状態(条件指定が無視され、すべてのデータ抽出)となりました。
試行錯誤の結果、パラメータ名と変数名が同名であることが原因では?と「処理日付」を「処理日付を入力してください」に変更したところ、正常に動くようになりました。
処理部門の方は同名でも問題なく動いていたので、日付型だけの問題かもれませんが念のためすべてのパラメータ名は項目名と違うものにした方が良いでしょう。
パラメータクエリをVBAから実行するサンプルPGは↓を参考にしてください。