<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



■クエリーを作る 6■

組名、いろいろ変えてみて、どんな風になるか動かしてみてくださいね。

さて、クエリーとはちょっとだけ外れちゃいますけど・・・。ここまで来ると、もう一工夫したいと思いません?
といっても、あんまり最初から欲張っちゃいけないんで、あとひとつふたつご紹介するくらいにしようと思ってはいるんですけど・・・。
このフォーム使ってみて、なんか思いつくことありませんか?

なんもないなんてこと、ないですよね???
「もっと楽できないか?」という発想を持つことが大切なんですよ。
できるできないは二の次にして、発想を持つことが大切です。

わたし、ふたつ思いついたんですけど・・・。

★「組名」を入れてないときは、全部のデータを表示させたい。

★「組名」を、入力するのではなくて一覧から選ぶようにしたい。

どうでしょう。ちょっと難易度は高いかもしれないんですが、ゆっくりやりますから挑戦してみてください。


どっちから挑戦しようかな・・・。
「組名の一覧選択」からいきましょうか。

フォーム内のスペースがあまり広くないので、「コンボボックス」というやつを使ってみようと思います。

コンボボックスの細かいことについては、またあとで解説していく予定なんで、ここではとりあえず「ぱっと開いたら今現在存在している組の名前が一覧で出てくる」っていうコンボを作ります。目標だけ頭に入れていただいて、後は真似っこしてみてください。目標だけ見失わずにいてくだされば、操作自体はそんな難しいこっちゃないっす。

そんではいきましょうか。フォームのデザインを変更します。

フォームのデザイン画面で、テキストボックスを右クリックしてみてください。なんか、メニューが出てくると思うんですけど・・・。
「コントロールの種類の変更」を選んでみてください。ふつうに左クリックです。「コンボボックス」っていうのがありますよね。こいつを選びます。

コンボボックスに変わりました?ちょっと大きさが変わるかもしれないんで、適当な大きさに調節してください。

形は整いましたけど、これじゃ何にもなんないんですよ。これからです。
コンボボックスというのは、基本的にはテキストボックスと同じなんです。中に文字や数値を入力するための枠です。
ただひとつ工夫されてるのが、入力するんじゃなくて、一覧から選べるようになってるんです。その「一覧」を作んないといけないですよね。

組名の一覧ですね。

コンボボックスの中に表示される値の一覧は、コンボのプロパティの中で設定します。

このコンボボックスの(名前は「組名」のままだと思います。いちおう確認してくださいね。なぜって、ここが変わっちゃったらクエリーの抽出条件と合わなくなっちゃうじゃないですか。しっかりしてくださいよう)データプロパティの中の「値集合タイプ」と「値集合ソース」という欄が、もっかの最重要ポイントになります。

値集合タイプ:どういうやつにするか(なんじゃその適当な解説は)

値集合ソース:で、中身はどれか

ということに(どういうこと?)なります。
とにかくやってみましょう。うちの会社の部署は「さくら組」「すみれ組」「ゆり組」の3クラスです。
みなさんの社員テーブルの中身はどんなになってます??

とりあえず難しいことは抜きにして、この3つがぺろっと出てきてくれればいいや、というなら、

値集合タイプ:値リスト

値集合ソース:さくら組;すみれ組;ゆり組

とします。値集合ソースは、直接上のように入力します。
え?どういう意味かって?

直接、 さくら組 半角のセミコロン すみれ組 半角のセミコロン ゆり組 って入力すんですよ。

半角のセミコロンで区切って、表示したい値を次々入力するんです。半角のセミコロンですよ。全角じゃないですよ。

できました???
こんな感じです。なんかワケがわからないかもしれませんが・・・。ここまでできたら、とりあえず動かしてみましょうね。
保存して、フォームビューに切り替えてください。

どうでしょう。一覧、出てきます?
んでもって、どれか組を選ぶと、選んだ結果が下に出てきますか?

実際にはね、直接「さくら組」って入力しているのと同じなんです。
コンボボックスの中から何か選んだっていう動作が「コンボボックスの更新後処理」につながりますので、Requeryされて、コンボの中身と同じ所属を持つレコードだけに絞り込まれて表示されるんです。
仕組みはテキストボックスのときと全く同じなんですよ。だから、「出てこない」って場合は、上の「値集合ソース」の中の入力が変なんです。さくら組;すみれ組;ゆり組ってとこが。どっか違ってません?相手はコンピュータですからね。正しく指示してやらないと働かないですよ。

コンボボックスから選んだ方が、入力間違いとかなくてすみそうですよね。なんかそれっぽくてかっこいいし。


でも、もし、新しいクラスが増えたら、どうすればいいんでしょう。組名が変わったりしたら・・・。
そりゃ、「値集合ソース」のとこを書き換えてやればいいんですよ。ねえ。

うえーめんどっちい。なんか自動的に最新の組名一覧が出るようにできないの???・・・って発想を持つことができたら、もう相当なAccess使いと言えましょう。できるかできないかは別にして、ですよ。

やってみましょうか。ちょっとややっこしいお話になりますけど、できないことはないですよ。
コンボボックスの仕組みについては、後でしっかりやる予定ですから、ここではとにかくゆっくり、同じようにまねっこしてみてくださいね。

もっかいフォームのデザイン画面を開いて、コンボボックスのプロパティを見ます。
さっきいじった「値集合タイプ」を変更するのです。

値集合タイプ:値リスト → テーブル/クエリー

値集合ソース:ここクリックすると、テーブルとクエリーの一覧が出るんですけど・・・出してください。

値集合ソースに「社員テーブル」を選んでください。

そうすると・・・一番右端に[...]っていうボタン、出てきますよね。
これ、クリックしてください。

と、なんかメッセージが出るんですけど・・・。「はい」のボタンをクリックします。

なんか、クエリーデザインみたいな画面が出てきましたよね。実はそうなんですよ。
このコンボボックスの中に表示する値を、社員テーブルの中からうまいこと作っちゃおうという算段です。
そうすれば、新しい組名が誕生しても、常に最新の情報を表示することができますよね。
とりあえず今、このテーブルしか頼りになる情報源がないから・・・・。

まずは、「所属」フィールドをグリッド上に選びます。
選び方は・・・だいじょうぶですよね???選ぶのは「所属」だけでオッケーですよ。

でもって、ちょっと様子見てみましょうか。
画面左上の・・・データシートビューへの切り替えボタン、クリックしてください。
データシートビューへの切り替えのボタンも、すぐ見つかりますですよね。一番左上にありますから。
あ、このクエリー、この画面の状態で保存はしないでくださいね。あくまでもコンボボックスの中身を作るための補助画面なので・・・。

・・・。でも、これじゃ・・・。
一体何がいけないのか、ぱっと思いついた方は相当なAccess使いですね。

そう。37人分の所属がそのままでてるだけだから、ダブってんですね。
それはこのテーブルを基にしてるからしょうがない。なんとか、ダブらないようにできないもんか・・・。

と、いうわけで再びデザイン画面に戻ります。
青い三角定規ですよ。デザイン画面に戻るのは。

クエリのウィンドウの中の、薄いねずみ色のとこをどっかダブルクリックすると、クエリーのプロパティシートが出てきます。
これ出てこないと話にならないんで、がんばって出してください。大丈夫。がんばれば出てきます。

中の「固有の値」というプロパティを「はい」にすると、ダブらないように値を集約(?)して出してくれますよ。

これ、もちろん普通のクエリーにも使うことができます。後でまた機会がありましたら解説しますね。
とりあえず再びデータシートビューにしてみてください。

どうです?今度は、ダブってないでしょ?
これでオッケー。このまま、クエリーのウィンドウを閉じます。
そうすると、「SQLステートメントの変更を保存し、プロパティの設定を更新しますか?」っていうメッセージが出ます。「はい」のボタンをクリックして、変更します。

さて、フォームを保存し、フォームビューに切り替えてみてください。
あたりまえですが、さっきと同じですよね。でも、もし、38人目の社員が「たんぽぽ組」だったとしたら、ここに4つ目の「たんぽぽ組」が自動的に追加されます。
もし、「さくら組」が「きつね組」に変名されたとしたら、ちゃんとここに「きつね組」って出ます。

値集合タイプが「値リスト」のときとどう違うのか、じっくり見比べてみてくださいね。