<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 



フォームウィザードを使ってフォームを新規作成します。

一番最初の画面がポイントです。
テーブル/クエリを選ぶとこが左端にありますよね。ここでまず、「売上明細」を選びます。すると、下に「売上明細」に含まれるフィールドが出てきますね。
えー、わたしは実は[売上]のフィールド、さっき削除しちゃったんですよ・・・せっかちなもんで(笑)みなさんは残ってますよね。残したままでよいですよ。でも、ここでは選ばないでおきましょう。
[伝票番号][売上日][社員番号]を右側に選びます。
選び方は・・・大丈夫ですよね。>ボタンをクリックして、ひとつずつ右側に移動させてやってください。



で、続けてもうひとつ、「売上明細商品」テーブルを選びます。
すると、「売上明細商品」テーブルの中のフィールドが一覧表示できますよね。

リレーションシップでふたつのテーブル間の結びつきを指定しているので、「サブフォームを作成するための画面」が現われます。
(下の図を見てください)
普通のフォームウィザードじゃ出てこない画面なんですよ。
リレーションシップでテーブル同士の結びつきを指定していて、なおかつ上のような操作でそのテーブルをふたつとも選んでいるので、こんな画面が余分に出てくるんです。これが利用したかったんですよ〜。

よく観察してみてくださいね。
なんの指示もしてないけど、テーブルの様子やリレーションシップの内容から、メインとなるフォームが「売上明細」テーブルのフィールドを表示することに従事していて、そのフォーム内に埋め込まれるようにしてもうひとつ「売上明細商品」テーブルをモトとするフォームの様子が描かれてますよね。
この、埋め込まれてる方のフォームのことを、サブフォームっていうんです。普通のフォームなんですけど、ヒロシのシャツの中に埋まってるピョン吉みたいに、フォームの中に埋め込まれてるフォームなんですよ。

これによって、「ひとつの伝票の中に複数の(行数の決まってない)商品売上入力」ができるようになるんです。



サブフォーム部分なんですけど・・・。「データシート」と「表形式」の2通りから選ぶことができます。どっちもおんなじようなもんですけどね。でも、個人的には「表形式」の方がスキだなー。別に根拠はないですが。
ということで、今日は表形式で行きましょう。
データシートの方がすっきりするときもありますから、ケースバイケースで使い分けていってください。



で、完成です。この操作で実は、フォームがふたつできるんです。
ひとつはメインとなるフォーム(通常はこちらだけを開きます)、もうひとつがサブフォーム(埋め込まれてるフォーム。単体で使うことはないですけど、れっきとしたフォーム)です。どちらにも名前を付けなくちゃいけないんですけど、とりあえず勝手につきます。変えたほうがイイのかもしれないですけど・・・とりあえずこのまま進んでみましょう。


できました〜。
ちょっとわかりにくいですけど・・・フォームの中に表形式のフォームが埋まってる様子、おわかりいただけますか???

そりゃね、このままじゃ使いにくいですよ。やっぱしいろいろ手直ししないと。んじゃ、デザインビューにひっくり返して見てみましょう。
左上の、青い三角定規ツールボタンですよ。

黄色い部分が、サブフォーム部分です。狭いですけど、右端と下部分にスクロールバーが出てますから、うまいこと操作しながら手直ししていってください。あるいは、体裁が整うまでフォームのサイズを少し広げてやってもいいかもしれないですね。その辺はお任せしますよ。



と、データベースウィンドウを覗いてみると・・・ふたつ、できてますよね。
サブフォームの方
は直接使うことはほとんどないですけど、削除したらダメですよ。なきゃ出てきませんからね。


で、ちょっと手を加えて、テキストボックスの位置や大きさなど、調節してみました。
サブフォーム部分の手直しが結構骨折れますけど、がんばって挑戦してみてください。いろいろやってみて、あ、なんだ、こうなってんのか、みたいな部分も出てくると思いますよ。
表形式のフォームには違いないですからね。

気の早い話ですけど、あとで使うつもりなんで、コマンドボタンをふたつほど、右下にでも作っておいてください。場所、大きさ、標題、名前はお任せします。お任せしますけど、なんだかぜんぜんわかんない、ってのはなしですよ。
使うとき確認しながらまたお話しますけど、とりあえず「名前」っていう感覚には慣れちゃって下さいよ。

とりあえずまだ何にもないんで、ピンと来ないかもわかんないですけれど・・・。
フォームビューに切り替えて、雰囲気だけでもつかんでみてください。

緑色のしるしをつけたテキストボックスの中身は、それぞれリレーションシップでつなげたフィールド同士。[伝票番号]ですよね。
このふたつのフォームは、このテキストボックスの中身を頼りに結びつきます。
これからデータ入れていきますけども、例えばメインフォームでレコード移動ボタンをクリックして、前の伝票番号とか後ろの伝票番号表示すると、サブフォームの方の伝票番号も移動しますよね。

こういうのを人知れず見守ってくれるのがリレーションシップなんです。やみくもにテーブル同士をくっつける機能じゃないんですよ。
ひとつのデータベースのなかで、テーブル同士が結びついている様子を記した地図みたいなものです。くっつけたからといってどうこうなるわけじゃないからなかなか理解しにくいものなんですけどね・・・。

Accessを「学問」として学習しているっていう人もたくさんいらっしゃると思いますよね。学校の課題とかで・・・。
そういう方は「リレーションシップとはどういうもので、どういうときどういうふうに設定するのか」ということを理解しなくちゃいけないかもしれないですけど、Accessを「業務改善のためのデータベース作りの道具」として使ってる人にとっては、リレーションシップなんて別に言葉で理解する必要ないと、わたしは思います。
「顧客テーブルがあって、売上伝票テーブルがあって、売上の入力をするときに顧客テーブルから顧客名を参照したりするようにしたら、ああ、そしたらこのふたつのテーブルはなんかしら関係付けておくべきなのね、顧客番号でつながるのよね」って、業務の流れとかから自然に思いついたら、その時はじめてリレーションシップって言葉を思い出して「ああ、そういえばリレーションシップってどうやるんだっけ」って考えればいいんです。

業務の流れとか無視して、リレーションシップなんか考えたってしょうがないっすよ。わたしはそう思います。
だから、「じゃあリレーションシップってどういうときやればいいんですか?」とか、そんなの知ったって、しょうがないって思うんです。ある程度パターンはあると思いますけど、ちゃんと必然性があって存在するもんですから、そんな先走って考える必要はないですよ。

それより、今は、メインのフォームとサブフォームがどういうふうに連動しているのか、その辺をしっかり見といてくださいね。