![]() |
||
<HOME <お願い事項 <Access2002 TOP <Access97 TOP <サイト内検索 | ![]() |
|
![]() |
||
MS-Access2000超入門部屋--アクションクエリ | ||
[アクションクエリとは] [追加クエリ] [テーブル作成クエリ] [更新クエリ] [削除クエリ] [マクロで自動実行 1 2 3 ] |
まずは、追加クエリなるモノのイメージをつかみましょう。
下の図を見てみてください。
基のテーブルがあります(緑)
追加先のテーブルがあります(黄色)
基のテーブルから、ある条件を満たしたレコードだけ取り出して(あるいは全件)、追加先のテーブル内の、指定されたフィールドに、データを追加していく、という趣旨のクエリーです。
まずは大まかにイメージつかんでください。
具体的な操作に入っちゃうと全体がつかみにくいと思いますんで・・・。
つまり、上の図でいくところの、ピンク色の四角で囲んだ部分、こいつをこれから作ろう、としているわけです。
で、そいつを「実行」すると・・・。
上の図のように、追加先のテーブル(紫)に、レコードが追加されます。
基のテーブル(緑)の方からレコードがなくなるわけではありません。
あくまでも、全く同じレコードを追加先のテーブルに追加していく、というイメージになります。
と、この辺を頭に入れていただいて・・・。
では、具体的に一度、追加クエリを作って実行してみましょう。
まずは・・・。
上の図でいくところの、緑色の方のテーブルを用意しましょう。
「追加分のテーブル」という名前にしてみました。
あ、みなさんテーブルの名前は何でもいいですよ。
でも、どっちがなんだかぜんぜんわかんない、ってのは、なしですからね。
なんて名前を付けたか、後でちゃんとわかるような名前にしておくとよいでしょう。
みなさん実感なさってると思いますけど、Access使うときのコツは「名前」をしっかり意識することです。
テーブルの名前、フィールド名、クエリーの名前、プロパティ名、テキストボックスの名前・・・みんな、名前でつながりを持ちます。
これがわけわかんなかったりおろそかだと、エラーが出てもどこを確認したらいいかわからないですもんね。
で、上のテーブルを基に、下のようなクエリを作りましょう。
普通のクエリです。
で、フィールドを全部選んで・・・。ココまでとりあえず作ってみてください。
まあ、別に特別なことはやらないんで、結果もちゃんと全部出ますよね。ためしに、データシートビューに切り替えてみてください。
・・・別に問題ないですよね。問題なさ過ぎてまだなんだかよくわからないとは思うんですけど・・・。
で、この選択クエリを、「追加クエリ」に変えます。
どうやって変えるか・・・ココが一番のポイントですね。
上の図のように、ツールボタンで切り替えるのです。
(メニューバーの[クエリ]でもオッケー)
すると「追加先のテーブルは、どれ?」といダイアログが出てまいります。
いろいろごちゃごちゃありますが・・・。
とにかく「練習のテーブル」を選びます。
え?なんでかって?
もーだから全体像をつかんでおいてくださいって言ったんですーっ。
ただでさえややっこしいんですから〜。
もう一度、一番上の図を見直してくださいね。
と、こうなりました。
少し変化が見られると思うんですけどどうでしょう。「レコードの追加」っていう欄が出てますよね。
注意して観察していただきたいんですけど、「レコードの追加」のところには、「練習のテーブル」の各フィールドが選ばれてるんです。
つまり、「追加分のテーブル」の「番号」フィールドの中の値を、「練習のテーブル」の「番号」フィールドに入れましょう、といってるんですね。
「練習のテーブル」と「追加分のテーブル」で、フィールド名をそろえておくと、こうやって自動的に結びついてくれます。
「練習のテーブル」で「番号」って名前にしているのに「追加分のテーブル」の方で「ID」とか「ナンバー」とかいうフィールド名にしちゃってると、自動的には結びついてくれません。そういうときは、上の図のように赤い丸印のトコをクリックして、フィールドの一覧の中から該当する追加先のフィールドを選びます。
まあ、このくらいならたいした手間でもありませんけど、おんなじデータベースの中くらい、フィールド名は揃えてテーブル作るようにしましょうよ。そういうことの積み重ねが、「リレーションシップ」であり「テーブルの正規化」となるのです。リレーションとか正規化を、ソフトウェアの機能と思ってはいけないですよ。
これで準備オッケーです。
アクションクエリの場合は、データシートビューへの切り替え(黄色いマル印)と、実行ボタン(緑のマル印)で動作が異なりますので、その辺のことお話しますね。
黄色のマル印の方は、アクションクエリの場合はほとんど使用しないと思ってください。正しい結果が得られるかどうかの確認用です。
実際に「練習のテーブル」へレコードを追加するのは、「実行ボタン」(緑色のマル印)をクリックしたときです。
で、このクエリ、後々繰り返しまた使うかも・・・という場合と、1回こっきり。もう使わないよ。という場合と考えられます。
後々繰り返し使う場合は、名前を付けて保存をしておきます(上の図でいうと赤いマル印のツールボタンをクリック)。
じゃあ・・・いちおう保存しましょうかね。練習ですから、とにかくひととおりやってみましょう。
わたしはQ_追加クエリって名前にしました。なんでもいいですよ。適当につけておいてください。
では改めて・・・ツールバーの「実行ボタン」をクリックします。
すると・・・。なにやら物々しいメッセージが出てきましたね。
確認メッセージです。エラーじゃないですよ。
追加するレコードが、「追加分のテーブル」側に3レコードあるわけですね。わたしのは3レコードあったんで、こんなメッセージが出ました。
「いいえ」をクリックすると何にもしません。
「はい」をクリックすると、処理を続行します。
・・・。でも、なんか何も起ってないような気がしますよね・・・。シーンとしてると思います。
じゃ、このクエリ、閉じましょう。
んでもって、「練習のテーブル」をデータシートビューで見てみましょうか。
レコード、追加されてます?
たまたま今回、一番下に追加されてますけど、これは別にいつも一番下に追加されるってわけじゃないんですよ。
テーブルって、データシートビューで開くと、だいたい主キー順に並んで出てきますよね。主キー順に見たら、たまたまこうなってたってことです。
追加クエリを使うとき、注意しなくちゃならないのは、追加先のテーブルにレコードを追加したとき、主キーがダブっちゃわないかってとこですね。
ダブったレコードはエラーになって、このテーブルの中には書き出されません。
「なんで主キーなんか作らなきゃならないの???」ってお話は・・・他のページでは何度かさせてもらったかもわからないですけど・・・それは、また別の機会にお話します。
とにかくこのテーブルの主キーは「番号」ですから、同じ番号が2度3度入力されることを拒みます。
こいつは確認ができればオッケー。閉じましょうか。
さて、どんな性質を持つクエリか、つかんでいただけましたか???
さっき、名前を付けて保存しましたよね。クエリ。んじゃ、もう一回使ってみます???
同じレコードをもう一回書き出すことはできないので(主キーがダブルからね)、無理やり内容を書き換えちゃいますかね。
「追加分のテーブル」の方、もう一回開いて、中身を全然別のデータに書き換えちゃってください。
書き換え終わったら、テーブル閉じて・・・。
クエリの一覧を見てください。
追加クエリって、アイコンの形がちょっと違うでしょう。プラスの記号みたいなアイコンになってますよね。
さっき作ったQ_追加クエリ、ダブルクリックしてみてください。
あるいは、左上の「開く」をクリックしてもオッケー。
これが、「クエリを実行する」という操作になり、選択クエリの場合はデータシートビューが開き、アクションクエリの場合は・・・実行されます。
と、こんなメッセージがまず出てきます。
「はい」の方をクリックしましょう。
そうすると、次にこのメッセージが出ます。
クエリのデザイン画面が出てる状態で実行するのと、閉じてるクエリを実行するのとでは、一つ前のメッセージが出る出ないの違いがあるようですね。
んでは、追加先の「練習のテーブル」を開いて確認してみましょう。
追加、されてますか???
追加もとのレコードが入ってるテーブルの方も・・・。
こちらは全然変化ないですよね。
追加したらからって、ココからレコードがなくなっちゃうわけじゃないのです。
じゃ、このテーブルも、「練習のテーブル」も閉じて・・・
で、もし・・・。このまま再び「Q_追加クエリ」をダブルクリックしたりして実行したとしたら・・・。
下のようなメッセージが出てくると思います。
以前、主キーのお話しましたよね。
今の動作は、「追加分のテーブル」の中のレコードを、もう一回「練習のテーブル」に追加しようとしてるわけですよね。
ってことは当然、A000021とA000022とC000001とC000002とC000003は、ダブります。
「番号」は主キーですから、A000021をもう一回書き込むことはできないよ、という状態なのです。
こんな話ばっかりしていると「主キーってめんどう、意味ないじゃん」って言い出す人がいそうな気がして気が進まないんですけど・・・主キーは主キーで、別の問題ですんで、ここでは「追加クエリを正しく動かすための知識のひとつ」と考えてくださいね。
![]() |
![]() |
![]() |