<HOME <お願い事項 <Access2000 TOP <Access97 TOP <サイト内検索 | ||
MS-Access2002チョ〜入門部屋>MS-Accessを使いこなすために・・ | ||
ただでさえいろいろ考えないとならなくてめんどくさい「サブフォーム」、なにせ、フォームの中にフォームがあるわけですから、フォームを二つ作らなくちゃならない。非常に面倒です。手間がかかります。なので、そういうとき、フォームウィザードを活用したいもんです。
で、ウィザードにサブフォームを作らせるために、あらかじめ「社員テーブルと労働テーブルは社員番号で結びつきます」ということを、「リレーションシップオブジェクト」というものの中に記録します。
じゃあ、やってみましょうか。
まず、メニューバー[ツール]→[リレーションシップ]をクリックしましょう。
テーブルを選ぶウィンドウが出てくるので(出てこない場合は、ツールバーの「テーブルの表示」ボタンをクリック))、「社員テーブル」と「労働テーブル」を選びましょう。1回ずつ選べばいいですからね。
選び終わったら、「テーブルの表示」ウィンドウは閉じます。
出てきたウィンドウが、「リレーションシップオブジェクト」というやつです。この「練習台弐」というmdbファイルの中にあるテーブル同士の結びつき方を記す、ちょっと特殊なオブジェクトですね。
で、選んだふたつのテーブル同士、クエリ作ったときみたいに「社員番号」で結び付いてますか?
そしたら、この結合線をダブルクリックしましょう。
(線が出てない場合は、どっちからどっちでもよいので、「社員番号」から「社員番号」にドラッグしてみてください)
こんな画面が出てきますね↓。
主キーがきちんと設定されていれば、「一対多」という表示になるはずなんですけど・・・。
リレーションシップの種類が「未定義」とかなってる場合は、お互いのテーブルの主キーがあってないというか、MS-Accessにわかってもらえてないってことなんで、これからやる操作にも影響が出ちゃいそうですけれど・・・でも、さっきクエリ作ったときちゃんと作れたのならここはちゃんと「一対多」になってると思います。
いろいろとオプションをつけることもできるんですが、今日はこれでOK。
確認だけして、OKボタンをクリックしてください。
ここまでよければ、リレーションシップオブジェクトのウィンドウを閉じて、いよいよサブフォーム作りです。
ウィザードをうまくだまして作らせます。
フォームウィザードでフォームを新規作成しましょう。
特にテーブル名などは指定しなくてよいので、フォームウィザードで作るという指示だけしてOKボタンをクリックします。
次の画面で、まず「社員テーブル」を指定しましょう。
すると、「社員テーブル」にあるフィールドが全部出てきますので、真中の>>ボタンをクリックしてこいつらをみんな右側に移します。
で、再び「労働テーブル」を選びます。
すると同じようにフィールドが全部出てくるので、それも右側に全部移動させましょう。
右側にあるフィールドは、一列に並んではいますが、「労働テーブル」「社員テーブル」のふたつのテーブルからそれぞれ選択されているフィールドです。
こうして、この画面で、リレーションシップオブジェクトで結び付けてあるテーブルふたつを選ぶと、ウィザードがうまいこと働いてくれるんです。
じゃあ、次に進みましょう。
このような画面が出てきます↓。
このフォームはどうやらサブフォームの要素があるようだけれども?と言ってきてるわけですね。
いちおう、「社員テーブル」のフィールドが外側のフォームに、「労働テーブル」のフィールドが内側のフィールドに割り当てられていることをなんとなく確認してから(By社員テーブル)、次の画面に進みましょう。
今度は、サブフォーム部分をどうするか聞いてきます。
ピボットテーブルってやつは、Access2002からの新しい機能ですね。
これはまた別の機会にお話しするとして、「表形式」か「データシートビュー」どっちかにしましょう。
どっちでもいいんですけれど・・・今日は「表形式」を選びましょうか。
次に進みましょう。
次は、フォームの大まかなデザインをパターンから選ぶようになってるんですが、今日のところは「標準」を選んでください。
で、次に進みます。
最後に、フォーム名をつける画面になるかと思います。
このままでもいいんですけれど・・・デフォルトだと、もとにしているテーブルの名前を基準にしたフォーム名になります。
ちょっと分かりにくいですが、フォームがふたつ作られます。
ひとつは普通に開いて使うもの、ひとつはそのフォームに埋め込まれる予定のフォームです。
このままでもいいんですが、なんか、フォーム名が長くなるのもなんだなぁ・・・。
わたしはこんな風にフォーム名をつけてみました。
カタカナは全角文字です。半角は使わないようにしましょう。
で、「完了」ボタンをクリックしましょう。
フォーム、できましたか?
フォームの中にフォームが埋め込まれているような状態になってるんですが・・・。
どういう構造になっているのかじっくり観察してみてください。
でもって、メインのフォームのほうのレコード移動ボタンをクリックしてみてください。
サブフォームのほうの社員番号も変わっていること、確認してください。
メインのフォームに表示している社員の労働時間などがサブフォーム内に出るようになってます。
サブフォームは表形式のフォームですね。
まあ、データシート形式でも似たようなもんなんですが・・・。
表形式のフォームのほうが見栄えよく仕上げることができそうな気がするんで、わたしはだいたい「表形式」にしています。