<HOME  <お願い事項   <Access2002 TOP   <Access97 TOP   <サイト内検索
 MS-Access2000超入門部屋--基本操作を考える
データベース テーブル フォーム クエリー レポート マクロ&仕上げ
1 1 2 3 4 1 2 3 4 5 6 7 B 1 2 3 4 5 6  8 1 2 3 4 5 1 2 3 4 S



■クエリーを作る 4■

このクエリーというオブジェクトをうまく使いこなしてこそ、真のAccess使いと言えると思いますよ。
とにかく少しずつ慣れていってくださいね。

さて、おさらいしてみてください。クエリーの基本パターンはとりあえず3つ。

・フィールドの選び出し

・レコードの抽出

・並べ替え

別にこんなでかい文字で出さなくたっていいんですけど・・・まあ、それくらい基本の基本、重要ってことなんですよ。
これをうまく指定するために、クエリーのデザイン画面が用意されているわけです。

テーブルから値を抽出するっていうだけで、扱いはテーブルと全く同じと考えていただいてよいです。例えばですね・・・。

3つほどクエリー作りましたけど、これもとにしてなんかフォーム作ってみましょうか。
じゃあ、最後に作った「並べ替え」のやつ、あれ使ってみましょう。わたしは「Q並べ替え」って名前にしましたけど、みなさんはどんな名前にしました?

練習なんで適当でいいんですけども・・・。
オートフォーム表形式機能を使ってみましょうか。

いちおう、テーブル名クエリー名、一覧から選べるようになってると思うんですけど、こういうとき、クエリーとテーブルの区別つけられるように「Q」って付けといてよかったと、思いません???

ほんとね、名前って、わけわかんなくなっちゃいますけど、Accessはすべて「名前」で結びつきますからね。大切なんです。名前って。

と、なんか適当なフォームが出来上がってきますよね。
お任せしますんで、もちっと見やすいフォームに作り変えてやってください。

テーブルを直接使ってフォームを作ると、テーブルの中のレコードフィールドが全部表示対象になりますけど、こうやってあらかじめクエリーを作っておけば、そのフォームの中で必要となるレコードだけ、フィールドだけを必要な並び順で表示させることができますよね。

ケースバイケースだと思いますけど、だいたいは、そのフォームに合ったクエリーを作って、そいつをフォームのレコードソースとして使いますね。
あ、画面の下のほう、ちょっと見てみてください。一番下のとこ。

一番右端のウニみたいなボタン、クリックできる状態になってますよね。
こういうフォームなら、ここからデータの更新/新規追加ができるってことなんです。
このフォームが基にしているのはクエリーですけど、そのクエリーを通じて、ちゃんと大元のテーブルに値が届くわけです。
それもその場で、リアルタイムに、即座に。うっかり間違って入力しちゃったとしても、それはちゃんと更新されちゃいます。

でもね・・・クエリーの作り方、構造によっては、「このクエリーを通じてテーブルに値が入ってきたら、わけわかんなくなるかも」ってAccessが判断しちゃう場合もあるんです。
そういうときは、このウニみたいなボタンが押せない状態になってるんですね。

このフォームは、とりあえず「更新追加」をすることができそうですね。なんか新規に入力したりしてみてください。
ああ、でも、「社員番号」はダブっちゃダメですよ。え?なんでかって???主キーだからですよう。

で、入力したレコードは速攻反映されます。
でもたまに・・・「あっ!0037なんて人、いなかったんだっけ???」って、うっかり入力もありますよね。
このままどっか他のレコードとかにカーソル移動させたりフォーム閉じたりすると、0037のゆうれいレコードが残っちゃうんですけど、新規入力の状態で、左端にエンピツマークがある状態だったら、キーボードのEscキーを押せば、このレコードの入力は「なかったこと」にしてくれます。

この辺の動きも、いろいろいじくって理解を深めていってください。やっぱしいろいろコツや慣れが必要かと思います。

で・・・やっぱし、すぐには並び変わらないですよね。なんでかな。
そう、このクエリー作ったときちょっと触れましたけど、基本的に開いたときの状態を保持するもんなんです。
したがって、このフォームを開いたままで新しく入力したレコードも含めた並べ替えをしようとすると・・・「再クエリー」っていう動きが必要になるんですけど・・・。
まだそんなことお話してませんから、とりあえず一回このフォーム閉じて、もう一回開いてみましょう。
なんか適当な名前付けて保存して閉じてください。

んで、もっかいこのフォーム、開いてみましょう。データベースウィンドウからダブルクリックすればフォームビューの状態で開きますよね。

そうすれば、並びかわって出てくると思います。


でもね、こういうふうに、クエリーからなんか入力するときって、いろいろ考えておかなくちゃならないことがあるんです。
だってこのクエリー、今、3つしかフィールドがないですよね。
ってことは、「所属」と「くさや」の入力がない状態のレコードができちゃうってことになるんです。
クエリーいったん閉じて、テーブルの方を開いてみてください。
「社員テーブル」。今入力したレコード、多分あると思うんですけど・・・当然、「所属」と「くさや」はからっぽですよね。

こういう「入力もれ」が起こらないよう、テーブル・フォーム・クエリーのつながり、しっかり把握して仕組みを作っていかないとならないです。


んじゃ、このフォーム、もう一工夫してみましょうか。

例えば・・・「売上のトップ10を表示するフォーム」ってのはどうでしょう。なんか使えそうじゃないですか??
クエリーの「抽出条件」のとこ、ちょっと思い出してみてください。
「100万円以上」っていう考え方はありましたけど、「上から10件だけ表示」って、そんなのなかったですよね・・・。

でもね、できないことはないんです。いちおう、そういう機能が用意されてるんで、活用してみましょう。
このフォームいったん閉じて、このフォームが基にしているクエリー、デザイン画面で開いてください。

で、下の図のように、ツールバーの中に「トップ値」と呼ばれる設定ができるとこがあるんで、そこいじります。

んー・・・「10」って、ないですね。「5」とか「25」はあるのに・・・じゃ、直接半角の数字で「10」って入力しちゃいましょうか。

んで、データシートビューに切り替えてみてください。

上から10件だけの表示になりました?
じゃ、このクエリー、上書き保存して閉じまして・・・。

さっきのフォーム、も一度開いてみますと・・・。

トップ10人だけの表示のフォームになりましたよね。
さっきとの違い、わかりますか??
また、「100万円以上のひとだけの表示」っていう抽出条件のクエリーとの違いも、
おわかりいただけます?

これね、データベースの世界じゃ、結構高度な技なんですよ。
「上から10件」っていうの。だから、貴重な機能なんですよ。


ここまできたら、このフォームから「新規入力」とか「値の更新」とかできなくてもいいかな、って感じになりません?
まあ、「見るだけ」のフォームっていうか・・・うっかり売上金額書き換えちゃった、なんてことになっちゃうかもしれないし・・・。

そういう場合は、ちょこっとフォームのプロパティをいじるとよいでしょう。
データのプロパティの中に「追加の許可」「更新の許可」といったプロパティがあります。これを「いいえ」にしておくと、このフォームから新規入力・値の更新ができなくなるのです。

もーそのテキストボックスにカーソルが入るのもうっとおしーという場合は、テキストボックスのデータプロパティに「編集ロック」「使用可能」っていうプロパティがあるので、これを調節してみてください。

と、わたしはこんなフォームにしてみました。

ん?
左端に「1位、2位・・・」って、順位をつけたい?

・・・それってちょっと難易度高いんですよ・・・。
あとでやりましょう。とりあえず、すごく難しいことだって認識しといてください。

元のテーブルにまったく存在していない値を出そうとするのは、すごく難しいことなんです。
それに、売上金額が変われば順位も変わるでしょう?
できないことはありませんけど・・・すごく難しいことなんですよ。