Microsoft Access Club >初心者講座 >アンケート管理ソフト >このページ >次頁 - 前項  サイト内検索


Accessのクエリ作成 : アンケート管理ソフト



入力フォームを作成する前に、ちょっと「クエリ」のお勉強をしましょうか。

Accessを始めた方々が最初に理解しにくいのが、このクエリですね。それもその筈で、このような考え方は、表計算や文章作成ソフトにはありません。極論すれば、日常生活には無いんですね。だから、戸惑うのは当然でしょう。しかし、理解するまでの時間が短いのも、このクエリの特色です。そう構えずに、進みましょう。

クエリは一般的に、テーブル同士で作成しますが、テーブルとクエリやクエリ同士でも作成が可能です。また、クエリには、次のように大別して2種類の役割があります。

  • リレーション済みのテーブル(クエリを含む)同士をクエリを使ってデータ表示させるのを主とするもの(リストボックス等にデータを引き渡す場合を含む)。
  • クエリを利用してテーブルデータに変更等を加えるのを主とするもの。

アクセスファイルで使用される比率は、@が90%以上となるのも珍しくありません。が、重要頻度はほぼ半分半分でしょうね。まず、@のクエリについてお話しましょうか。@のクエリの代表は、選択クエリです。

 選択クエリについて

一例として、下記の「在庫−T」と「品目−T」を見て下さい。

品目コードと品目IDを キィー としてリレーションが設定されています。「在庫−T」テープルが側、「品目−T」テーブルが1側になっていますね。これをあたかも1つのテーブルのように操作出来るのが クエリの効用 なんです。

前回のリレーションの話の時に、リレーションのデメリットとして クエリの作成や知識の取得が必要となる と言いました。

そうなんです、このようにクエリを用いないと何がなんだか分からなくなってしまうからです。「在庫−T」テーブルだけを見ても、品目コードが数値で並んでいて一瞥しただけでは判別が困難です。

下記のクエリを実行しますと、品目コードと並んで品目名が表示されます。そのレイアウトはまさしく テーブル です。

作成の実務は、Access付属のクエリ作成のウィザードに任せても問題ありません。初心者の方は大幅に時間短縮が出来るでしょう。

また、クエリの特色として、上記の構成を下記のように変更しても正常に作動します。リレーションを結んでいるテーブル間では、双方のキィーが含まれていなくてもクエリでデータ表示が可能です。

テーブルが1つであっても、そのテーブルと同じ、もしくは少ない項目のクエリが作成できます。

そして、リレーションを結んでいない複数のテーブルに対しては、このクエリ内だけで一時的にリレーションを結び、クエリを作成することも出来ます。

最後に、テーブルと作成済みのクエリとを一時的にリレーションで結合し、新規にクエリ作成を行うことも可能です。クエリのクエリですね。

このようにデータを表示する代表的なクエリは選択クエリですが、「クロス集計クエリ」も使用する頻度が高いクエリです。これについては、CDアルバム管理ソフト11クエリの作成と解説_2 をご覧下さい。

 追加クエリについて

追加クエリの作成方法は、まず基本的なクエリ(選択クエリ)を作成して下さい。次に、下記の図のように「追加」をクリックします。

追加のダイアログが現われますので、 どのテーブルにデータを追加するのか を設定して下さい。

するとクエリのフィールド等が下記のように変わりますでしょ。これは、クエリをデザインビューで開いた時、表示されるものですね。

このクエリは、「tbl_temp」テーブルにあるデータを「tbl_question」テーブルに書き込んでいきます。

「tbl_temp」テーブルと「tbl_question」テーブルは、フィールド構成が同じであることもあって、自動的にレコードの追加"にフィールドが表示されましたね。ただ、必ず確認するようにして下さい。また、変更する箇所があれば手動で行えます。

上記の図を見て下さい。

「tbl_temp」テーブルの中で IDだけが上図のフィールドに入っていませんね。「tbl_temp」テーブルのIDはオートナンバー型フィールドで あるからです。その理由は以下に述べます。

「tbl_temp」テーブルは「tbl_question」テーブルへデータを追加すると同時に、役目が終わり 削除クエリ で該当データを削除します。

 オートナンバーフィールドが不要なわけ

すると「tbl_temp」テーブルにデータが何もない時が必ず発生します。そして、その状況の時に、このソフトに"最適化処理"を行えば、IDの開始ナンバーは 1 に戻ってしまいます。

よって、このIDデータを保存する意味がありません。このような事由でデータ追加を行わない構成をしています。#オートナンバー型は、ランダム数値を発生させることが出来ますが、今回のソフトの目的から外れますので、考慮していません。

クエリの「ID」フィールドに抽出条件([forms]![frm_質問]![ID])を設定しています。このように、データを追加する時などは、「このような条件下で行え」と指示をする場合があります。
システム作りが高度になればなるほど必要な操作方法です。また、このフィールドを配置した目的は、抽出条件の設定を行うためです。

今回の場合で云いますと、

  1. お客が画面上に記述している質問に対し、マウス操作で回答していきます。
  2. 画面構成は、一画面だけです。次画面に移る等の操作は、パソコン不慣れな方々を考えると避けなければなりません。
  3. つまり、テーブルのデータは必ず1レコードに収まるようにします。
  4. よって、抽出条件 [forms]![frm_質問]![ID] の意味するところは、"お客が答えた画面にあるデータ(オートナンバー番号) のみを"と云うことです。

追加クエリを実行するとデータが追加されていきます。

 追加クエリの注意点

但し、実行する回数だけデータがドンドン追加されていきます。よって、一度だけデータを追加する場合は、安全面を考えて 追加クエリを実行後、元データを削除するのが一般的です。

  • これ以外にテーブルにチェックボックスのフィールドを設けて、TrueとFalseの切り替えで制御する方法もありますが、今回は言及しません。

 削除クエリについて

削除クエリについても、先の追加クエリの作成と考え方は同じです。下記のことを十分考慮して下さいね。

  • どのデータを削除するのか。
  • また、どのような条件を付与するのか。

今回の削除データは、「tbl_temp」テーブルのレコードです。

  1. tbl_temp.* とフィールドに記述していますね。
  2. これは、「tbl_temp」テーブルにある全レコードデータを意味します。
  3. 条件(抽出条件)としては、追加クエリと同様に [forms]![frm_質問]![ID] とします。
  4. 最後に、選択クエリを作成して、ツールバーから「削除」を選択します。
  5. すると下記のようなクエリに変化しますね。

 From と Where

From や Where が見えますか。

Fromは削除されるデータフィールドを、Whereは条件式を意味します。後はこのクエリを実行すれば、跡形も無く消え去る仕組みです。削除クエリについては、CDアルバム管理ソフト10クエリの作成と解説_1 もご覧下さい。

 

どうですか、ちょっと難しかったですか? 繰り返し練習すれば、すく理解できますよ。では、今日はこの辺で‥。
 

ページの先頭へ 前ページへ戻る


Accessのクエリ作成 : アンケート管理ソフト


 

-Microsoft Access Club-