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



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

メインフォームと関係ないサブフォーム・・・・。

と、いうのも可能です。
これもいろいろ応用が利くと思いますので、まずは仕組みを理解してしまいましょう。

まずは、双方ぜんぜん関係なさそうなテーブルをふたつ作りましょう。

このふたつは、どう考えてもどうにもリレーションシップを設定するわけにいかないテーブルですよね。
お客さん番号としなもの番号結び付けても何にもならないですよね。まさか、やろうとしてました??
だめですよ。やみくもにリレーションシップを設定するくらいなら、しない方がましです。

で、このふたつのテーブルを基にするフォームを、ひとつずつ作ります。

フォームはどんなのでもいいんですけど、あたしは、「お客テーブル」の方は単票形式で、「しなものてーぶる」の方は表形式で作ってみました。
名前はなんでもいいです。でも、なんだかわかんなくなっちゃったってのは、なしですよ。

双方とも、適当にテキストボックスの配置とかプロパティとか、いじってみてください。お任せします。


で、もうひとつフォームを作ります。今度は、いわゆる「無地フォーム」。
メニューとか作るとき、レコードソースにするテーブルをぜんぜん設定しないフォーム、作りましたよね。
ただのねずみ色のフォーム。あれです。

で、上の図のように、うまくデータベースウィンドウと重ねあわせて、いまし方作ったふたつのフォームをドラッグします。
ちょっとコツが入りますけど、とにかくやってみてください。いいからいいから。

無地のフォームの中に、とりあえずサブフォームコントロールができます。白い、大きい四角ができると思います。
中にテーブルの名前が入ってますよね。これがサブフォームコントロール。実際にはフォームが埋め込まれることになる場所です。

ドラッグしただけだと、場所も大きさもいまいちなんで、うまくマウスを使って移動させ、形よく配置してください。

で、フォームビューにひっくり返して、様子を見てみましょう。どうです?ちゃんと表示されます?
サブフォームコントロールをあんまり小さくしてしまうと、その中にフォームそのものを表示しきれなくなっちゃうので・・・。
フォームビューとデザインビューをいったりきたりしながら調節してください。

と、これで、メインフォームとは関係ないフォームを埋め込むことができるってこと、おわかりいただけました?
今日はふたつだけでしたけど、スペースが許せばいくつでもフォームを埋め込むことができますよ。
と同時に、こうやって作れば、ぜんぜん違うレコードソースを持つフォームを同時に表示することだってできるわけです。
どうでしょう。何かに使えそうですか?


デザインビューの状態で、サブフォームコントロール部分のプロパティを見てみると、メインフォームとどういうふうに結びつくのか、結びつきを見ることができます。
リンク親/子フィールドというプロパティです。

ここが空っぽということは、メインフォームとこの部分に埋め込まれてるのサブフォームとは、なんの関連もなく連動しないよ、という意味ですね。

試しに入力してみても、かたっぽになんか入力したからって、メインフォームにはなにも変化がないし、もうひとつのフォームの方にも何の変化も見られないですよね。
つながりがないですからね。


もし、メインフォームとサブフォームが基にしているテーブル同士が、リレーションシップオブジェクトの中で結びついていたとしたら、このプロパティには両方のテーブルを結び付けるフィールド名が入っているはずです。