<HOME <お願い事項 <Access2002 TOP <Access97 TOP <サイト内検索 | ||
MS-Access2000超入門部屋--見積書を作る |
1 > 2 > 3 > 4 > 5 > 6 > 7 > 8 > 9 > 10 > 11 > 12 > 13 > 14 > 15 > 16 |
じゃあ、その辺も含めて、いろいろ作りこんでいきますね。
まずは細かいトコから・・・。商品番号を選んだら、[単価]を代入するようにしたいと思います。
今、[商品番号]のコンボボックスの中身は、表示するしないは別にして 3 列ありますよね。左から[商品番号][商品名][単価]の順に選んだと思います。
なので、このコンボの3 列目が、[商品マスタ]の[単価]なわけです。これをこのフォーム上の[単価]というテキストボックスに代入してやれば、このときの単価がずっと残ることになりますよね。え?意味がわかんない?んもー!しっかりしてください!!
手っ取り早い方法としては、このコンボボックスの更新後処理で
こんな感じの処理を作って、直接代入してやるのがいいんじゃないでしょうか。
[コンボボックス名].Column(x) で、コンボボックスの値集合ソースで選んでる列のうち左からx
番目の列の値をさすことになります。
といっても、いちばん左の列は0 なので、3 列目ということは
0,1,2….. で、2 です。
ついでに、「個数」のテキストボックスへカーソルを移動させましょうか。
その下の行にですね・・・。
これで、「個数」という名前のコントロールまでカーソル(厳密にはフォーカスの移動というのでしょうか)を移動させます。
多分、商品番号選ぶと、カーソルが個数のところまで移動し、すぐ数値の入力ができるようになると思います。
サブフォーム内で「単価」と「個数」を掛け算した答えを出す「金額」という欄を設けます。
これはあえてテーブルにはフィールドとして持たせません。「単価」と「個数」を掛け算すれば出る答えですし、「単価」と「個数」が変わったらその都度変動する値だからです。無理やりテーブルに持ちたがる方もいらっしゃるんですが、それはそれで良し悪しですね。まずはひととおり作ってみて、どうしてもテーブルに「金額」のフィールドを持つ必要があるなら、その「どうしても」っていうところをじっくり考えていってください。
こんな感じで、非連結のテキストボックスを右端に作り、テキストボックスの名前を「金額」にしました。まあ、「テキスト xx 」のままでもいいんですけど、ややっこしくなりそうなので変えてみました。そして、そのテキストボックスの「コントロールソース」欄に、左のふたつのフィールドの値を掛け算する式を書きます。半角のかぎカッコは自動的についてくれるんじゃないかと思うんで、フィールド名と、演算記号だけ入力すればいいでしょう。演算記号は半角ですよ。
で、次に・・・サブフォームの「フォームフッター」をちょっとばかりドラッグして引き出して、ここにも非連結のテキストボックスを一個作ります。
テキストボックスの名前は「合計金額」にしようかな。
で、コントロールソースにSum 関数を使って、合計の金額が出るようにしてやります。
これね、=Sum([金額]) じ ゃだめなんですよ。
厳密には、 Sum 関数とかが計算に使ってるのは、テキストボックスの名前じゃなくて、そのテキストボックスのコントロールソースになってる「基のテーブルやクエリのフィールド」なんです。
なので、[金額]っていうのは、 Sum 関数とかからはわかってもらえないんですよ。
えと、そしたら、まだ中途半端ですけど、小さなテストをしてみましょうか。
フォームビューにして、
商品番号をひとつ選んで、個数を入力します。
でも、この時点では、[金額]は出ますけど、[合計金額]はまだ空っぽですね。
次の行のどこかをクリックするとかすると、初めて合計額が表示されると思います。
これはまあ、こういうものなんで・・・カーソルを動かす順番とかタイミングとかを少し工夫してうまく作っていくことにしましょう。
では、今のテストで中途半端に入力されたレコードを、テーブルから削除しておきましょう。
左側の「レコードセレクタ」クリックして 1
レコード選択しておいてからDelete キーを押して、メッセージに答えれば消えますよね。
んでは、他のところをちょこちょこと整えていきましょう。
まずは・・・画面の右下の方に、値引き額を入力できるような場所を用意してあると思うんで、トータルの金額から値引き額を引いて、消費税の計算をして、税額とトータル額 - 値引き額とを足し算して、実際の総見積金額を出しましょう。
サブフォームの中のテキストボックス等々各種コントロールを、メインのフォームの方から参照する場合は、
[サブフォームのコントロール名 ].Form![ そのテキストボックス等々の名前]
となります。今回は、サブフォームのコントロール名は[W_見積明細テーブル]なので、
[W_見積明細テーブル].Form![合計金額]
これで、さっき作った「Sum 関数入れたテキストボックス、その名は「合計金額」」を参照できます。