Access

パラメータクエリーのススメ

パラメータークエリー
記事内に商品プロモーションを含む場合があります

Microsoft Officeの簡易データベースシステムMicrosoft Access、使いこなしていますか?

「使いこなす」ほどではないものの、「クエリーぐらいなら作れる」という方も多いかもしれません。

そんな気軽に作れるクエリーですが、検索条件の指定方法を確認してみましょう。

※サンプルデータはWebに公開されているサンプル売上データです。

基本的なクエリーの作り方

メニューバーより「作成」「クエリーデザイン」を選択

①必要なテーブルを選択します。

②追加ボタンをクリックします。

グループ化・集計

売上日で集計して日々の売上の推移を見たい時などの方法です。

必要な項目を選択します。(本日は売上日、部門名、売上金額を使います。)

※部門毎の日毎の売上を把握することにします。

デザインから集計(Σ)をクリックします。

売上金額のみ、集計を「合計」にします。

ホームから表示をクリックすると部門毎・日毎の売上金額を表示することができました。

抽出する条件を指定する

このクエリーを使って5月以降の営業1課の売上が見ることにします。

その場合、売上日を5月以降、営業部門を営業1課と指定することになります。

一番入門編的な方法は、指定フィールドの抽出条件に直接値を入力することです。

※Accessでは日付型の値は「#」で囲むというルールになっています。(半角です)

この条件であれば、売上が5月以降の営業1課の売上合計を表示できます。

また、5月の売上のみ指定したい場合は以下のような方法もあります。

Month()関数を使用して計算式『Month([売上日])』で、売上月を算出し『売上月』という別名を付けます。

その上で条件に「5」を入力することで、5月の売上を集計します。

ただし、これらの方法だと条件が変わるたびにクエリーを修正する必要があり修正忘れなどによるミスを誘発します。

そこで紹介するのが【パラメータクエリー】です。

パラメータクエリーとは

パラメーターとは日本語で言うと引数(条件の受け渡し変数)です。

先の例で言えば売上月、部門名が受け渡し条件になります。

では早速上記のクエリーをパラメータークエリーに変更しましょう。

まずはパラメーターを設定します。

パラメーターとして以下の2つを指定してください。

  • 売上月を入力してください (整数型)
  • 部門名を入力してください (テキスト型)

この時、それぞれに入力する値に合致するデータ型を選んでください。

次に、抽出条件の行に上記で指定したパラメーターを指定します。

これで設定は終了です。早速動かしてみましょう。

入力を促すダイアログボックスが2回表示されますので、それぞれに5、営業1課を入力します。

これで条件に合うデータが抽出されます。

このクエリーを保存しておくと毎月何の編集もなく、起動するだけで当月の必要なデータを集計できます

注意点として、パラメータは変数名とは異なる値にしたほうが良いです

先日パラメータークエリーの動作確認をしていて不可解な挙動が現れました。

上記とほぼ同じような構成なのですが、パラメータとして作成した変数は「処理日付」「処理部門」です。この名前はテーブルの項目名と同じでした。

結果、「処理部門」の方は正しく条件指定されましたが「処理日付」の方が全く機能していない状態(条件指定が無視され、すべてのデータ抽出)となりました。

試行錯誤の結果、パラメータ名と変数名が同名であることが原因では?と「処理日付」を「処理日付を入力してください」に変更したところ、正常に動くようになりました。

処理部門の方は同名でも問題なく動いていたので、日付型だけの問題かもれませんが念のためすべてのパラメータ名は項目名と違うものにした方が良いでしょう。

パラメータクエリをVBAから実行するサンプルPGは↓を参考にしてください。

パラメータクエリーに引数を渡してVBAで実行するパラメータクエリー(アクションクエリー)に引数を渡してVBAで実行するサンプルプログラムです。 コピペでご利用ください。※ご利用は...
HP Directplus オンラインストア