SSブログ

フォーム 基本的なサブフォームの例(連結フォーム) [フォーム]

 サブフォームを使うと、フォームの中に別のフォームを表示させることができます。
 メインフォーム側に表示されているデータに関連した内容を表示させたり、状況によってサブフォームの内容を切り替えたりと、様々な使い方ができます。
 今回は、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都道府県」と言う名前をつけて保存して終了です。

 リンク設定を使用しないサブフォームの例はこちら。
フォーム コンボボックスで選択された内容でサブフォームの内容を絞り込む


nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。
※URL(リンク)は記述できません。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。