トップ > Access2007目次 > サブフォームの仕組みを理解しよう
1)2)3)4)5)6)7)

サブフォームの仕組みを理解しよう

 

1データシート部分の操作

次は、子フォームに注目してみましょう。操作するのにちょっとコツがいるので、早いトコ慣れてしまいましょう。
まず手始めに・・・ 「実施日」部分に注目してください。
サブフォーム部分を見ると、「実施日」が#####になってる!!!という方も、そうでない方もいらっしゃるかもしれません。私は、今んとこ、###になっています。これは、数値型フィールドと日付時刻型フィールド特有の状態なんですが、そのテキストボックスまたはその枠内に表示しきれない場合にこういう表示になります。実はですね、日付時刻って、数値の仲間なんです。
つまり、ちょっと枠を広げれば、ちゃんと日付が表示されるんです。
操作中右図を参考にしていただきながら、「実施日」列を広げてください。

「実施日」と「教科番号」の間の境界部分にマウスポインタを合わせると、ポインタの形が「左右矢印十字型」に変わります。
形が変わったら、その形を維持しつつ、そっと右方向にほんの少しだけドラッグします。
図1:データシート部分の列幅を調整しよう

 

次に、「点数」の列に注目してください。
私の画面だと、左に寄ってるんですが、皆さんの画面はどうですか?点数なので、右に寄せたいなぁと思ってるんですが、そういう場合は・・・

操作中「点数」列のどこかをクリックして選択し、タブメニューの「ホーム」をクリックし、リボンの中の「右寄せ」ボタンをクリックします。
(フォームビューの状態での操作)
図2:フォームビューの状態で文字寄せする場合は

 

点数が右に寄りましたね。点数とか金額とか個数とかは、右に寄っていたほうがいいでしょう。
普通のフォームなら、わざわざこんな作業をしなくても最初から右に寄ってるんですが、サブフォーム(データシート)の場合だけかなぁ。
まあ、気が付いたら、この操作を思い出して文字寄せしてください。
図3:点数が右に寄った

 

データシート部分の列幅の変更や並べ替えなどの操作も、フォームのデザインを変更したうちに入ります。なので、上書き保存すればその列幅は記憶され、次にこのフォームを開いたときもその列幅で表示されます。保存せずにフォームを閉じると、その列幅は記憶されず、次にフォームを開いたときは一番最初の標準的な列幅で表示されます。
今日は練習なのでどちらでもいいんですが、適当なところでちょいちょい上書き保存しながら作業していってください。

操作中サブフォームのあるフォーム「学生マスター」を閉じましょう。作業は一段落です。

2サブフォームを開くとき

サブフォームのあるフォームのおさらいをしておきましょう。

このフォームをもう一度開きたいときは、「学生マスター」フォームを開きます。そうすると自動的に「成績テーブル サブフォーム」も開いたことになります。
サブフォームのほうを単体で使うことはまずないので、うっかり開いて「あれ?こんなフォーム作った記憶ないけど?」なんて悩まないようにしてくださいね。
図4:実際に使うときは・・・。

 

3サブフォームの構造と名前付け

これからちょっとややこしいお話をします。
ややこしいんですが、しっかり理解しておいたほうがサブフォームを作るときプラスになることなので、画面の中の様子をじっくり観察しながら操作していってください。
しかし、このフォーム、名前が「学生マスター」では、テーブルと同じで見分けが付きにくいですね。実際には、テストの点数を照会するためのフォームなので、それっぽい名前に変えたいところです。

操作中フォームの名前を「成績照会フォーム」に変更しましょう。

フォームを閉じている状態でないと変更できませんよ。
開いている方は、閉じてください。
図5:名前変えちまおう。

 

操作中サブフォームのほうも変えてしまいましょう。
「成績照会サブフォーム」にしましょう。
図6:こっちも変えとくか。

 

操作中では改めて、「成績照会フォーム」(「学生マスター」改)を開きましょう。ナビゲーションウィンドウからダブルクリックします。

あれ・・・。
タブの表記が、前のフォームのままですね・・・。

そうなんです。このタブ部分、実は、オブジェクトの名前を表示しているわけじゃないんですよ。このタブ用の表記を別設定できるので、そっちも直さないと、フォーム名とタブの表記が一致しなくなっちゃうんですね。
図7:タブの表示に注目。フォーム名とは違うのね

 

他にも、後からフォーム名を変更したことで、「あれ?」となってしまう可能性がある箇所があるので、お話しておこうと思います。
一番いいのは、フォームの名前を変更しないことなんですが、後から変えたくなる場合もありますもんね。
特にサブフォームの場合、フォームそのものの名前だけでなく、埋め込んだ子フォームとの関連もあるので、影響がありそうな箇所を確認しておきましょう。

4標題プロパティ

操作中「成績照会フォーム」をデザインビューに切り替えます。
リボンの右端のほうに「プロパティシート」というボタンがありましたよね。ボタンと呼んでいいのかどうかわからないんですが、とにかくこいつをクリックしてプロパティシートを出してください。
図8:プロパティーーー

 

操作中右図のように、プロパティシートの上部分にあるコンボボックスから ”フォーム” を選択します。(最初から”フォーム”になっている可能性もありますが)

これで、フォーム全体のプロパティを表示することができます。
図9:フォーム全体のプロパティを出そう

 

(参考)右図のようにフォームの左上の四角い部分をクリックすると、フォーム全体を選択したことになります。この状態でプロパティシートを表示すれば、フォーム全体のプロパティが表示されます。
フォーム全体を選択する操作も、覚えておくと便利ですよ。
図10:参考までに、フォーム全体の選択方法もチェックしておこう。

 

操作中「書式」タブが選択されていることを確認し(または選択し)、「標題」プロパティを書き換えましょう。
これが、タブの表記になります。

フォーム名と同じにしておいたほうがわかりやすそうだな、という方は、「成績照会フォーム」に変更してください。もちろん、他の表記でもかまいませんし、このプロパティは後で変更しても他に影響はないので、ずっと後になってから変えても問題なしです。いい文言が思いついてから変えてもいいですよ。
図11:標題を変えよう

 

操作中タブの表記が変わりました。
プロパティを変更したので、「成績照会フォーム」を上書き保存しておいてください。
図12:タブの表記、変わりました?

 

5埋め込みコントロールとサブフォーム

今更ですが、デザインビューで見ると、子フォームの部分、何だか妙ですよね。
データシート形式のフォームって、デザインビューで見るとこんな感じなんです。このコントロールをサイズ変更したり移動したりしても、データシートには変化ないんですよ。
表示したいものを選ぶだけ、なんです。

では本題に戻りまして、次に、サブフォーム部分のプロパティを見てみましょう。

操作中ちょっと選択しにくいんですが、うまくクリックしてサブフォーム部分を選択してください。
プロパティの出し方は、右上にボタンが・・・
図13:サブフォーム部分を選択しよう

 

ここでもう一度、サブフォームの仕組みをおさらいしておきましょう。
親フォーム「成績照会フォーム」の中に、「埋め込みコントロール」という種類のコントロールがあり(右図緑枠)、この中に子フォーム「成績照会サブフォーム」が埋め込まれています。
右図緑枠の部分は、フォームそのものではなく、何かを埋め込んで使うタイプのコントロールなので、ちゃんと名前が付いています。

図14:サブフォームの仕組みを理解しておこう

 

操作中「成績テーブル サブフォーム」(上図の緑枠)のプロパティの中から、1.「その他」タブをクリックし、2.「名前」プロパティの内容を確認してください。
ここを変更することで、このコントロールの名前が変更されます。

コントロールの名前は、後から変更するとやはり、あちこち影響が出る場合がありますので、やたらと変えるべきではありません。ただ、今回のように、フォームウィザードでちゃちゃっと作った結果、少々わかりにくい名前が付いてしまった・・・などというときは、今後のことを考えて思い切って変更・・なんて可能性もあるんですな。
図15:時には勇気を出して行動しなくては。

 

今日はこれ以上込み入った操作はしませんが、もっと複雑な処理を含むデータベースの場合は、この「埋め込みオブジェクトコントロール」の名前が非常に重要な意味を示すことがあるんです。
フォームウィザードに任せてしまうと、それぞれ何という名前が付いたか、上記の操作のように意識して確認しないとわからない場合が多く、それがカンタンなミスや誤動作につながることもあります。ウィザードは便利なので作業軽減のためにもうまく活用すべきですが、重要なプロパティや設定値を後から確認する手順も合わせて覚えておきましょう。
操作中そんなわけで、フォーム名と一緒にしておけば、わかりやすいんじゃないかと思います。

※適時、上書き保存をしながら作業してくださいね。
図16:これにも名前があるのか。

 

6データの入力

操作中「成績照会フォーム」を改めて見てみましょう。フォームビューに切り替えてください。

フォームを閉じてしまった方は、ナビゲーションウィンドウから「成績照会フォームをダブルクリックして表示してください。

レコード移動ボタンが2箇所ありますね。
ひとつは親フォームのもので、「学生マスター」テーブルの中のレコードを次々表示します。

もうひとつは子フォームのほうで、こっちは今回はあんまり使わないかな・・・という感じです。
データシート形式の表ですから、わざわざレコード移動しなくても、他のレコードも見えてますし。
まあ、邪魔になるもんでもないし、こっちは使わないものと思っておいてください。
図16:レコード移動ボタンがふたつに見える!!いや、ふたつあるのさ

 

操作中では、親フォームのほうのレコード移動ボタンをクリックして、他のレコードの様子も見てみましょう。
サブフォームのデータも変わるはずなので、注目してみてください。
図17:これこれ

 

まだ、テストの点数を入力していない学生さんもいるので、サブフォームに1件も表示されないレコードもあるんですが、「実施日」には既定値プロパティによって”今日”の日付が表示されますね。
このプロパティ、結構便利なんですが、データシート形式のフォームだと、ちょっとかっこ悪いですかねえ。

なんてことを考えながら、レコード移動ボタンをクリックしてフォームの中のデータを観察してみてください。
図18:既定値プロパティ、いる?いらない?

 

操作中では、まだ一件もテストの点数を入れていない学生さんのデータを入力してみましょう。
「教科番号」のコンボボックスから、まず”国語”を選んで、適当な点数を入力してください。
点数は100点満点で無難な点でもよいですし、大きな数でもいいですよ。21兆点くらいまでなら入力できます。
いいですね。算数で1兆点とか取ってみたかったなぁ。

小数点以下の数は入力できないです。
図19:国語は何点?

 

操作中私は75点にしました。まじめなので(嘘つけ)
続けて、2行目も入力・・・「実施日」は入力しなくてもいいので、「教科番号」から”算数”を選び、点数を入力します。

5教科全部入力してみてください。入力しやすさなどはいかがですか?
図20:算数は・・・

 

操作中5教科分入力できたら、次の学生さんの点数の入力をしましょう。移動ボタンで次のレコードを表示します。親フォームのほうの移動ボタンですよ。

と、いうような感じで、学校の先生になりきって、学生さんたちの点数を入力してください。
図21:サブフォームの中身の入力が終わったら、親フォームのレコードを移動

 

長くなってきたので次のページへ!!サブフォームのコマゴマした操作はまだまだ続く!

このページのまとめなど

  • サブフォーム部分は、データシート形式がお奨め。手軽で扱いやすい。デザインはあんまり凝れないけど。
  • フォームウィザードで作ったフォームでも、プロパティの内容はいつでも確認できるようにしておこう。
作成日:2009-01-09

コピーライト