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



では、まず、今練習用に使ってるこのフォームを、「売上入力をするためのフォーム」にしちゃいましょう。
まあ、気の持ちようということで・・・。

では、まず、フォームのプロパティを見ましょう。
左上のフォームセレクタ部分をダブルクリックなりクリックなりすれば、フォーム全体のプロパティが出てきますよね。

「レコードソース」欄を「売上入力テーブル」に変更します。
これだけじゃ特別見た目何も変わってないですけど、これで、このフォームは「売上入力テーブルの中のレコードを表示したり、売上入力テーブルに新規レコードを追加したりできるフォーム」に変身したわけです。

どっかに、「フィールドリスト」って出ました? なかったら、ツールバーの「フィールドリストボタン」をクリックして、出してください。
小さいので目立たないですが・・・。
こういうの↓



ではそのフィールドリストから、フォーム上に「伝票番号」をドラッグします。 テキストボックスとラベルのセットができますよね。
同じ要領で、「売上日」と「売上数」も落っことしてきます。 「商品コード」は落としません。そのままです。

で、配置とか見やすいように動かしてやってください。練習ですから適当でオッケーです。



で、問題の「商品コード」は、リストボックス化コンボボックスの「コントロールソース」にします。
両方設定しても意味ないですよね。
商品コードを二回入力するのとおんなじことになりますんで・・・。 とりあえずコンボのほう、指定してみてください。



フォームビューに切り替えて、なんか 1件入力してみましょう。
なんでもいいですよ。伝票番号、主キーにしてないですよね。なら、空っぽでもだいじょうぶかな。
で、入力できたら、とりあえずフォーム閉じましょう。

んで、「売上入力テーブル」を開いてみましょうか。

テーブルの中身、どうでしょう。1件入ってますよね。

今フォームを通じて入力した1件です。
商品コードのとこ、見てみてください。
コンボボックスでは「商品名」が表示されてるのに、テーブルの中に入ってくるデータは「商品コード」ですよね。
これはどこで調節されるのかというと・・・。

コンボボックスやリストボックスのプロパティで、「連結列」っていうプロパティがあること、ちょっとだけお話しましたよね。
これは通常「1」になってます。
つまり、コンボボックスの中のデータ群の、 1列目が、実際にはコントロールソースとなってるフィールドの値になるよ、ってことなんですね。

1列目、列幅を 0センチにしましたので表示はされないですけど、列幅がゼロなだけで、1列目は「商品コード」なんですよ。
ちゃんとコンボボックスの中にはあるんです。
たとえば、「連結列」を 1じゃなくて 2 にすると、 2列目のフィールドがコントロールソースの値になります。
2列目は「商品名」ですね。「3列目」が値段です。 2にしてみましょうか。変更できたらフォームを保存して、フォームビューに切り替えましょう。

見た目は何も変わらないですけれど・・・。

商品コードのところに、今度は「商品名」が入ってきますよね。
2列目は「商品名」でしたので、商品名が商品コードのところに入ってきます。

でも、やっぱし今日のところは元に戻してくださいな。

連結列= 1に・・・。




余談ですけど、なぜ「商品コード」なんて作ってるのか、なぜ「売上入力テーブル」に「商品名」じゃなくて「商品コード」を持とうとしているのか、その辺はやっぱり「データベース概論」みたいなお話になりそうですんで、ここではあんまりお話しないつもりでいます。
コンボボックスやリストボックスを作ることと、関連するといえば関連しますけど違うお話なので、そいつは分けて考えてくださいね。
「商品コード」というフィールドを設ける必要性が理解できなければ、設けなくてもよいと思いますよ。商品名を直接入力していくようにすればいいと思います。
でも、相手はコンピュータ、データベースソフトです。商品名などといった文字列より、ある程度コード化されたフィールドのほうが何かと都合がよいのですよ。コンピュータにとっては・・・。
コード化することは、最終的にはとても大切なことで、データベースには不可欠なことなのだということを、少しずつ理解してあげてください。




と、まだなんも配慮していないフォームなので使い勝手は悪いですけど、このコーナーはコンボとリストボックスのお話するとこなので、今あるものをうまく活用して、何件か入力してみてください。

次のレコード(新規レコード)入力するなら、レコード移動ボタンを使っていただいて・・・。
あ、あと、やたら Enter キーをがんがん押すと、次のレコードにどんどん進んじゃいますから、 Enter キーは使わず、マウスでそっとカーソル移動しながら入力しましょう。こういうのもコンボやリストボックスとは関係のない話なので、分けて考えてくださいね。

そんなこと言うまでもないか・・・。

ある程度入力したら、レコード移動ボタンを使って戻ったりしてみてください。

コンボボックスの中身、そのレコードの入力のときに選んだものが出てきますよね。コンボボックスですけど、テーブルの中の「商品コード」にデータを入力/照会するためのコントロールになってますもんね。

もし、このコンボボックスのプロパティの「コントロールソース」を削除して空っぽにすると・・・。このコンボボックスは再び「非連結」に戻ります。

で、なんか新しい伝票の入力をしようとして、一覧から商品名を選んだとしても・・・。


と、商品コードも商品名もなんも入ってこないですよね。
入力用にコンボを設けるとき大切なのは「コントロールソース」「連結列」プロパティなんです。




じゃ、今度はコンボボックスじゃなくて、リストボックスのコントロールソースに「商品コード」を設定してみましょうか。
方法、考え方はおんなじです。 「連結列」というプロパティもありますよね。 1 になってると思います。

と、今度は、テーブルの中の「商品コード」フィールドに、リストボックスの 1 列目の値が入るようになり、以前入力したレコードを表示させると、過去に選んだ商品が黒く反転した状態で表示されます。

うっかり別の商品をクリックすると別の商品を売ったことになっちゃうんで、こういうシチュエーションでリストボックス使うのはどうかなーって気も、多少するんですけど・・・この辺はお好みかなぁ。
みなさんはどう思います?いろいろ入力してみて雰囲気つかんじゃってくださいね。