フォーム 基本的なサブフォームの例(連結フォーム) [フォーム]
サブフォームを使うと、フォームの中に別のフォームを表示させることができます。
メインフォーム側に表示されているデータに関連した内容を表示させたり、状況によってサブフォームの内容を切り替えたりと、様々な使い方ができます。
今回は、ACCESSの最もサブフォームらしい例を紹介します。
親フォームは、関東地方・中部地方と言った地方の名称が表示されるようになっています。
サブフォームには、親フォームに表示されている地方に属する都道府県が表示されます。
データ連結フォームにおいて、サブフォームのリンク設定を行った場合、特にプログラムを書かなくても、こういった動作をさせることができます。
使用するデータは以下の通り。
TMCHIHO(地方)テーブルが親フォームの表示内容です。
TMTDFK(都道府県)テーブルがサブフォームの表示内容です。
(都道府県テーブルには他にも項目がありますが、今回の例では使用しません。)
まず最初に、都道府県一覧のサブフォームの方から作成します。
「作成」タブから「フォームデザイン」をクリックし、新しいフォームを表示させます。
フォームヘッダーを使用するので、表示させておきます。
適当な場所で右クリックし、出てきたメニューから、「フォームヘッダー/フッター」をクリックします。
フォームヘッダーとフッターが表示されます。
今回フォームフッターは使わないので、縮めています。
サブフォームは帳票フォームにします。
左上の四角い所を一度クリックすると、黒いポチが現れます。
その状態で「デザイン」タブの「プロパティシート」をクリックすると、プロパティシートが表示されます。
プロパティシートの「書式」タブにある「規定のビュー」項目を、「帳票フォーム」に設定します。
次に、フォームに表示させるデータを設定します。
フォームのプロパティ(フォームの右上に黒いポチが表示されている状態でプロパティシートを表示させる)で、「データ」タブにある「レコードソース」項目を選択し、右側に表示される「…」をクリックします。
クエリビルダーが表示されます。
「テーブルの表示」ウィンドウでTMTDFK(都道府県テーブル)をクリックし、「追加」ボタンをクリックします。
下に表示されているクエリビルダーに、TMTDFKテーブルの内容が表示されます。
「閉じる」ボタンをクリックして、「テーブルの表示」を閉じます。
クエリビルダーで表示項目を設定します。
画面上半分のテーブル項目から「CHIHOCD(地方コード)」「TDFKCD(都道府県コード)」「TDFKMEI(都道府県名)」を、画面下半分にドラッグ&ドロップします。
TDFKCDの列の「並べ替え」に「昇順」を設定します。
設定が終わったら、右上のばつボタンをクリックして、クエリビルダーを終了します。
フォームデザインの画面に戻ります。
画面にデータ表示用のコントロールを配置します。
「デザイン」タブにある「既存のフィールドの追加」アイコンをクリックします。
「フィールドリスト」ウィンドウが表示されます。
表示された項目一覧から、「TDFKCD」項目をクリックし、「詳細」の場所へドラッグ&ドロップします。「TDKMEI」も同様に行います。
もし、ドラッグ&ドロップしたときに、テキストボックスに「SELECT…」という内容が表示されていたら、これはACCESSのバグなので、一度コントロールを削除して、再度ドラッグ&ドロップして下さい。
これが正しい状態です。
ラベルの名称を変更しておきます。
・TDFKCD->CD
・TDFKMEI->名称
そして、ラベルをヘッダーに移動します。ドラッグでは「詳細」から別の場所に移動できないので、カット&ペーストします。
コントロールの配置を調整し、体裁を整えます。
だいたいこんな感じで。
フォームビューで見ると、こんなふうになります。
その他のフォームの設定をしておきます。
フォームのプロパティで、「データ」タブにある「追加の許可」「削除の許可」「更新の許可」項目を、すべて「いいえ」に設定します。
このフォームではデータの操作ができないようにします。
続いて、フォームのプロパティで、「書式」タブにある「移動ボタン」項目を、「いいえ」に設定します。
フォームビューで画面最下部に表示されるレコード件数や、移動ボタンが表示されなくなります。
以上でサブフォームはできあがりです。
「F都道府県サブ」という名前を付けて保存し、閉じます。
次は親フォームを作ります。
先程と同様に、「作成」タブから「フォームデザイン」をクリックし、新しいフォームを表示させます。
親フォームは「単票フォーム」で作成します。
デフォルトで単票フォームになっていると思いますが、いちおう確認します。
フォームのプロパティで、「書式」タブにある「規定のビュー」項目が、「単票フォーム」になっていればOKです。
フォームに表示させるデータを設定します。
フォームのプロパティで、「データ」タブにある「レコードソース」項目を選択し、右側に表示される「…」をクリックします。
クエリビルダーが表示されます。
「テーブルの表示」ウィンドウでTMCHIHO(地方テーブル)をクリックし、「追加」ボタンをクリックします。
下に表示されているクエリビルダーに、TMCHIHOテーブルの内容が表示されます。
「閉じる」ボタンをクリックして、「テーブルの表示」を閉じます。
クエリビルダーで表示項目を設定します。
画面上半分のテーブル項目から「CHIHOCD(地方コード)」「CHIHOMEI(地方名)」を、画面下半分にドラッグ&ドロップします。
CHIHOCDの列の「並べ替え」に「昇順」を設定します。
設定が終わったら、右上のばつボタンをクリックして、クエリビルダーを終了します。
フォームデザイン画面に戻ります。
画面にデータ表示用のコントロールを配置します。
「デザイン」タブにある「既存のフィールドの追加」アイコンをクリックします。
「フィールドリスト」ウィンドウが表示されます。
表示された項目一覧から、「CHIHOCD」項目をクリックし、「詳細」の場所へドラッグ&ドロップします。「CHIHOMEI」も同様に行います。
この時もバグに気をつけてください。
配置した状態です。
ラベルの名称を変更しておきます。
・CHIHOCD->地方CD
・CHIHOMEI->地方名称
そして、配置を調整して、体裁を整えました。
サブフォームコントロールをフォームに配置します。
「デザイン」タブの「コントロール」から、サブフォームのアイコンをクリックします。
その後、「詳細」の領域の適当な場所で、クリック&ドラッグして四角を描きます。
「サブフォーム ウィザード」が表示される場合がありますが、今回は使わない手順で説明します。
「キャンセル」ボタンをクリックして閉じてください。
フォームにサブフォームが配置されました。
サブフォームの設定を行います。
サブフォームが選択された状態で、「デザイン」タブの「プロパティシート」アイコンをクリックして、プロパティを表示させます。
プロパティシートの「データ」タブにある、「ソースオブジェクト」項目の「▼」をクリックして「F都道府県サブ」を選択します。
サブフォームの枠の中に、先程作成した「F都道府県サブ」の内容が表示されます。
親フォームとサブフォームの関連づけ行います。
サブフォームをクリックして選択された状態にして、サブフォームのプロパティを表示させます。
プロパティの「データ」タブにある、「リンク親フィールド」項目の「…」をクリックします。
※注意
サブフォームのプロパティを表示させるとき、選択されていることを示す枠がサブフォームに表示されていることを確認してください。
サブフォームが選択された状態で、さらにサブフォームをクリックすると、下図のようにサブフォームの中が選択された状態になりますので、気をつけてください。
「サブフォーム フィールド リンク ビルダー」ウィンドウが表示されます。
デフォルトで画面のように設定されて表示されると思いますが、そうでない場合は、親フィールド・子フィールドを画面のように設定してください。
設定内容が良ければ「OK」をクリックします。
プロパティの「リンク親フィールド」「リンク子フィールド」に先程の内容が設定されました。
最後に体裁を整えます。
サブフォームの位置の調整と、サブフォームのラベルは要らないので削除します。
また、親フォームのレコードセレクタは表示させたくないので、フォームのプロパティで、「書式」タブにある「レコードセレクタ」項目を「いいえ」に設定します。
以上でできあがり。フォームビューに切り替えます。
画面下の移動ボタンでレコードを移動すると、親フォームに表示されている地方にあわせて、その地方の都道府県がサブフォームに表示されます。
サブフォームのリンク設定により、サブフォームの内容が自動で絞り込まれています。
親フォーム・子フォームともに連結フォームの場合は、このようなサブフォームの使い方ができます。
私の場合は、フォームではあまりこの方法は使いません。レポートのサブフォームではよく使います。
以上でお終いです。
最後に、親フォームに「F都道府県」と言う名前をつけて保存して終了です。
リンク設定を使用しないサブフォームの例はこちら。
・フォーム コンボボックスで選択された内容でサブフォームの内容を絞り込む
コメント 0