Windows TIPS
[Office Master]
  Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

Accessクエリで動的に変更するパラメータ情報を受け取る

解説をスキップして操作方法を読む

山田 祥寛
2003/10/18
 
対象ソフトウェア
Access 2000
Access 2002
「パラメータ・クエリ」を利用すれば、例えば実行ごとに検索条件が異なる選択クエリを簡単に定義、実行することができる。
ただし任意の検索条件を設定したいという場合には、クエリのデザイン時に若干の工夫が必要となる。
 
解説

 データベースのクエリを実行する際に、動的にパラメータを指定することができるクエリのことを「パラメータ・クエリ」という。「パラメータ・クエリ」を利用することで、例えば実行ごとに検索条件が異なる選択クエリを実行する場合にも、クエリを再デザインする必要がなくなるので、便利である。

 しかし、検索条件などのパラメータは必ずしも指定するとは限らない。例えば、書籍テーブルを検索する場合に、「カテゴリ」と「価格」という2つの検索条件を設けたとしよう。もちろん「カテゴリ」と「価格」を両方とも「常に」指定するなら問題はない。以下のようなクエリを作成すればよいだけだ。

クエリの例
[カテゴリ]と[価格]という2つの条件を指定するクエリの例。
  クエリの条件指定。カテゴリと価格の両方を条件にしている。

 しかし、実際の検索の局面では「カテゴリ」だけで検索をしたいとか、「価格」だけで検索したいといったケースが少なくない。その場合に、片方しかパラメータを入力しなかったらどうなるだろうか。

 例えば「価格」のみを入力して、「カテゴリ」を入力しなかったら、データは1件も抽出されない。たとえ該当する「価格」帯が存在したとしても、である。ユーザーは「価格××円以上のものすべて」を抽出することを意図したのかもしれないが、上記のクエリでは「カテゴリ名がNULL、かつ価格が××円以上のもの」という意味になってしまうためである。

 そこで本稿では、いずれかのパラメータが指定されていない場合には、当該パラメータを検索条件から除外するための、ちょっとした工夫についてご紹介することにしたい。


操作方法

手順1―元となるテーブルを用意する

 テーブルの内容は特に問わないが、ここではサンプルとして解説でも紹介した書籍テーブルを扱ってみることにしよう。テーブルは、下表のようなレイアウトから構成されるものとする。テーブル名は「master」として保存する。

サンプル・データベース
書籍のタイトルやカテゴリ、価格などが登録されたデータベースを使用する。
  • サンプル・ファイルのダウンロード
    注:今回のサンプル・ファイルquery.mdbをダウンロードするには、上のリンクを右クリックして、query.mdbというファイル名で保存してください。以下のサンプル・クエリがbooksという名前で用意されています)

手順2―クエリを新規に作成する

 クエリ・デザインを開き、次の画面のようにデザインする。

作成したクエリ
さまざまな条件の検索に対応するため、4種類のクエリを定義する。
  定義されたクエリ。いずれか1つのパラメータが空でも検索できるように、4通りのパターンで検索している。

 クエリ・デザインは1行ごとにAND条件を表わし、行同士はOR条件で結合される。つまり、このクエリ・デザインは次のような意味を持つことになる。なお、[カテゴリ名]、[価格]はそれぞれクエリに渡されるパラメータ(検索条件)を表わす。

1.category =[カテゴリ名]かつ price >[価格]
 または
2.price >[価格]かつ[カテゴリ名]がNULL
 または
3.category =[カテゴリ名]かつ[価格]がNULL
 または
4.[カテゴリ名]がNULLかつ[価格]がNULL

 つまり、検索条件が2つとも指定された場合には1.を、検索条件がいずれか1つしか指定されなかった場合は2.または3.の条件を、検索条件が入力されなかった場合は4.の条件を調べるという形になるわけである。

 本稿では、検索条件が2つの場合で紹介しているが、これがもし3つ、4つと増えていった場合も、すべてのパターンについての組み合わせを同じように繰り返していけば、まったく同じことが実現可能である。すなわち、A、B、Cという3つの検索条件があるとしたら、以下の8通りを記述すればよい。

1.A、B、Cともに入力されている場合
2.A、Bだけが入力されている場合
3.A、Cだけが入力されている場合
4.B、Cだけが入力されている場合
5.Aだけが入力されている場合
6.Bだけが入力されている場合
7.Cだけが入力されている場合
8.A、B、Cいずれも入力されていない場合

 条件が増えると、それだけ指定が複雑になるのが少々やっかいであるが、検索条件をより柔軟に指定することができるテクニックなので、ぜひマスターしてほしい。End of Article

「Windows TIPS」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間