トップ > Access2007目次 > 練習3:納品書作成データベース(4)
1)2)3)4)5)6)7)8)9)

練習3:納品書作成データベース(4)

さあて、サブフォーム作りの後半戦です。埋め込むほうのフォームを作りますよ。

 

1子フォームを作る

操作中では・・・。子フォーム用の、「納品明細テーブル」と「商品マスター」で作ったクエリを基にしたフォームを作成します。
今回は、「表形式」という形式のフォームを作成しますので、右図を参考にしていただいて、リボン内の「複数のアイテム」をクリックしてください。
図1:複数のアイテム、って、わかりにくい名前やなぁ

 

すると、こんな感じのフォームが出来上がります。
データシートと似たような感じのフォームなんですが、もうちょっとデザインの工夫ができるので、サブフォームではこの形式のフォームも良く作られます。

私は、手軽にちゃちゃっと作りたいときはデータシート、ちょっとデザインを工夫したり、イベントを作りたいときは「複数のアイテム」って使い分けをしてます。
図2:こんな感じのフォームになりました(レイアウトビューの状態)

 

さて、どこから手をつけましょうかね・・・。
実は、今まで他のフォームを作るとき、たいてい解除していた「コントロールレイアウト」なんですけどね、この手のフォームの場合、逆に結構便利だったりするんです。

操作中デザインビューに切り替えてみましょう。
まずは、どんなデザインになっているのか、今まで作ってきたフォームとどのあたりが違うか、じっくり観察してみてください。
図3:ラベルがヘッダー部分にあるんだな

 

操作中フォームヘッダー部分のラベルとアイコン画像、今回は要らないので、削除しちゃいましょう。クリックしてひとつだけ選択した状態で、Deleteキーを押せば消えます。
図4:ヘッダー部分の見出しっぽいやつは要らないや

 

操作中ヘッダー部分のラベル(テキストボックスと対になっているもの)をそっとドラッグして、ヘッダーの上の方に移動させましょう。
コントロールレイアウトでグループ化されているので、どれかひとつを選択してそっとドラッグすれば、全部移動しますよ。
図5:上の方が空いたから、移動させよう

 

操作中フォームヘッダーを狭めて、無駄なスペースをなくしましょう。
右図を参考にしていただきつつ、境界線部分をそっとドラッグします。マウスポインタの形が、ポイントですよ。
図6:マウスポインタの形を良く見るんだ!

 

操作中次に、詳細セクションのテキストボックスの高さも、少し狭めましょう。こんなに大きくなくても十分ですよね。
右図を参考にしていただきながら、テキストボックスをどれかひとつ選択し、下辺をそっとドラッグして大きさを調整してください。
マウスポインタの形に注意してくださいね。
図7:マウスポインタの形に注意するべし

 

操作中さらに、詳細セクションの境界線もドラッグして、高さを調整しましょう。
マウスポインタの形に注目です。
図8:この形は、セクションの境界線をドラッグするときの形だ

 

操作中テキストボックスの横幅も、もうちょっと狭くてもよさそうな感じなので、調整してください。
コントロールレイアウトってことでグループ化されているので、テキストボックスの幅を調整すれば、対となるラベルの幅も揃います。このタイプのフォームの場合は、コントロールレイアウト、なかなか有意義です。
Access2003以前では、こういうタイプのフォームのデザイン調整がちょいと面倒だったんですよ。
図9:テキストボックスの幅も調整しよう

 

操作中フォームに名前をつけて保存しましょう。名前は何でもいいですが、後でわかりやすいものにしてください。

このフォームを、前のページで作ったフォームの中に埋め込みますからね。
図10:名前をつけて保存する

 

操作中フォームビューに切り替えてみて、最終チェックを・・・・。うーん、私の画面だけかもしれないですが、なんか、余計な線が入ってるような気がするんですよね・・・。
気にしなければよいことではありますが・・・。
図11:背景画像、だろうか・・・

 

これはおそらく、この手のフォームの基本的なデザインなんでしょうな。このままでもいいんですが、私は、他のフォーマットに変えてみようかなと思いました。
操作中レイアウトビューに切り替えて、オートフォーマットから、よりシンプルっぽいデザインを選びます。
図12:気が向いたら、フォーマット変更やってみてください。

 

ちょっとすっきりしたかな。すごくわずかな変化ですけどね。。。あ、それと、ヘッダー部分の各ラベル、文字が右によってたりしてません?数値型のフィールドの場合、ラベルも右寄せになるんですよね。
操作中これもちょっと気になるので、全部中央に寄せよう。ラベル部分をどこかクリックして選択します。
図13:細かいとこですんで、気が向いたらやってみて

 

操作中リボンの左のように、「フォント」というくくりのボタン群があり、その中に文字寄せを指定するボタンがあります。他のソフトでも良く見かけますよね。これ。
中央に寄せるボタンをクリックしましょう。
図14:中央に寄せるためのボタンだ

 

ラベルの中の文字が真ん中に寄りましたよね。この方が見出しっぽくていいんじゃないかと思います。
図15:真ん中に寄ったがね

 

あれ・・・気がつかなかった・・・。私の画面だと、テキストボックスというか、フィールドの並び順が、「金額」の次に「数量」ってなってました。これでも何とかなりますが、「数量」「金額」って並び方のがいいなぁ・・・。

操作中列の入れ替えも簡単にできますよ。右図を見ていただいて、入れ替えたいコントロールをクリックして選択し、縁にマウスポインタを重ねて、形が十文字っぽい形になったところでそっとドラッグします。
図16:マウスポインタの形、とっても重要アルよ

 

操作中ラベルとテキストボックスが対の状態で、いっしょに移動してくれます。
まさにコントロールレイアウト様様、であります。

他にも、いろいろ手を加えたくなるところですが・・・今日はこの辺にしまして、フォームを上書き保存して、閉じてください。
図17:おおー

 

1子フォームを親フォームに埋め込む

操作中「納品書フォーム」(親フォーム)をデザインビューで開きます。
ナビゲーションウィンドウから「納品書フォーム」を右クリックすれば、デザインビューで開くことができますね。
図18:いよいよだ

 

操作中親フォームの空いている場所に、子フォームをナビゲーションウィンドウからドラッグします。
位置や大きさは後から調整できますから、とにかく思い切ってドラッグしてみてください。
図19:どーん

 

フォーム上に何かできましたね。これが、埋め込まれた子フォームです。 正体はフォームですが、親フォームから見れば、テキストボックスやラベルと同じ、コントロールの一種です。
フォームウィザードでサブフォームを作ったときはあまり実感が湧かなかったかもしれませんが、こうして手作りしてみると、親フォームとの関係をより実感していただけるのではないかと思います。

操作中右図を参考にしていただきながら、埋め込まれた子フォームをドラッグして移動させ、位置を調整してください。移動は、テキストボックスを移動させるときと同じ感覚です。マウスポインタの形も、同じですよ。
図20:移動しよう

 

操作中さらに、大きさも調整しましょう。
子フォーム全体が表示できる大きさに広げます。また、高さもある程度あったほうがいいですね。4~5行は表示できたほうが見やすいんじゃないかなと思います。

位置や大きさは、いつでも調整できますから、今慌てて広げなくても、後で様子を見ながら微調整してもOKです。
図21:大きさを調整しよう

 

操作中さらに、この子フォーム部分が選択されている状態で、プロパティシートを出してみましょう。
実は、ウィザードじゃなくて今の方法でサブフォームを作ったとき、一箇所、設定を確認しておかなければならないところがあるんです。コレがちゃんとしてないと、サブフォームとして正しく機能しないんですよ。

「データ」タブをクリックし、「リンク親フィールド」「リンク子フィールド」という3つのプロパティを見てください。
図22:リンク親フィールド、子フィールド

 

操作中どっちも空っぽですよね・・・このままだと、二つのフォームは連動しないんです。そこで・・・
図23:「リンク親フィールド」と「リンク子フィールド」ですって?

 

操作中右図のように、どちらかのプロパティをクリックして、右端に表示されるビルドボタンをクリックしましょう。
親フォーム、子フォームの関係を設定するための画面が出てきます。

二つのフォームは、「伝票番号」で結びつきます。あらかじめリレーションシップを作成してあるので、たぶん、自動的にフィールド名が表示されていると思いますが、念のため確認してください。
良ければ、OKボタンをクリックします。
図24:この設定ができてないと、意味無いのよ

 

サブフォームの大枠ができました。チョット面倒ですが、ウィザードを使わなくてもサブフォームを作ることはできるんですよ。
では、この出来立てほやほやサブフォーム、さらにもう少し、デザインなど整えつつ調整していきましょう。

このページのまとめなど

  • 表形式のフォームとは、「複数のアイテム」という別名を持つ。1行に1レコードで、複数行を表示できるタイプのフォーム。
  • 表形式のフォームは、コントロールレイアウトをうまく利用してデザインの調整を行うと良いよ。
  • サブフォームを作るには、親フォームに子フォームをドラッグ&ドロップ。簡単です。
  • リンク親フィールド/リンク子フィールド このプロパティの確認を忘れてはなりませんぞ。
Next Step!!!
作成日:2009-1-27

コピーライト