<HOME  <お願い事項   <Access2002 TOP   <Access97 TOP   <サイト内検索
 MS-Access2000超入門部屋--見積書を作る
   1 > 2 > 3 > 4 > 5 > 6 > 7 > 8 > 9 > 10 > 11 > 12 > 13 > 14 > 15 > 16 



では、次に「見積書の入力」フォームを作ろうと思ってるんですけど・・・。たとえば「顧客名」とか「住所」とかも、すっと参照できるとよいですよね。

じゃあ、W のテーブルをもとにクエリを作りましょう。

まず、[W 見積テーブル]と[社員マスタ][顧客マスタ]を使ったクエリです。

[W 見積テーブル]の[顧客番号]や[担当営業]と、それぞれのテーブルの主キーとなっているフィールドを結んで、ひとつの見積の中の顧客名や社員名をきちんと引き出してこれるようなテーブル同士の結びつきにしてやります。で、[ W 見積テーブル]のすべてのフィールドと、[社員マスタ]の[社員名]、[顧客マスタ]の[郵便番号][住所][ビル名]などの情報をフィールドグリッドに選んでやります。

そして、はっきりわかっていれば、できれば、「どっちのテーブル主体の結びつきなのか」ということも明確にしてあげたほうがよいですね。

テーブル間の結合線をダブルクリックすると、「結合プロパティ」というダイアログボックスが出てきます。

ふつうは、両方のテーブルに存在するレコードだけ・・・。
つまり、[ W 見積テーブル]にもその顧客番号のレコードがあるし、[顧客マスタ]の方にもその顧客番号のレコードがある場合に、その顧客番号を持つレコードをこのクエリは表示します。
[顧客マスタ]に登録漏れがあったりしたら、この見積データは出てこないことになります。
それでもいい場合もあると思いますけどね。

今回は、「 W 見積テーブルの全レコードと顧客マスタのおなじ結合フィールドのレコードだけを含める」というやつを選びましょうか。
まあ、そんなことが起こらないようにするのが理想なんですけど、「見積作成時に、見積先の顧客として、顧客マスタに登録のない顧客番号が間違って入力してしまったとしても、顧客名や住所は空っぽの状態であってもそうした見積書を出したことだけでも確認できるよう、[ W 見積テーブル]に入力したレコードは全部出す」という具合になります。



結びつき方がはっきりわかっている場合は、こういう配慮もしてあげた方がよいでしょう。

同様に、社員マスタとの結びつきの部分も、[ W見積テーブル]主体の結びつきにしましょう。

↑こんな感じになりますね。微妙にやじるしになります。[ W 見積テーブル]を左側に配置してますんで、こういうのを「左結合」って呼んだりします。

[Q_ 見積]と名前をつけて保存しましょうか。


同様に、明細の方もクエリを作りましょう。

こちらは、[W見積明細テーブル]と[商品マスタ]を結びつけて、[商品マスタ]から[商品名]を選び出します。

これも、[W見積明細テーブル]主体の結びつきにしましょう。同じように「左結合」になると思います。
まあ、見た目そんなに変わるわけじゃないですけど、挑戦してみてください。

で、[単価]の扱いなんですけど・・・・[見積明細テーブル]の方にも設けましたよね。
本来、[単価]というフィールドは[商品名]や[商品番号]ひとつに対してひとつ存在する情報であり、[商品マスタ]にのみ持つべきものなんですけれど(あっちこっちに単価フィールドがあったら、整合性取れなくなっちゃいますからね。情報の出所は一箇所に、というのがリレーショナルデータベースの基本です。あっちこっちのテーブルにおなじフィールドをごちゃごちゃ作らず整頓するようなことを「テーブルの正規化」っていいます)、もし、しょっちゅう商品単価が変動するような場合で、「見積もりだしたときの単価を、後で参照できるようにしたい」のであれば、「その見積出したときの単価」をどっかに残さないといけないですよね。

[商品マスタ]には、「今現在の最新の単価」が入ります。なので、[ W 見積明細テーブル]の方に、「そのときの単価」を納めておこうかな、って思った次第でやんす。

なので、このクエリで選ぶのは、[W見積明細テーブル]の方の[単価]ですよ。


で、これから「サブフォーム」ってものを作ろうと思ってます。

サブフォームって、「フォームウィザード」機能を使うと簡単に作ることができますよね。

でも、あの機能って、基になっているテーブル同士が「リレーションシップ」で「一対多の結びつき」になってる場合のみ有効なんです。だって Access にはどういうふうにサブフォームにしていいかわかんないから・・・。今回、ちょっと理由があって「 W 見積テーブル」には主キーをつけてないんです。なので、この機能、使えないんじゃないかと思うんで・・・。「手作りサブフォーム」にします。ちょっと操作しにくいですが、がんばって作ってみましょう。

まずは、[Q 見積]を基にして、こんな感じの単票形式のフォームを作りましょうか。テキストボックスの配置とか背景色とかフォームの標題などはお任せします。いろいろ工夫してみてくださいね。
で、このフォームになんか適当な名前をつけましょう。ええと、月並みですけど[見積入力フォーム]にしようかな。

[見積入力フォーム]はどっか隅っこに置いといて、今度は[ Q 見積明細]を使って表形式のフォームを作ります。

名前は[見積明細入力フォーム]にしようかな。

うーん、ちょっとせまっくるしいですけど、うまいこと工夫して配置してやってください。