<HOME  <お願い事項   <Access2002 TOP   <Access97 TOP   <サイト内検索
 MS-Access2000超入門部屋--基本操作をさらに考える
   >00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 



やっぱり・・・レコードソースとしているテーブルかクエリーに、「商品名」っていうフィールドがないと、だめですね・・・。
でも、「売上明細商品テーブル」に、わざわざ「商品名」ってフィールドを追加するのも・・・どうかなぁと思うんですけど、どう思います?

じゃあ・・・ここはひとつ、クエリーを活用しましょうか。

いったん、フォームは保存しながら閉じてください。


んで、こんな感じのクエリーをひとつ、新規に作成してみましょう。

今、サブフォームがレコードソースにしている「売上明細商品」テーブルと、商品名が唯一記録されている「商品テーブル」を選んで、ふたつのテーブルを[商品番号]でくっつけてやります。「商品テーブル」の主キーを「商品番号」にしていれば、多分自動的にくっついてくれると思います。くっつかなかったら、かたっぽの[商品番号]からもうかたっぽの[商品番号]までマウスでドラッグして、結び付けてやってください。

ほんとうは、このふたつのテーブルの「結合の仕方」も、いろいろ考えなくちゃいけないんだと思いますけど・・・今日はこのままいきましょう。

後で役に立つかもしれないんで、「値段」フィールドも選び出しておきました。

このクエリーに名前を付けて保存しましょう。わたしは、Q_売上明細商品 って名前にしました。
名前を付けて、閉じます。

で、このクエリを、サブフォームの方のレコードソースにします。

うまいことサブフォーム側のフォームプロパティを表示させて、変更してやってください。

これで晴れて、[商品名]テキストボックスは非連結ではなくなりますね。
[商品名]テキストボックスのコントロールソースを「商品名」にしましょう。

と、どうでしょう???
各行とも、商品番号を選んだ瞬間に、商品名も表示されますよね。で、今までどおり、あとは個数を入力すればよいだけ・・・のはずですけど、出てきます???

だんだん「売上入力画面」っぽくなってきたと思いません????


いろいろ行ったり来たりしましたけど。。。もちろん、最初からばっちり設計できてれば、こんなのとっくに完成してたかもしれないですよ。
でも、ココにたどり着くためには、ほんとにいろんな細かい設定とか機能とか考え方とかが重なり合ってるんです。それで、ひとつの「データベース」ってものが成り立つんです。もちろん、無駄になっちゃったお話とかもいっぱいありますけど、こういうのって、なんか作ってるプロセスでないと直面しないことも多いと思うんですよ。
きっと、いつかお役に立つときが来ると思いますから・・・。


え???
これじゃ「売上金額」がわからないって???

・・・たしかに・・・いくつ売れたか入力してるのに、金額jは単価表見て電卓で計算・・・なんて、ばかばかしくてやってられないですよね。

じゃあ、乗りかかった船です。もう一工夫行きましょう。フォームはいったん閉じましょう。

さっき作った、「サブフォームのレコードソースになっているクエリー」にもう一工夫します。

この中で、金額の計算までさせてしまおうというわけです。

クエリーの中での計算式の基本は なんか適当な名前:計算式 です。

半角のコロンですから、気をつけてくださいね。んで、今回の場合は、[値段]フィールドの中身と[個数]フィールドの中身を計算させればよいんですから、

金額:[値段]*[個数]

となります。「金額」は、わたしが適当に付けた名前です。なんでもいいですよ。ただし、基になってるテーブル(売上明細商品と商品テーブル)で使ってる名前はダメです。ダブっちゃダメです。

なんでカギカッコで囲んでるか、とかいうのは、もうみなさんそんなに疑問に思わないですよね。別にわざわざカギカッコつけなくてもいいんですけど、まあ、「これはフィールド名だ」と意識しながら入力する癖をつけておくと何かとわかりやすいですからね。

このクエリーをデータシートビューに切り替えてみると・・・(左上のツールボタンですよ、こういう操作はもう慣れちゃってくださいね)金額、計算されてますよね。
個数を入力するの忘れて、ゼロのときは、答えもゼロです。

税込み金額はこれにさらに1.05掛け算すればよいですよね。でも、消費税は伝票全体の合計金額に1.05掛けるのかな、ふつうは・・・。

じゃ、このクエリー、保存しながら閉じましょう。


で、またちょっとサブフォームの中をやりくりしていただいて、「金額」を表示するテキストボックス作ってやってください。配置や大きさはお任せします。
作り方わかんないとか言わないですよね・・・・。

 非連結のテキストボックスを「詳細」欄に作って、
 (テキストボックスはツールボックスの中の[ab]ボタン)
 大きさと位置を調節して
 プロパティの「コントロールソース」欄に[金額]を選ぶ
 フォームヘッダー部分にラベルを作っておく

 (ラベルはツールボックスの中の[A]ボタン)
こんな感じですよ。

単価も出したい・・・というのであれば、さらにサブフォームの領域を広げて、「値段」を出すテキストボックスを作ってやりましょう。

と・・・改めてテストです。
んじゃ、フォームを開いて、「次の入力ボタン」(あれ、なんか標題がコマンド8のままだ・・・まあいいか)をクリックして、新規に伝票入力するとします。

社員番号を適当に入力して、
サブフォーム内の行番号を1と入力して
商品番号を選んで
個数を入力して、Enterキー。


Enterキーを押した瞬間に、金額の計算がされると思います。

なんでEnterキーを押さないかんのか、それは別に言うまでもないですよね・・・。

5だか55だか550だか、わかんないうちは、個数のテキストボックスの中身は空っぽと同じだからです。
Enterキーを押してはじめて、入力が完了したのだとみなされます。


ここまで完璧に動くことが確認できたら、もうサブフォームの方に「伝票番号」はいらないっすよ。
いちおうリレーションシップで結びつきは設定されてますからね。
ただ、しょっぱなからいきなり削除しちゃうと、正しく連動しているのかわかりにくいですカラ・・・。削除するのはある程度正しく動くことがわかってからにしましょう。

テキストボックスの削除は・・・クリックして、Deleteキーで消すのが一番楽だと思います。
サブフォームの方の伝票番号、ですよ!

で、後は、[商品名]と[金額]は、入力できない状態にしておいた方がよいですよね。多分・・・。