<HOME  <お願い事項   <Access2002 TOP   <Access2000 TOP   <サイト内検索
 MS-Access97超入門>サブレポートとサブレポート
 サブフォーム     サブレポート 



■サブフォームを作る#1

突然ですが、見積書を頭に思い浮かべてください。

交通費の精算書、納品書、商品の注文表、給与明細・・・。文房具屋さんの店先には、いろいろな専用伝票が売ってますよね。
コンピュータとは関係ないですよ。ボールペンで書いたりするやつです。
コクヨのとか・・・。

この帳票、よく見てください。
よく見ると、ふたつの要素があること、おわかりいただけますか?
じっくり見ましょう。

外側、ちょっと色を付けてるんですけど、黄色っぽい部分ですね。
この部分と、内側の色のついてない表の部分。この2ヶ所は、違うデータ群なんですね。

外側の黄色っぽい部分は、左上の「No.0011」という、伝票ナンバーのような番号を主キーとするデータ。。
対して、内側の白い表の部分は、この「No.0011」の中で注文のあった商品をたてに並べる構造で、
1,2,3.....という明細行番号を主キーとして考えます。

ぜんぜん意味が分からない???うーん・・・。

まあ、とりあえず、上のような伝票に近いイメージのフォーム、作ってみましょうか。作りながら考えましょう。


まず、下のようなテーブルを作ります。
[注文番号][お客さん名][注文日][メモ]というフィールドを持つ[注文でーす]テーブル
[注文番号][明細行][しなもの][個数]というフィールドを持つ[明細でーす]テーブル

テーブル名は適当でいいですが、[注文番号]というフィールド名には、今回はちょっとした意味があります。
両方のテーブルで同じ名前にしてください。
片方が[注文ナンバー]、もう片方が[伝票番号]ではだめですよ。
テーブルは異なりますけど、同じ意味で使うフィールドなので、名前は揃えてくださいね。


で、「リレーションシップ」というやつを設定します。
こいつは、目立つところには出てきませんが、密かにテーブルとテーブルを矛盾のないように関連付けるための大切なオブジェクトなんです。
でも目立たないんです。

リレーションシップをメニューから選ぶと、なんかブキミなねずみ色のウィンドウと、「テーブルの表示」というどこかで見たようなウィンドウが出てきます。
出てきました?

「テーブルの表示」の中から、[注文でーす]と[明細でーす]を一回ずつ落ち着いて[追加]してください。
よく画面を見てくださいね。なにが変ってるの???なんて思いながらがんがん追加してると大変なことになっちゃいますからね。
テーブルがねずみ色のウィンドウの中に、1回ずつ選択されればそれで結構。
[閉じる]をクリックして、「テーブルの表示」だけ閉じましょう。

すると、なんかフィールドリストみたいなのが仲良く並びますね。

間髪入れずに[注文でーす]の[注文番号]から[明細でーす]の[注文番号]に向かってそっとドラッグしましょう。
いいからいいから、ドラッグしてください。

すると、頼んでもいないのにこんなウィンドウが出てきます。閉じてしまわないで、じっくり中身を見ましょう。
よく見ると、左側に[注文でーす]の[注文番号]、右に[明細でーす]の[注文番号]が書かれてますね。

で、下の方に、リレーションシップの種類という欄があって、1対多と書かれてます。

まあ、難しいことは後回しにして、[作成]ボタンをクリックしてください。メッセージが何か出たら、[はい]の方をクリックして、作業は完了です。

これで、このふたつのテーブルは[注文番号]というフィールドの中身が同じものどうし、自動的に結びつく運命となりました。
え?どういう意味だって??まあ、おいおい理解を深めていきましょうよ。


で、フォームを作ります。

いいんですって。作りましょうよ。フォームウィザードを使って作ります。

ここでちょっとした小細工をします。
ふつう、テーブル/クエリーの欄で、ひとつテーブル名かクエリー名を選びますよね。
まあ、最初は順当に[注文でーす]テーブルを選びます。
で、真ん中の>>ボタンをクリックして、フィールドを全部右側に移します。

で、その後、さらにテーブル/クエリー欄から、[明細でーす]を選びます。
いいからいいから、だまされたと思ってやってみてください。

で、[明細でーす]のフィールドがずらっと出てきますから、そいつらも右側に移します。

右側の欄、なんかいっぱいフィールドが並びましたね。
[注文番号]は両方のテーブルにあるのでダブっちゃいますから、テーブル名とコンビで表示されてますね。

↑こうなりました?ならない?
きっとなりますから、落ち着いて操作してみてください。
慣れちゃえばカンタンですよ。じゃ、次、行きましょうか。



すると、次に、下のような画面が出てくると思います。
テーブルをふたつ選んだので、どうするの?という画面です。ふつうは出てこないんですけどね。

わかりにくいですけど、[注文でーす]をレコードソースにしたフォームの中に、[明細でーす]をレコードソースにしたフォームを埋め込んでいくようなカタチになります。

これもみな、さっき「リレーションシップ」の設定をしたから。これはこのまま、先に進みましょう。