コンボボックスの連動による選択肢の表示方法

このQ&Aのポイント
  • コンボボックスを使用して選択した内容に応じて関連するコンボボックスの選択肢を表示する方法について質問です。
  • 例えば、コンボボックスAの選択肢を変更すると、コンボボックスBに表示される選択肢も変更されるようにしたいです。
  • 具体的な例として、コンボボックスAで書類1を選択すると、コンボボックスBには提出先1と提出先2が表示されるようにしたいです。
回答を見る
  • ベストアンサー

コンボボックス

コンボボックスから選択した内容によってそれに関するコンボボックスの内容を変えたいと思っています。 例えば コンボボックスA 書類1  分類a 書類2  分類a 書類3  分類b 書類4  分類c コンボボックスB 提出先1  分類a 提出先2  分類b 提出先3  分類b 提出先4  分類c と言う風になっているのですが、 コンボボックスAの書類1を選択したらコンボボックスB と共通の分類の提出先名がコンボボックスに表示したいのです。 書類3を選択すると、コンボボックスBには提出先2、提出先3が表示されるといった感じです。 ACCESS2000を使用しています。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tutty2
  • ベストアンサー率53% (7/13)
回答No.5

できました。 1.まず、「Q_提出先」を次のように変更してください。 T_提出先とT_書類を分類でリレーションします。 グリッドの1番目に提出先を2番目に書類(非表示)を設定します。 書類の抽出条件に[Forms]![フォーム名]![コンボボックスA]と入れます。(これは以前と同じ構文です) 2.コンボボックスAのプロパティを次のように変更します。  値集合ソース:T_書類(これは以前のまま)  列数:1  列幅:セミコロンで区切られていくつかあれば、1つ分のみの設定にします。  連結列:1  更新後処理:マクロは以前のまま 3.コンボボックスB  値集合ソース:Q_提出先(これも以前のまま)  列数:1  連結列:1 これで、t-tomoさんの思ったとおりになると思います。

t-tomo
質問者

お礼

出来ました!! 半分あきらめかけていたのでとっても感激しています。 朝から夜までほぼ一日この質問にお付き合い頂いて感謝しています。 どうもありがとうございました。

その他の回答 (4)

  • tutty2
  • ベストアンサー率53% (7/13)
回答No.4

これは、ACCESSとかVBとかの問題ではなく、DBの作り方の問題なんです。 二つのコンボボックスを連結させる場合、大分類を選択し、次に小分類を選択することになりますよね。 今回の例の場合、大分類が「分類」で、「書類」と「提出先」は、それぞれ「分類」の小分類になっているわけです。 つまり、並列の小分類同士を関連付けようとしているところに無理があるということなので、データベースの構造を見直さないとならないと思います。 苦肉の策として、書類と提出先を分類でリレーションしたクエリーを作り、それをコンボボックスBの値集合ソースに設定し、コンボボックスAで分類を選択するとコンボボックスBに書類と提出先を組み合わせた一覧を表示させ、該当する組み合わせを選択することは可能です。 しかし、この場合でも、保存できる値は書類か提出先の1つになってしまいます。 いずれにせよ、コンボボックスの絞込みは最初の回答のとおりですから、あとは大分類、小分類という関係のDBをどう作るかという話ですね。

  • tutty2
  • ベストアンサー率53% (7/13)
回答No.3

現象がわかりました。 これは、コンボボックスAの検索キーが分類フィールドとなっており、分類aが重複しているためです。 このテーブルを見たときに気になったのが、検索キーに重複データがある点でしたが、やはりそれがネックのようです。 普通、この場合は検索キーはユニーク(一意)なものにするので、分類テーブルを作り(構造は分類IDと分類)、「T_提出先」の「分類」フィールドの変わりに「分類ID」フィールドとし、この「分類ID」をキーに検索(コンボボックスBの絞込み)を行います。 つまり、コンボボックスAの値集合ソースは「T_分類」に変更するということです。 ユニークであれば「T_分類」に分類IDを設けなくても「分類」1列大丈夫だと思います。この方がT_提出先を修正する必要がないですね。 ただ、こうすると書類が関係なくなってしまいますけど問題ありますか?

t-tomo
質問者

補足

そういう事なのですか… 書類と提出先は必須項目なので関係なくなってしまっては困るので、ちょっと担当者と話し合ってみる事にします。 初心者ではありますが、少しだけならばVBAは分かりますが、VBAでは無理なのでしょうか? やっかいな質問に長い間、お付き合い頂いて本当に申し訳ありません。

  • tutty2
  • ベストアンサー率53% (7/13)
回答No.2

コンボボックスAで書類2を選択してもコンボボックスAが書類2と表示されずに書類1のまま変わらないということでしょうか? コンボボックスAの更新処理後プロパティに設定したマクロの再クエリーはコンボボックスBを指定してありますよね? コンボボックスAは、単にテーブルの値を表示しているだけなので選択した値が表示されるはずなんですが。 別のコンボボックスを作って、連結は無しで値集合ソースを「T_書類」とした場合はどうでしょうか?ちゃんと書類2が選択できますか?それができれば、それと同じことなんですけどね。 蛇足ですが、コンボボックスAのプロパティ「列幅」の2列目の値を0cmにすると、分類の項目は表示されなくなります。

t-tomo
質問者

補足

書類1  分類a 書類2  分類a 書類3  分類b 書類4  分類b 書類5  分類c 書類1を選択すると書類1 書類2を選択しても書類1 書類3を選択すると書類3 書類4を選択しても書類3 というように、分類されている中で先頭のものしか表示されていないようなのですが… もしかして書類テーブルには書類番号というのも存在していますが、連結は分類にしてあります。 これは関係ないのでしょうか? 非連結のコンボボックスを作成しましたが、同じ事になりました。

  • tutty2
  • ベストアンサー率53% (7/13)
回答No.1

アクセス97を使っていますが、2000でも同じだと思うので回答します。 アクセス97を使っていますが、2000でも同じだと思うので回答します。 コンボボックスAに表示する元になるテーブルを「T_書類」、Bを「T_提出先」とします。 1.まず、コンボボックスAのプロパティの値集合ソースに「T_書類」を指定します。 さらにプロパティの列数に「2」、連結列に「2」を入力します。 列数の「2」は、書類と分類の両方をコンボボックスに表示させるためです。T_書類の作りからこうしないと使いづらいです。 連結列の「2」は、「T_書類」の「分類」フィールドを指定していることになります。「書類」が1で「分類」が2ということです。 2.次にBの値集合ソースに使うクエリーを例えば「Q_提出先」とし、元になるテーブルは「T_提出先」で表示させるフィールドは「提出先」、さらに、非表示フィールドで「分類」を作成し、その抽出条件として[Forms]![フォーム名]![コンボボックスA]とします。 このクエリーは、コンボボックスの値集合ソースでクエリービルダーを起動しても作成できますが、クエリーとして作成したものを指定する方が何故かうまく行くようです。 3.そして、コンボボックスBの値集合ソースに、2で作成した「Q_提出先を」指定します。 4.最後に次のマクロを作成します。 マクロ名を「再表示」とし、アクションに「再クエリー」、コントロール名に「コンボボックスB」と入力します。そして、このマクロをコンボボックスAのプロパティ「更新後処理」で選択します。 こんな感じでできます。

t-tomo
質問者

補足

回答ありがとうございました。 早速、tutty2さんに教えていただいた通り作成しているのですが、提出先のコンボボックスは書類のコンボボックスから絞り込む事は出来きましたのですが、 書類1  分類a 書類2  分類a 書類3  分類b 書類4  分類c で、書類2を選択しても書類1が表示されてしまいます。 いろいろと考えているのですが解決出来ません。 たびたびの質問で申し訳ありませんがよろしくお願いします。

関連するQ&A

  • ACCESSのコンボボックスについて

    ACCESSでコンボボックスを使っているときに たまに入力できなくなってしまう時があり困っています。 例えばA,B,Cという3つのデータを選択できるコンボボックスがあり、 現在、Aが選択されていてBに変更しようとした時に コンボボックスの表示部分が突然空欄(または選択されているのに表示されていない)になってしまいます。 その後、どれを選択してもコンボボックスには何も表示されなくなってしまいます。 この現象が起こるとなぜか同じフォーム内のボタンなどにも不都合が起こるようになってしまいます。 (テキストボックスのデータを削除するボタンがあるのですがおしてもなにも起こらなくなってしまいました) いろいろ試しているのですが全く原因がわかりません。 どのようなところに原因がありそうかなどあれば教えてください。 宜しくお願いします。

  • ACCESS2007 コンボボックス使い方

     いつも皆様には、お世話になります。以下のようにコンボボックスを用いて絞り込みシステムを考えております。しかし、汎用例が乏しくまた、私自身初心者なので、どこをどうすればよいか分からず作業がストップしています。 ------------------------------------------------- | 絞り込みシステム |------------------------------------------------ | 勘定項目:[コンボボックスA〕 ←3項目表示    A、B、Cなど | 勘定科目コード:〔コンボボックスB〕←2項目表示 10,20 など | 分類項目:〔コンボボックスC〕←12項目      赤、青、黄,緑など | 分類コード:〔コンボボックスC〕←上記の項目、コードにより 50~1までデータ数がある。 | |                            [絞り込みボタン〕 ------------------------------------------------- 段階をおって絞り込まれた、これらのフォームから該当するデータを表示させます。 このようなことは可能でしょうか。皆様のお知恵をお借りしたいと思います。何卒よろしくお願いいたします。

  • 複数のコンボボックスの項目の表示/非表示について(VB6.0)

    コンボボックスにて Combo1(0)のリスト "A" "B" "C" Combo1(1)のリスト "A" "B" "C" Combo1(2)のリスト "A" "B" "C" Combo1(3)のリスト  ・  ・  ・ と複数のコンボボックスを用意し、それらのコンボボックスにおいて表示するの内容を全て同じ内容にします。この時、例えばCombo1(0)で"A"が選択されると、他のコンボボックスでは"A"がリストに表示されなくなる、またCombo1(0)にて"A"を選択解除すると他のコンボボックスにおいて再度"A"がリストに表示されるという様に、同じリストを持つ複数のコンボボックスにおいて、重複選択できないように表示/非表示を切り替えたいのですが上手い方法が思いつきません。分かる方がおられましたら御教授宜しくお願いします。

  • accessのコンボボックスのことで質問です。

    accessを勉強しているのですが、ちょっとしたことで分からなくなってしまいました・・。 質問の内容なのですが、まずフォーム上にコンボボックスAとコンボボックスBを配置するとします。 レコードソースには仮に[情報テーブル]というテーブルが選択されているとします。 コンボボックスAには[情報テーブル]のフィールド名が、 例えば[顧客NO]、[商品]、[値段]というフィールド名が入っているとし、フィールドにはそれぞれ10件ずつデータが入力されています。 そしてコンボボックスAで[顧客NO]を選択するとコンボボックスBに[顧客NO]の10件のデータが挿入され、選択できるようにしたいのです。 他のフィールド名を選んだときにも同じようにコンボボックスBにフィールドのデータが入るようにしたいと思っています。 コンボボックスAにテーブル名を入れることはできたのですが、 コンボボックスAで選択されたフィールドのデータを、コンボボックスBで選択できるようにするというやり方がわからないのです・・。 accessは2002を使っています。 よろしくお願いします。

  • シート上のコンボボックスの使い方

    シート上のコンボボックスの使い方 現在作っている物があるのですが、色々と調べてはみるものの解決出来なくて困っています。 ☆やりたいこと シート1 コンボボックスA コンボボックスB コンボボックスC 一覧表(A1~A16)の枠だけが書かれているもの コンボボックスA・・・青森 秋田 岩手 コンボボックスB・・・100 200 300 コンボボックスC・・・北 東 西 南 シート2 コンボボックスAとBとCの選択されたものによって選ばれる一覧表(例A1~E16)のデータ ☆シート1にてコンボボックスを3種類選択した時に、シート1枠だけの一覧表にシート2のデータが表示される! ということがやりたいです。 説明がアバウトすぎて申し訳ありませんが、初心者なりに色々やった結果が惨敗に終わっている状態です。 皆様のお力を貸していただきたく思います。

  • Accessコンボボックスについて

    Accessコンボボックスで選択した番号に連動する名前を他のフィールドへ表示する方法 Access初心者です。 どなたか方法をご存知の方がいらっしゃいましたら、お手数ですがご教授願います。 何分初心者なので、お手数ですが、噛み砕いてお教え頂けると助かります。 請求書の作成フォームを作っています。 フォーム上に[取引先名」という、コンボボックスを配置しています。 そのコンボボックス上から名前を選択できるようにしています。 作成済の請求書を名前別に検索できるようにパラメータクエリを作成して、あいまい検索?(Like検索)で 検索した名前に該当する請求書を抽出できるようにしたいと思っています。 実際にパラメータクエリを作成してみましたが検索結果0件で表示されてしまいます。 その際に作成したものは、「取引先名」フィールドの抽出条件に、Like"*"&[取引先名を入力して下さい]&"*" です。 これで駄目だったので、次に Like"*"& &"*"を削除して、[取引先名を入力して下さい」だけで作成してみましたが 取引先名で検索すると、検索結果は0件でした。 取引先IDで検索すると検索できましたが、何が駄目だったのかがさっぱり分かりませんでした。 説明下手で申し訳ありませんが、どなたかご存知の方がいらっしゃいましたら教えて下さい。

  • Access2003コンボボックスについて

    Access2003の勉強を始めたばかりの初心者です。 コンボボックスについて初歩的な事かもしれませんが、お教え下さい。 他のコンボボックスと連動するコンボボックスを作りたいと思っております。 具体的には、A・B・Cと3つのコンボボックスを作り、Aがブランクの状態ならB・Cブランク、Aに値が入ったらそれに伴った絞り込み結果をB・Cへ。 Bに値が入った場合は、その結果をCへ。 と言う様な処理を考えています。 用途はAに都道府県Bに市区町村Cに個人名を表示する予定です。 AからB・Cの連動は出来たのですが、あの値を反映したBからCへの連動処理ができません。 どなたかご存知方いらっしゃいましたら、ご教授お願い致します。

  • あるコンボボックスを選択するともう一方のコンボボックスが自動的に決まる方法

    二つのコンボボックスがあります。 1つのコンボボックスをcb1、もう一方のコンボボックスをcb2とします。cb1の中にはA、B、Cという項目があります。 質問の内容は、例えばcb1のAを選択するとcb2の項目が自動でa、b、cになっている、cb1のBを選択するとcb2の項目が自動でd、e、fになっている、ということなのです。 こんな感じに自動的に状態が変化することは可能なのでしょうか?宜しくお願いします。

    • ベストアンサー
    • Java
  • コンボボックスの連動

    コンボボックスの連動を実現したいです。 コンボボックスがAとBの2個あります。 Aにメーカーをセット 例) 1 エプソン 2 キャノン 3 HP Bに機種名をセット 例)Aでエプソンを選択したとき 1 EPシリーズ 2 PMシリーズ 例)Aでキャノンを選択したとき 1 PIXUSシリーズ 2 Sateraシリーズ コンボボックスAの選択内容により コンボボックスBの内容を変更したいです。 各A,Bの選択した値(1、2)も取得したいです。 よろしくお願いします。

  • [Access2003]コンボボックスとリストボックスの違い

    今、Access2003のフォームのコントロールの作成について勉強しています。『コンボボックス』と『リストボックス』を見て、コンボボックスは、「ドロップダウン形式でスペースを節約できる点」、リストボックスは、「一覧がすべて表示される」という意味がよく分かりませんでした。 インターネットでいろいろ調べて見たのですが…. 例えば・・・・ 店名ID 店名 A A店 B B店 C C店 と『コンボボックス』と『リストボックス』が表示され、ボックスの上の選択の矢印があるかないかの違いしか分かりませんでした。 (1)Access初心者なので『コンボボックス』と『リストボックス』について簡潔に教えてくださったら助かります。もしホームページで『コンボボックス』と『リストボックス』について一目で見たら違いが分かるというものが掲載されていたら教えてください。 (2)コンボボックスの「ドロップダウン形式」がよく分からないです。