- ベストアンサー
【初心者向け】大項目から中項目への絞り込み入力方法とは?
- 初心者向けに、大項目から中項目への絞り込み入力方法をご紹介します。フォームの入力で、リストから大項目を選ぶと、自動で該当する中項目のリストが表示されます。簡単な操作で、効率的に情報を絞り込むことができます。
- 具体的な手順は以下の通りです。まず、大項目のリストを表示するテーブルを準備します。次に、各大項目に対応する中項目のリストを表示するテーブルを作成します。フォームには、大項目を選択するフィールドと中項目を選択するフィールドを配置します。大項目が選択されれば、中項目のリストが自動で表示されるようになります。
- 初心者の方でも扱いやすいシンプルな設計が特徴です。大項目から中項目への絞り込み入力を実現することで、必要な情報を的確に選択することができます。是非、お試しいただき、効率的なアクセス構築を実現しましょう!
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
コンボボックスのプロパティは大体このままで大丈夫であると思います。 me.コンボ2.requeryについては 2番目のコンボボックスのプロパティのイベントのタブの変更時のところに何か今入っていたらそれを選んで消してください。 そのあとフォーカスを変更時に充てると、▼と・・・という四角が出てきますので、・・・のほうを選択して「コードビルダ」を選んでください。 そうすると Private Sub コンボ1_Change() End Sub と出てきますので、その間に Private Sub コンボ1_Change() me.コンボ2.requery End Sub と書いて画面を閉じていただければ大丈夫です。 最初のコンボボックスの名前= コンボ1 2番目のコンボボックスの名前= コンボ2 それで試してみてください。 説明が下手で申し訳ありません。
その他の回答 (4)
すみません、肝心なことを忘れていました。 フォームの最初のコンボボックスの変更時のイベントに me.コンボ2.requery と書いておいてください。 これは最初のコンボボックスの値が変更されたときに2番目のコンボボックスのリストを読み直すためにひつようでした。 申し訳ありませんでした。
補足
ありがとうございます。もう一息のような気がしてきました^^。尚、引き続きご指導ください。 >プロパティのデータのタブで >(1)データの値集合ソースが作成したクエリになっていること。 ⇒「SELECT 中項目クエリ.中項目id, 中項目クエリ.中項目 FROM 中項目クエリ; 」私には表示内容がよく理解できません^^; >(2)列連結が中分類のIDが入っている列を指定していること。 ⇒「1」となっています。これも私には理解できません。「列連結=1」とは?左から一番目という意味ならOKです。 ★>フォームの最初のコンボボックスの変更時のイベントに me.コンボ2.requery・・・ ⇒実行時にエラーが出てしまいます^^;助けてください。 【エラーメッセージ内容】 「’me’マクロを見つけることができません。 マクロ(またはマクログループ)が存在しないか、新規マクロが保存されていません。”マクログループ名.マクロ”という構文でマクロ名を指定するときは、既存のマクログループ名を指定する必要があります。」 以上、よろしくお願いいたします。
今ちょっと作ってみましたが、私のアクセスではコントロールウイザードがちゃんと動きませんでした。 それはともかくとして、 2番目に作ったコンボボックスで以下のことを確認してください。 プロパティのデータのタブで (1)データの値集合ソースが作成したクエリになっていること。 (2)列連結が中分類のIDが入っている列を指定していること。 プロパティの書式のタブで (1)列数がクエリで選んだ列数あること (2)列幅が上記列数文確保されていること (これは最初のコンボボックスを見ると分かりますが、1cm,2.5cm,3cm のように設定します。) これをやってみてだめだったら、またご連絡ください。
テーブルとして マスタをいれる[大項目] マスタをいれる[中項目] データをいれる[データ] (仮に[データ]と名前を付けました。) みたいなものがありますでしょうか? このテーブル[データ]の項目の一つに中項目のIDを入れるフィールドを用意しておきます。 フォームを作る際は、レコードソースとしてこの[データ]テーブルを指定します。 フォーム上にまずコンボボックスを一つ配置し、大項目テーブルのレコードを表示させ、選択できるようにします。 選んだ値はあとで使用するにしておいても大丈夫ですし、[データ]テーブルに格納しても大丈夫です。 この段階で[中項目]テーブルのクエリをつくり、抽出条件にフォームの先ほどのコンボボックスの値を指定します。 フォームを実行させて、大項目を選択した後にこのクエリを実行させたときの動きを確認しておいてください。 コンボボックスにテーブル/クエリの値を表示させるためには、コントロールウィザードを使うのが楽ですのでその方法を説明します。 「テーブル/クエリの値を表示する」を選択する。 該当するクエリを選ぶ。 フィールドを選択する。 「次のフィールドに保存する」を選び、保存するフィールドを選ぶ。 これでできると思いますが、分かりにくい分で申し訳ありません。 理解できない部分はまた補足していただけたらできる限り説明いたします。
補足
お世話になります。何度も感謝申し上げます。 きっとお忙しい中のご回答を申し訳ありません。 以下、私の理解不足ならすみません。 ご指導にヒントをいただいて、「中項目」のテーブルをひとつのテーブルにまとめ、クエリにしました。 >この段階で[中項目]テーブルのクエリをつくり、 抽出条件にフォームの先ほどのコンボボックスの値を指定します。 ◆これは、「中項目クエリ」の大項目の抽出条件のところに【[Forms]![データ]![大項目id]】と入力するといいよってことなのでしょうか? ◆とりあえずやってみて、ここまではうまくできました。フォームの選んだ大項目の中の中項目がクエリで表示できます。 ◆そのあとの作業がうまくできません。フォーム「データ」の中で大項目を選んでも中項目のコンボボックスの設定がうまくできません。 ただただ私の不勉強と理解不足のためでしょうが、尚、ご指導いただけますでしょうか?よろしくお願い申し上げます。
中(小)項目のテーブルにどこの大項目に所属するのかというデータを入れておくと処理が簡単になります。 中項目のテーブルのクエリを作成し、フォーム上の大項目をいれた場所をクエリの抽出条件にいれれば、対象の中項目だけを選び出すクエリができます。 このクエリをフォーム上の中項目を選ぶコンボボックスのレコードソースとすればよいと思います。
補足
私の質問の表現ミス 中項目と小項目を統一させず、混在させて失礼しました。 ご理解通り中(小)項目です。 ご指導内容、もう少し考えて理解を深めて御礼申し上げようと思っていたのですが、あと一歩です。もう少し突っ込んだご説明をいただけますでしょうか?クエリは大筋わかります。フォームへ持って生き方のイメージ?がわかりません。よろしくお願いいたします。
お礼
お礼が遅くなりました。ありがとうございます。 できました、できました^^/ 完璧です! 何度もご指導くださいまして、心よりありがとうございます。