<HOME  <お願い事項  <Access2002 TOP   <Access97 TOP   <サイト内検索
 MS-Access2000超入門部屋--コンボボックス/リストボックスを極める
  1 > 2 > 3 > 4



また、「値集合ソース」のテーブルやクエリーを基にして、このコンボボックスオリジナルのデータ群を捕まえてくることもできるんですよ。

たとえば・・・全商品の一覧を出すんじゃなくて、もう「値段が100000000 円以上の商品しかココでは扱わないから」っていう場合など、わざわざそういうクエリーを作って用意しておかなくても何とかなりますから便利だと思いますよ。
まあ、「値段が 100000000円以上の商品のみ抽出するクエリー」をあらかじめ作っておいて、そのクエリーを「値集合ソース」に使ってもいいんですけどね。
こういう方法もあるってことで・・・。 ちょっと見てみましょう。



「値集合ソース」のところをクリックすると、右端にボタンが出てきますよね。一番右側の、ビルドボタンをクリックしましょう。
黄色い丸印したボタンです。
この「値集合ソース」欄に、いわゆる SQL文っていうのを入力しなくちゃならないんですよ。



SQLってのは、テーブルからデータを取り出してきたりするときに使う、データベース用の言語なんですけど、これを使って、「値段が 100000000 円以上の商品のみ抽出する」っていう条件式を作るんです。

でも、いきなりそんなこといわれたった困っちゃいますよね。
SQL慣れてる方は直接入力していただいてもいいんですけど、なかなか面倒だし、難しいし・・・。
というわけで、 SQL文を作るためのお助け機能を呼び出して使おうというわけなんですよ。 それが上の、ビルドボタンをクリックする操作です。これによって「クエリビルダ」というお助け機能を使うことができるんですね。

メッセージが出てきます。 「はい」の方をクリックしてください。

と、なんか、クエリーを作るときみたいな画面が出てきますよね。

え?クエリーなんて作ったことないので使い方がわからない???あれま。それはいけませんぞ。
クエリを使う使わないは別にして、作り方は押さえておいたほうがよいでしょう。作り方、見直しておいてくださいな。

「値段が100000000円以上の商品のみ抽出する」っていうクエリですよね。
こんな感じになりますね。

>=100000000(大きいか、等しいか)



で、ココがポイントです。
ふつうのクエリを作るときなら、これで名前を付けて保存するんですけど、今はあくまでも「 SQL 文を作るためのお助け機能」として、このビルダ画面を使ってます。

だから、保存せずいきなり閉じます!



と、ものものしいメッセージが出ますね。

今やってる作業は「値集合ソース」プロパティの書き換えですよね。
ビルダを使って書き換えが行われたみたいですけど、プロパティの内容を更新してもいいですか?って感じでしょうか。
当然「はい」ですよね。「はい」のボタンをクリックします。

なんか、妙な感じに書き換わりましたですねぇ。SELECTなんとか・・・とか。

これがいわゆる SQL文ってやつなんですよ。「商品テーブル」から「値段が100000000円以上の商品のみ抽出する」っていう命令を SQLで書くとこうなるんですね。

まあ、これはこれでよいので気にしないでいただいて・・・。フォームビューに切り替えて確認してみましょうか。



すると、ほほほ。
わたしの場合は、どうやら「商品テーブル」には「値段が 100000000円以上の商品」は 2件しかなかったようで、こんな感じになりました。

やっぱ全部・・・という場合は、上の「値集合ソース」欄を、もとの「商品テーブル」にもどせば(リストから一覧で選べますよね)よいのです。んじゃ、せっかくですけど今日は練習なんで・・・
もとに戻しましょうか。




コンボボックスの中のデータ群を、その都度いろんな条件を与えてくるくる変更することもできちゃうんですけど(あるときは100000000円以上、あるときは500000000円以上、とか)、でも、それはひとつ上級の技かもしれない。今日のところはココまでにいたしましょう。

え?なんで「値段」が出てこないのかって?そりゃだって、このコンボボックスに表示する列数、2列にしたでしょう。 じゃあ、練習です。
上のコンボボックスで、商品名の右側に値段が出るようにするにはどうしたら???

答えは「書式プロパティ」にありますよね。

まず「列数」を 3にして、列幅を調節します。商品名に 4センチもいらないかなぁ・・・。

じゃあ、 0;3;2 にしてみましょうか。


cmという単位は勝手につきますから、
数値とセミコロンの配置だけ気をつけて入力してください。


と、こんな感じで、全商品の値段も表示させることができます。



で、ここで「値段、金額なんだから右寄せしたい」という方もあるかもわかんないですが・・・。 多分、正確にはできないんじゃないかと思うんですよ。なんかね、左にそろっちゃうんですよね。文字扱いなんでしょうね・・・。やりようはあるんですが、すぐ操作できるプロパティとかの中には「 2列目だけ右寄せする」っていう設定はないので、ここでは割愛させていただきます。


ココまでいかがでしょう。 それぞれのプロパティの関連を把握してしまえば、そんなにややこしいものでもないと思います。


さて、ココまでだいたい雰囲気つかんでいただければ、リストボックスのプロパティもほとんど同じなんで、ざっと眺めてみましょう。
リストボックスとコンボボックスの違いは、コンボボックスはクリックして初めてリストが出てくるのに対し、リストボックスは常にリストが表示されているというところですね。リストボックスの方がその分場所を取りますけど、一覧から何か選ぶとき見渡しやすいってメリットがあります。
後は機能的にはおんなじようなもんなので、フォームのデザインとか、お好みとかで選んでいってください。

んじゃ、リストボックスのほう、プロパティを見てみましょうか。

適当なとこに作って(もう作ってある人はそいつのプロパティを見るってことで)みましょう。
まずはー何を見ればいいかというと・・・ 「値集合タイプ」と「値集合ソース」ですよね。 「値リスト」っていうのは、コンボボックスのほうで一回見ていただいてるんで、かつあい!
使い方は同じです。 「値集合ソース」に「商品テーブル」を選んでみましょうか。


こんな感じ・・・。
2列にしたい場合も、プロパティの操作の仕方は同じですんで、挑戦してみましょう。

リストボックスの場合は、「リスト幅」っていうプロパティがないので、リストボックスの幅そのものを操作します。「幅」っていうプロパティですね。

もし、2列表示させるとして、商品コードを2センチ、商品名を3センチメートルとるとすると、スクロールバーが一番右端に表示されたときのことを考えて、最低でもリストボックスの幅は 5.5 センチメートルくらいは必要、ということになりますね。
まあ、足りなくても、左右方向のスクロールバーが勝手に出てくれますから、2列目のデータを診ることができない、というわけじゃないんですけども。。。


すると、こんな感じでしょうか。
3列にする場合、あるいは、商品コード(1列目)を見えなくする方法なども、コンボボックスと同じです。いろいろ挑戦してみてください。



あと、「列見出し」なんていうプロパティも、もしかしたら便利かも。


と、こうなるんですけど、どうでしょう。

各列に見出しがつくんですね。
その列がいったいなんなのか、フィールド名が出るようになるわけで。 コンボの場合は、リストを出したとき初めて見えるので、こういうプロパティはリストボックス向きかもわかんないですが・・・。 状況に合わせて設定してみてください。




さて、いろいろ見ていただきましたけど、だいたいよろしいでしょうか。
ココまでは、コンボボックス、リストボックスの「見てくれ」の部分のお話です。
ここまでと、これからお話することは別のことですので、ごちゃごちゃになってしまわないよう、いちおうココまでの操作を整頓しておいてください。
コンボもリストボックスも、結局テキストボックスと同じなんです。テキストボックスは直接文字を入力するためのコントロールですけど、コンボやリストボックスは、一覧から選ぶコントロール。どちらも「入力用のコントロール」であることには変わりないんです。 だから、利用する場合も、連結と非連結の2パターン考えられるわけです。 今の状態は「非連結」です。 「非連結」って何かというと、このコントロールが、どっかのテーブルやクエリーのフィールドと結びついてないって、そんな感じで解釈していただいてよいと思います。



たとえば、↓こんな感じで、「フォーム上で絞込みの条件入力をするために使うコンボ」とかだと、非連結ですよね。

一覧からグループ名を選んで、そのグループだけの表示に絞り込む、っていうフォームを作った場合、このコンボはグループ名を「 TOKIO 」と直接入力する手間を省くためにコンボにしただけなんで、この値をテーブルの中のどこかに入力する必要は・・・ないです。


でも、実際に何か入力フォームを作って、「商品を直接入力する変わりにコンボを使って入力させたい」とかいう場合、非連結ではなくてこのコンボが「商品コード」もしくは「商品名」のフィールドと結びついていなければならないわけで。 次にその辺のお話をいたしますね。