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



ちょっとした裏わざとして、アクロバットみたいなことが多少できるんで(笑)ご紹介します。もし使えそうだったら使ってみてください。

たとえば、このフォームが基にしているテーブル「売上入力テーブル」には、商品の「値段」って入力するとこないですよね。
まあ、このフィールドを「売上入力テーブル」に作るかどうかは別にして、「売上数に値段を掛け算して、売上金額を見てみたい、このフォーム上でちょっとだけ知りたい」という場合、できないことはないんですよ。コンボボックスやリストボックスの中に「値段」フィールドを持っていれば・・・。

コンボボックスのほうは「値段」のフィールド、扱えるようにしましたよね。でもリストボックスのほうはまだだったかな・・・。
んじゃ、リストボックスのほう、値段のフィールドも扱えるようにしてみましょう。

リストボックス内に「値段」を表示させなくてもよいのであれば、「列数」を 3にするだけでオッケーですよね。
でもせっかくだからちゃんと表示したい、という場合は、列幅も調節してやってください。

で、3列目が「値段」ですよね。

つまり、仮にどっかに「売上金額」を簡単にあんちょこに計算させて表示させるとしたら、その計算式は

= 売上数 * リストボックスの3列目

で、いけると思います。

いちおう、確認なんですけど・・・。
このリストボックスのコントロールソースは確かに「商品コード」ですが、リストボックスの名前というのは、必ずしもそれと一致しないのです。どうやって作ったかによって、 Access が勝手に名前を付けてることもあります。 なので、「名前」は必ず確認する癖をつけてください。

わたしのは、「リスト2」でした。 2は半角の数字だったです。

で、コンボボックスやリストボックスの列数を表すやり方なんですけど、リストボックスの名前が[リスト2]だったとすると、


[リスト2].column(2)


これで、3列目、という意味になります。なんで(2)かというと、 1列目が(0)だからなんです。ちょっちややっこしいですけどね。
ってことは、掛け算の式を考えると


=[売上数]*[リスト2].column(2)


ってことになります。とりあえず手っ取り早く金額を表示させたい、ってことなら・・・。

てきとうなテキストボックスを作って、その「コントロールソース」欄に上の式を入力してやればいいわけです。
Columnにもカッコがついちゃいますが、まあ、これでとりあえずオッケー。

どうでしょう。売上金額、表示されます? コンボボックスを使った場合でも考え方は同じです。 column 、いろいろつかえそうでしょう?
ちょっとややっこしいですけどね。
でも、結構利用されてる方法なんですよ。今日は練習ですから、こんなこともできるんだ、くらいにとらえておいてください。


あり?なんか変な数字が出てくることが・・・。
これは、桁数の多い数値の表示の仕方です。
Excel とかもこうなりますからお馴染みの方も多いかもしれないですね。  
1.225E+12は、1.225×1000000000000ってことでしょうか・・・後ろの「12」という数字が、実際に後ろにくっつくゼロの数を表している・・・のかな?
まあ、そんな感じ。かな。こいつはコンピュータ用語辞典かなんかで調べてみてください。



いろいろお話してまいりましたが、コンボボックス、リストボックスの各プロパティの役割、いかがでしょう。
だいたいつかんでいただけましたか?
「値集合ソース」と「コントロールソース」が混同しちゃうと、わけのわからないコンボボックスになっちゃったりしますから、どのプロパティがどういう働きをするのか、しっかり押さえておいたほうが作業効率は上がってくると思います。面倒ですけど、うまく活用すればすごく便利なフォームを作ることもできると思います。ぜひぜひ、うまいこと活用していってください。

コンボボックスは、ウィザードでも作ることができますが、こういうプロパティの役割を知らないでいると、つぶしが利かないというか、ちょっと応用しようと思ってもわけがわからないと思うんです。不具合が出ても、思うように動かなくなっちゃっても、どこに原因があるのか判断できるよう、この辺のプロパティの役割、押さえておいてくださいね。



さて、基本構造を理解していただけたら・・・

結局、「商品テーブル」と「売上入力テーブル」は、互いに「商品コード」というフィールドで結びついているから、コンボボックスによる商品コード入力なんていう仕組みを作ることができるんだ、ってわけなんですけど、その辺まで察していただけると非常にありがたい。これぞAccess、これぞリレーショナル・データベースってところに気づいていただけましたでしょうか。

あらかじめ、テーブルを設計した時点で、「コンボボックスかリストボックスで、商品一覧から入力できるようにしたいもんだ」という構想が浮かんでいれば、「ルックアップウィザード」という機能を活用してもっと簡単に仕組みを作ることができるんですよ。そいつをちょっとご紹介しようと思います。

新しい「売上入力のフォーム」を作るつもりになっていただいて・・・。

売上入力テーブル」の、「商品コード」のデータ型を変えてみましょう。
中に「ルックアップウィザード」っていうのがあるんで、こいつにします。

「商品コード」を、「商品テーブル」から選ぶ仕組みを、テーブル間の結びつきによって持たせよう、って、まあそういう考えなんですけどね。とりあえずやってみましょう。

ルックアップウィザードという機能が勝手に働きます。
まあ、画面をおっていけばよいんですが、順に見てみましょうか。

「テーブルまたはクエリの値を表示する」にマルがついてますよね。
これは、よく見ると・・・コンボやリストボックスの「値集合タイプ」のそれと似てますね。

したら、どのテーブル(またはクエリ)の中のデータ群を、商品コード入力に利用するのか、名前を指定します。
「商品テーブル」を選びましょう。って、それしかないですもんね(笑)

で、後はなんか雰囲気でいけそうな感じがすると思うんですけど、コンボボックス(またはリストボックス)に表示したいフィールドを右に選ぶんです。
ためしに全部選んでみます?

そうすると・・・。
選んだフィールドを、実際にコンボボックスまたはリストボックス内でどんな感じに表示するか、マウス操作で調節することができます。つまりは「列幅」ですね。



あと、なんかね、「キー列を表示しない(推奨)」ってなってますね。
「商品テーブル」って、「商品コード」を主キーにしているんですけど・・・。

「まあ、わざわざ表示することもないんじゃない?商品名が見えれば十分でしょ」って意味かな・・・。
ま、列幅だけちょっと調節しておいてください。
商品名、値段、という、フィールド名のとこ・・・・。
グレーのトコの境界線をドラッグすれば広がったり縮まったりするです


後は画面のとおりに次へ次へで・・・。
完了すると、なんかメッセージが出てきます。「リレーションシップ」ってでてますね。

リレーションシップとは、このデータベースの中での、テーブル同士のつながりの様子を記したものなんです。裏方さんですね。
つまり、「売上入力テーブル」の「商品コード」というフィールドは、「商品テーブル」というテーブルの「商品コード」を参照するよう、今後はこのふたつのテーブルの間に何らかの関係ができる、ということを、リレーションシップという形で書き残しておきますが、今「売上入力テーブル」のフィールドのデータ型を変更している作業の最中ですよね。だから、その辺をいったん保存しますね、と、聞いてるわけなんです。ルックアップウィザード、というデータ型を選びましたもんね。いちおう、テーブルのデザイン自体も変わってることになるんですよ。まあ、ココは指示に従いましょう。

と、なんか、見た目は変わってないですけど・・・。
「商品コード」のプロパティ欄(このウィンドウの下のほう)を見てみてください。「ルックアップ」っていうタブがあると思います。そこクリックすると、どういう設定になっているかわかります。多分、普通にしてれば「コンボボックス」を使わせてくれるようになってると思うんですけど・・・。

んじゃ、このテーブルをもとにして、フォーム作ってみましょう。テーブルは閉じましょう。


で、「オートフォーム:単票形式」機能を使って手っ取り早く作ってみましょうか。
「売上入力テーブル」を選んでおいて、[OK]ボタンをクリックします。

すると・・・どうでしょう。

「商品コード」のところ、コンボボックスになってます?
コンボボックスがいやならリストボックスに変更したり、列幅やリスト行数など、いろいろ変更してみて、より使いやすいコントロールに調節してみてくださいね。



(オシマイ)