<HOME  <お願い事項   <Access2002 TOP   <Access2000 TOP   <サイト内検索
 MS-Access97超入門>基本をマスターしよう
 DBTable1Table2Fom1Form2Form3Query1Query2Query3Query4Query5Query6Report1Report2Report3Macro



■Query2 :並べ替え、選び出し

まずはクエリーの基本から。必要なフィールドだけを選び出す方法はよいですよね。
次に、並べ替えをするには??
例えば、[かせぎ]が多い順に並びかえるには・・・(ひどい言い方ではありますが)

カンタン。

グリッド上に「並べ替え」という欄があって、昇順(小さいもん順)か降順(大きいもん順)に並べ替えられるようになってます。

並び順、変ると思うんですけど、いかがでしょう?データシートビューに切り替えて試してみましょう。


(こっちは[氏名]を昇順にしてみました↑)

アルファベットならAが一番小さくてZが一番大きいと判断され、ひらがな、カタカナなら"あ"が一番小さいと判断されます。
漢字の場合は。。。必ずしも読み方は1パターンとは限らないので、多分思ったように並び変らないと思います。
読みがなのフィールドを作っておくとよいですね。アイウエオ順に並び替えたいときは・・・。

並べ替えの指定は32個までできます。
今は2つしかフィールド選んでないし、基のテーブルにも5つしかフィールドないんで、ぜんぜんありがたくないですけど・・・。
まあとにかくたくさん指定できるってことですね。
上の例で、[氏名]にも[かせぎ]にも昇順の指定をしたとすると。。。。。
まず[氏名]で並び替えをして、同姓同名の人が二人三人いたら、その人たちの中で[かせぎ]の少ない人が一番上に来る、というイメージになりますね。

一番左側に選んだフィールドの「並べ替え」が最優先されるというわけです。

じゃあ、せっかく作ったんで、このクエリーに名前付けて保存しましょうか。
デザインビューの状態でも、データシートビューの状態でも、保存することはできます。
保存の仕方は・・・フォームやテーブルと同じです。
ウィンドウを閉じるときに「保存しないの?」とメッセージ出してくれます。
また、画面左上の方の、フロッピーディスクの絵のツールボタンをクリックしても、作りかけのオブジェクトを保存することができます。

名前はー・・・えー・・・じゃあ、[練習クエリー1]とでもしましょうか。
え?だんだん適当になってきてる?え。。わかりますか・・・。


デザイングリッドの使い方、見方、だいたいイメージつかめました?
横にフィールドを並べ、そのフィールドに対してどういう条件を与えたいのか、いろいろ指定をするための欄が設けられてるというわけですね。
で、このクエリーを開くと、まるでこういうテーブルが基からあったみたいな動きをしてくれるわけです。

テーブルの中には、データは入力順にぶちこまれます。
主キーが設定されていれば、主キーのフィールドの中の値に基づいて、昇順にレコードが整列します。
テーブルとは本来、データを格納するためだけのオブジェクトなので、テーブルが担う仕事はそこまでなんです。

で、じゃあ、「会員一覧表フォームを作りたいんだけど、学籍番号順じゃなくて、名前の順に並んでた方が見やすいな」とか・・・・。
そういうとき、[名簿テーブル]を基にした[練習クエリー1]をフォームのレコードソースにすればよいのです。
アイウエオ順とか、あるいはかせぎの多い順に並び変ってフォームにデータが表示されることになるわけですね。

だいたい、そのフォームに見合ったクエリーを作って、それを基にフォームを作ることが多いみたいですね。


これで、クエリーの基本要素であるところの[フィールドの選び出し][レコードの並べ替え]のふたつの方法をご紹介しました。
テーブルとクエリーがどういう風に結びついてくるのか、この辺を意識しながら作っていくとよいと思います。

ではでは、3つめの基本要素、[レコードの抽出]についてお話します。

例えば、さっきの[練習クエリー1]で、「かせぎが400万円以上の人だけ表示」という条件をさらに付け加えてみましょう。えげつないクエリーになりますけど・・・。
[練習クエリー1]をデザイン画面で開きましょう。これはテーブルやフォームのときと同じ操作方法です。

で、こんな風に書き足します。と、結果は。。。

と、こんな感じですね。かせぎが400万円以上の人だけのリストになりますよね。・・・
まあ、実際この人たちはもうちょっと稼いでたと思いますけど・・・。

いろいろ事情があって、デビッドさんの稼ぎが、5000円になってしまったとします。
デビッドさんの稼ぎを書き換えましょう。え、どうやってって、直接"5000"って入力してください。

そうそう。
左の方を見ると、エンピツマークが出てますよね。なんか、テーブルいじってるのと同じみたいですねぇ。

さて、どうかな・・・でも、何も変らないみたいですけど・・・。

んじゃ、いったんこのクエリー、閉じましょうか。
閉じるとき、「保存します?」って聞いてくると思うんで[はい]の方のボタンをクリックして、保存しながら閉じましょう。

で、改めてクエリーを開いてみましょう。
今度はデザインじゃなくて、直接[開く]ボタンでデータシートビューを開きます。すると・・・。

ふむ・・・。デビッドさん、「400万円以上(正確には400万円を超える稼ぎっぷりの人か)」のリストから外れました。
ちゃんとクエリーの抽出条件、働いてますよね。
でも、表示がリアルタイムに変るとまでは参りません。
いちおう、そのクエリーを開いたときのレコードの状態を見て、条件を満たしたレコードだけ出してるみたいです。
[かせぎ]の抽出条件">4000000"の額面を変更してみたりしながら、いろいろ試してみてください。

値を書き換えたり、新しく追加したりできますから、扱いはテーブルとまったく同じといってしまってもよさそうです。

あっ、でも、今日はこのクエリーからは、新しいレコードの追加はしないでくださいね。
かせぎのすうちを書き換えるのはオッケーですけど、一番下のウニの行には、何も入力しないで下さい。

なぜかは・・・。[名簿テーブル]の主キーは[学籍番号]であって、このクエリーには[学籍番号]を入力する欄がないので・・・。
主キーは空っぽってわけにいかないんですよね。[学籍番号]も入力できるなら、追加できますけど・・・。

では、この[練習クエリー1]、閉じましょうか。


で、このクエリーを基に、フォーム作ってみます?表形式のフォームがいいかな。
フォームを新規に作成し、オートフォーム(表形式)で、[練習クエリー1]を基にしてみてください。
と、これだけの情報で、どういう操作をすればいいか、イメージが浮かぶようになると、だいぶ気分的に楽じゃないですか?
こういうのは覚えるっていうより、慣れですよね。

できました?
なんか気の利いた名前付けて保存してくださいね。せっかく作ったんだし。

せっかく作ったんだから、フォームのプロパティでお役に立ちそうなのをひとつふたつ、ついでにお話しましょうか。
今はクエリーの勉強中ですけど、クエリーばっかしじゃ飽きちゃいますよね(あたしだけかな)。

表形式のフォーム作ると、大概、一番下の行が白い空白行になってないです?
ここは、ウニのマークがついてますから(ウニじゃないとは思うんですが)、新規レコード追加入力行ですよね。

このフォームは[練習クエリー1]を基にしてます。で、そのクエリーが基にしてるのが[名簿テーブル]です。
だから、ここに何か入力すると、とどのつまり[名簿テーブル]に1件レコードが入力されるってことになるんですね。

でも、このフォーム、当然のことながら[氏名]と[かせぎ]の2フィールドしかないし、[学籍番号]とか、他のフィールド、表示するようにしてないじゃないですか。
さっきもちょっとふれましたけど、基にしてるクエリーがそうですもんね。

このフォームから、不用意に新規入力されちゃうと、なんかまずいんじゃないですかねぇ。
いや、別にかまわないのならこのままでいいんですけど・・・。
いろいろ処理を作っていくと、表示だけさせたくて、入力とか変更とかされちゃうとやだなぁというフォーム、出てくると思うんですよね。

便利にできてて、こういう微調整、フォームのプロパティでできちゃうんですね。久しぶりに「フォームのプロパティ」見てみましょうか。

データのプロパティのところを見ると、[更新の許可][削除の許可][追加の許可]という3つのプロパティがあります。
[追加の許可]を=いいえにすると、このフォームから新規レコードの入力ができなくなります。

ついでに、書式のプロパティのところを見ていただくと、「レコードセレクタ」を表示するか非表示にするか、というプロパティがあります。
レコードセレクタとは、フォームの左端に出てるわずかなスペースのことなんですが、ここをクリックすると、1レコード選択したことになるんですね。

そのまま[delete]キーを押すと、そのレコードを削除することになります。
削除できちゃうんですよね。
まあ、このスペースに気づく人は少ないので、操作が混乱することはないと思いますが・・・。
それに、ここ操作すればレコードの削除ができるんで、残しておいてもよいかも・・・。
でも、もし、非表示にしたいのなら、下の「レコードセレクタ」プロパティを=いいえにします。


で、フォームニューに切り替えてみると・・・??

さっきの表示との違い、お分かりになりますか?
このプロパティも、きっといつか役に立つと思いますよ。
とりあえずこんなこともフォームのプロパティで調節すると言うことで・・・。

では、保存しながらこのフォーム、閉じましょうか。

余談ですが、テーブル自体に「書き込みできないようにする」とか「内容の変更ができないようにロックする」という考え方はいっさいありません。
なので、例えば「不用意な変更や改ざんがされないようにしたい」などというときは、こういう風にしっかりとしたフォームを作る必要があるんです。
フォームを通じてテーブルの内容を表示するように作るわけですね。


さて、クエリーに話を戻しまして・・・。

クエリーはいろいろな可能性を持ってます。
焦らず、とりあえずデザインビューの使い方と、データシートビューへの切り替えをしながら作っていくプロセスに慣れてしまいましょう。