So-net無料ブログ作成
検索選択

フォーム コンボボックスで選択された内容でサブフォームの内容を絞り込む [フォーム]

 分類をフォーム(サブフォーム関連なので)にするか、コンボボックスにするか迷いましたが、先に書いたサブフォームの記事の関連になるので、同じ分類のフォームにしました。
フォーム 基本的なサブフォームの例(連結フォーム)
 今回は親フォームが連結フォームではなく、サブフォームのリンク設定を使わない、サブフォームの使用例を取り上げます。

 画面はこんな感じ。

 地方CDコンボボックスを変更すると、サブフォームの都道府県一覧が絞り込まれます。
 画面は似ていますが、前回とは以下の点が異なります。

・前回は親フォーム・サブフォームともに連結フォームでしたが、今回親フォームは非連結フォームです。

・前回は親フォームのレコード移動にあわせて、サブフォームの内容が自動で絞り込まれましたが、今回はコンボボックスのイベントに処理を作成します。

・前回はサブフォームのリンク設定を使用しましたが、今回はこの機能を使用しません。

 以下手順です。前回と重複する部分がかなりありますが、手順通り載せます。

 使用するデータは以下の通り。

 TMCHIHO(地方)テーブルが親フォームの表示内容です。   
 TMTDFK(都道府県)テーブルがサブフォームの表示内容です。
 (都道府県テーブルには他にも項目がありますが、今回の例では使用しません。)

 まず最初に、都道府県一覧のサブフォームの方から作成します。
 「作成」タブから「フォームデザイン」をクリックし、新しいフォームを表示させます。

 フォームヘッダーを使用するので、表示させておきます。
 適当な場所で右クリックし、出てきたメニューから、「フォームヘッダー/フッター」をクリックします。
 フォームヘッダーとフッターが表示されます。

 今回フォームフッターは使わないので、縮めています。

 サブフォームは帳票フォームにします。

 左上の四角い所を一度クリックすると、黒いポチが現れます。
 その状態で「デザイン」タブの「プロパティシート」をクリックすると、プロパティシートが表示されます。
 プロパティシートの「書式」タブにある「規定のビュー」項目を、「帳票フォーム」に設定します。

 次に、フォームに表示させるデータを設定します。

 フォームのプロパティ(フォームの右上に黒いポチが表示されている状態でプロパティシートを表示させる)で、「データ」タブにある「レコードソース」項目を選択し、右側に表示される「…」をクリックします。

 クエリビルダーが表示されます。
 「テーブルの表示」ウィンドウでTMTDFK(都道府県テーブル)をクリックし、「追加」ボタンをクリックします。
 下に表示されているクエリビルダーに、TMTDFKテーブルの内容が表示されます。
 「閉じる」ボタンをクリックして、「テーブルの表示」を閉じます。

 クエリビルダーで表示項目を設定します。
 画面上半分のテーブル項目から「CHIHOCD(地方コード)」「TDFKCD(都道府県コード)」「TDFKMEI(都道府県名)」を、画面下半分にドラッグ&ドロップします。
 TDFKCDの列の「並べ替え」に「昇順」を設定します。
 設定が終わったら、右上のばつボタンをクリックして、クエリビルダーを終了します。
 このクエリの内容は、親フォームを作るときに、修正をして最終形にします。

 フォームデザインの画面に戻ります。
 画面にデータ表示用のコントロールを配置します。

 「デザイン」タブにある「既存のフィールドの追加」アイコンをクリックします。
 「フィールドリスト」ウィンドウが表示されます。
 表示された項目一覧から、「TDFKCD」項目をクリックし、「詳細」の場所へドラッグ&ドロップします。「TDKMEI」も同様に行います。

 もし、ドラッグ&ドロップしたときに、テキストボックスに「SELECT…」という内容が表示されていたら、これはACCESSのバグなので、一度コントロールを削除して、再度ドラッグ&ドロップして下さい。

 これが正しい状態です。
 ラベルの名称を変更しておきます。
・TDFKCD->CD
・TDFKMEI->名称
 そして、ラベルをヘッダーに移動します。ドラッグでは「詳細」から別の場所に移動できないので、カット&ペーストします。
 コントロールの配置を調整し、体裁を整えます。

 だいたいこんな感じで。

 フォームビューで見ると、こんなふうになります。

 その他のフォームの設定をしておきます。

 フォームのプロパティで、「データ」タブにある「追加の許可」「削除の許可」「更新の許可」項目を、すべて「いいえ」に設定します。
 このフォームではデータの操作ができないようにします。

 続いて、フォームのプロパティで、「書式」タブにある「移動ボタン」項目を、「いいえ」に設定します。
 フォームビューで画面最下部に表示されるレコード件数や、移動ボタンが表示されなくなります。

 以上でサブフォームはできあがりです。

 「F都道府県コンボサブ」という名前を付けて保存し、閉じます。
 この辺までは前回と同じです。

 次は親フォームを作ります。
 先程と同様に、「作成」タブから「フォームデザイン」をクリックし、新しいフォームを表示させます。

 親フォームは「単票フォーム」で作成します。
 デフォルトで単票フォームになっていると思いますが、いちおう確認します。
 フォームのプロパティで、「書式」タブにある「規定のビュー」項目が、「単票フォーム」になっていればOKです。

 今回親フォームは非連結フォームで作成します。

 フォームのプロパティで、「データ」タブにある「レコードソース」項目が、空欄になっていることを確認してください。

 画面にコンボボックスを配置します。

 「デザイン」タブにあるコントロールのアイコンから、コンボボックスをクリックします。
 詳細の適当な場所をドラッグして、コンボボックスを作成します。
 このとき、ウィザードが表示された場合は、キャンセルをクリックしてウィザードを閉じてください。

 コンボボックスの設定を行っていきます。
 コンボボックスをクリックして選択し、プロパティの「データ」タブにある「値集合ソース」を選択し、右側に表示される「…」をクリックします。

 クエリビルダーが表示されます。
 「テーブルの表示」ウィンドウでTMCHIHO(地方テーブル)をクリックし、「追加」ボタンをクリックします。
 下に表示されているクエリビルダーに、TMCHIHOテーブルの内容が表示されます。
 「閉じる」ボタンをクリックして、「テーブルの表示」を閉じます。

 クエリビルダーで表示項目を設定します。
 画面上半分のテーブル項目から「CHIHOCD(地方コード)」「CHIHOMEI(地方名)」を、画面下半分にドラッグ&ドロップします。
 CHIHOCDの列の「並べ替え」に「昇順」を設定します。
 設定が終わったら、右上のばつボタンをクリックして、クエリビルダーを終了します。

 続いてコンボボックスのプロパティを設定します。

 「書式」タブの、「列数」を「2」に、「列幅」を「1cm;2cm」に設定します。
 また、ラベルの表示を「地方CD」に書き換えます。

 「その他」タブの、「名前」を「CHIHOCD」に設定します。

 次に、コンボボックスで選択された地方CDの名称を、表示させるテキストボックスを作成します。

 「デザイン」タブにあるコントロールのアイコンから、テキストボックスをクリックします。
 詳細の適当な場所をドラッグして、テキストボックスを作成します。
 このとき、ウィザードが表示された場合は、キャンセルをクリックしてウィザードを閉じてください。

 テキストボックスのプロパティの「データ」タブにある、「コントロールソース」項目に、
=[CHIHOCD].[Column](1)
 を、設定します。
 また、ラベルの表示を「地方名称」に書き換えます。
 あと、配置を調整して、体裁を整えます。

 サブフォームコントロールをフォームに配置します。

 「デザイン」タブの「コントロール」から、サブフォームのアイコンをクリックします。
 その後、「詳細」の領域の適当な場所で、クリック&ドラッグして四角を描きます。
 「サブフォーム ウィザード」が表示される場合がありますが、「キャンセル」ボタンをクリックして閉じてください。

 フォームにサブフォームが配置されました。

 サブフォームの設定を行います。

 サブフォームが選択された状態で、「デザイン」タブの「プロパティシート」アイコンをクリックして、プロパティを表示させます。
 プロパティシートの「データ」タブにある、「ソースオブジェクト」項目の「▼」をクリックして「F都道府県コンボサブ」を選択します。
 サブフォームの枠の中に、先程作成した「F都道府県コンボサブ」の内容が表示されます。

 サブフォームの名前を変更します。
 プロパティシートの「その他」タブにある、「名前」の内容を、「subTDFK」に変更します。

 サブフォームの位置の調整をし、サブフォームのラベルは要らないので削除します。

 また、親フォームのレコードセレクタは表示させたくないので、フォームのプロパティで、「書式」タブにある「レコードセレクタ」項目を「いいえ」に設定します。
 ここで親フォームはいったん閉じます。

 「F都道府県コンボ」という名前を付けて保存します。

 再度、「F都道府県コンボサブ」フォームをデザインビューで開きます。

 フォームのプロパティで、「データ」タブにある、「レコードソース」項目を選択し、右側に表示される「…」をクリックします。

 クエリビルダーが表示されます。
 CHIHOCD列の「抽出条件」を選択し、右クリックで表示されるメニューから「ビルド」をクリックします。

 式ビルダーが表示されます。
 「式の要素」から、「forms」を展開し、表示された「すべてのフォーム」を展開します。
 さらに表示された「F都道府県コンボ」をクリックします。
 「式のカテゴリ」に表示された項目から、「CHIHOCD」をダブルクリックします。
 上の領域に
Forms![F都道府県コンボ]![CHIHOCD]
 が表示されます。
 「OK」をクリックして、式ビルダーを閉じます。

 式ビルダーで設定した内容が、抽出条件に設定されます。
 (式ビルダーを使用せず、直接入力しても、もちろんOKです)
 右上のばつボタンをクリックして、クエリビルダーを終了します。
 F都道府県コンボサブを保存して閉じます。

 再び「F都道府県コンボ」フォームをデザインビューで開きます。

 コンボボックスのプロパティで、「イベント」タブにある、「更新後処理」項目を選択し、右側に表示される「…」をクリックします。

 「ビルダーの選択」が表示されるので、「コードビルダー」を選択して、「OK」をクリックします。

 VBA画面が表示されます。

Private Sub CHIHOCD_AfterUpdate()
 と、
End Sub
 の間に、
Me.subTDFK.Requery
 を、記述します。

 コードを記述したら、右上のばつボタンでVBA画面を閉じて、ACCESSに戻ります。

 以上でできあがり。「F都道府県コンボ」をフォームビューで表示させます。

 最初はこんな風に表示されます。
 コンボボックスで地方を選択すると、

 サブフォームの内容が選択した内容で絞り込まれます。

 ユーザーが画面を操作して、表示されるデータを絞り込むフォームを作る場合は、このような形がベースになるんじゃないかと思います。
 前回のサブフォームのリンク設定を使った作り方では、サブフォームの表示内容は親フォームのレコードに連動する形になるので、ユーザーが操作して絞り込みを行う画面には向いていないと思います。
 私の場合、フォームでは今回のようなサブフォームの使い方が多く、前回のリンク設定を使うやり方は、レポートでよく使います。

 以上でお終いです。

 さて、蛇足。
 今回作成した画面、地方CDが選択されていないと、サブフォームには何も表示されません。
 できれば地方CDが選択されていないときは、絞り込みなしで全件表示させたいな、と言う場合もあると思います。
 それはまた今度。



【2万円から3万円の、格安ホームページ作成サービス】

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

nice! 0

コメント 0

コメントを書く

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

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

トラックバック 0

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