🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

コンボボックス

GUIの要素のひとつです。Listboxと同様にいくつかのうちひとつを選択する機能だが、Comboboxの場合は選択されたもののみがデフォルトとして表示される。

Q&A

解決済

1回答

4388閲覧

連動するコンボボックスについて

bee96

総合スコア8

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

コンボボックス

GUIの要素のひとつです。Listboxと同様にいくつかのうちひとつを選択する機能だが、Comboboxの場合は選択されたもののみがデフォルトとして表示される。

0グッド

0クリップ

投稿2021/02/16 04:17

編集2021/02/17 04:08

連動するコンボボックスについての質問です。 あるデータを登録するためにフォームを作成しました。
登録フォーム内に2つのコンボボックスと2つのテキストボックスを置きそれらを連動させたいです。

初心者ながら実装しましたがうまくいきませんでした。

下記のようなテーブルデータがあります。

☆コンボ1テーブル(大分類)
大コード 大名称
1 文房具
3 書籍
5 OA機器

☆コンボ2テーブル(小分類)
大コード 小コード 小名称
1 1 バインダ
1 2     色鉛筆
1 3 消しゴム
3 1 図鑑
3 2 辞書
3 3 小説
5 1 キーボード
5 2 マウス
5 3 コンピューター

フォーム内には
|コンボ1▼|テキスト1|

|コンボ2▼|テキスト2|

上のようなコンボボックスとテキストボックスを配置します。

そしてコンボ1で大分類を選ぶとコンボ2にはその大分類に対応した小分類が表示されます。
テキストボックスには=[コンボ1テーブル].[Column](1)を入れて大名称を表示させます。

コンボ2の値集合ソースにクエリを設定し抽出条件に[Forms]![登録フォーム]![大コード]を入力しました。

そしてコンボ1の更新後処理に Me.小コード.Requeryを入力しました。

いざ、登録フォームで絞り込みを行うと大分類を選ぶところは問題ないのですが
小分類を選ぶところで恐らく絞り込みは行われているんですが、なぜか全く違うデータが絞り込まれています。

どこで間違ったか分からないのですが考えられる要因はありますでしょうか?

初心者で申し訳ありませんがどなたか力をお貸しいただけると嬉しいです。
追記

この登録フォームをサブフォームとしてメインフォームに表示させたのですが、メインフォームを開くたびにパラメータ入力画面が出て
「[Forms]![登録フォーム]![大コード]」と表示されてしまいます。
サブフォームだけで開くとこういう表示は出ないです。

SELECT コンボ2テーブル.小コード, コンボ2テーブル.小名称,コンボ2テーブル.大コード FROM コンボ2テーブル WHERE (((コンボ2テーブル.大コード)=[Forms]![メインフォーム]![サブコントロール名].[Form]![大コード]));

コンボ2の値集合ソースに設定しているクエリのSQL文です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YT0014

2021/02/17 01:11

大分類を選択した後の小分類のリストは、大分類毎に固定でしょうか? 固定だとしたら、大分類毎に、そのリストをご提示ください。 固定でない場合、[Forms]![登録フォーム]![大コード]の実際の値をご確認ください。
YT0014

2021/02/17 01:45 編集

[Forms]![登録フォーム]![大コード]が想定通りの場合、抽出条件の記載箇所が誤っていないか、ご確認ください。 また、更新後処理としてご提示いただいた処理ですが、正しいのでしょうか?
bee96

2021/02/17 02:17

回答ありがとうございます。 固定というのはどういうことを指しているのでしょうか? 大分類コンボで1|文房具を選択すると小分類のリストには 1|図鑑 2|キーボード  : のように全然関係ないデータがリストに表示されてしまいます。 また、これは関係あるか分かりませんがこの登録フォームをサブフォームとしてメインフォームに表示させたのですが、メインフォームを開くたびにパラメータ入力画面が出て「[Forms]![登録フォーム]![大コード]」と表示されます・・・ サブフォームだけで開くとこういう表示は出ないのですが・・・
hatena19

2021/02/17 02:28

サブフォームということは大いに関係ありますので、その旨を質問の方に追記してください。
YT0014

2021/02/17 04:12

固定というのは、同じ大コードなら、小コードに同じリストが出るのか?ということです。不明瞭だったようで、申し訳ありません。 また、1:文房具選択時に、図鑑、キーボード、...という情報があれば、小コードが1のデータが表示されているのでは?という指摘ができますので、ご提示をお願いした次第です。
guest

回答1

0

ベストアンサー

質問の説明を見る限りは方法としては間違っていないようです。

推測ですが、
コンボ2の値集合ソースのクエリの抽出条件を設定したフィールドが [小コード] になっていませんか。もし、なっていたら [大コード] の方に設定するよう変更してみてください。

それでうまくいかないようなら、現状のコンボ2の値集合ソースのクエリのSQL文を質問に追記してください。


また、これは関係あるか分かりませんがこの登録フォームをサブフォームとしてメインフォームに表示させたのですが、メインフォームを開くたびにパラメータ入力画面が出て「[Forms]![登録フォーム]![大コード]」と表示されます・・・

サブフォームの時は、下記のようにしてください。

[Forms]![登録フォーム]![サブフォームコントロール名].Form![大コード]

サブフォームコントロール名については下記を参照ください。
サブフォームとサブフォームコントロールの違いとは? - hatena chips

クエリで単独フォーム、サブフォーム、孫サブフォームのどこからでも参照する方法

コンボボックスの名前を連結したフィールド名とは別名にしておく。

名前 cb大コード
コントロールソース 大コード

クエリの[大コード]フィールドの抽出条件欄に、コンボボックス名を設定する。
[cb大コード]

以上です。これで、単独でフォームを開いたとき、サブフォームの時、孫サブフォームの時、どれでも正常に動作します。

値集合ソースのクエリから参照するとき、フォームの部分を省略すると、自身のフィールド、コントロールから名前が一致するものを探すという仕様になってます。

投稿2021/02/17 02:22

編集2021/02/17 05:13
hatena19

総合スコア34073

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bee96

2021/02/17 02:48

hatena様 回答ありがとうございます。 > [大コード] の方に設定するよう変更してみてください。 こちらで変更するとしっかり表示されました!! こんな単純なことに気づけず本当に申し訳ないです・・・ そしてサブフォームのほうですが >[Forms]![登録フォーム]![サブフォームコントロール名].Form![大コード] こちらに変更したのですがやはりパラメータが出ます。 サブフォームコントロール名もしっかり確認しましたので間違いはないと思うのですが・・・ [Forms]![登録フォーム]![サブフォームコントロール名].Form![大コード] の登録フォームにはサブフォーム名でよろしかったでしょうか?
hatena19

2021/02/17 02:53

「登録フォーム」は、メインフォーム名です。 Forms!メインフォーム名!サブフォームコントロール名.Form!コントロール名 という書式です。
bee96

2021/02/17 04:03

メインフォーム名にしましたがパラメータが消えてくれません・・・ 何度確認しても間違っているところはないと思います。 コントロール名はサブフォーム内にあるコンボ1の名前ですよね?
bee96

2021/02/17 04:08

質問文にコンボ2の値集合ソースのSQL文を追加しましたので確認お願い致します。
hatena19

2021/02/17 04:18

[Forms]![メインフォーム]![サブコントロール名].[Form]![大コード] の部分ですが[メインフォーム]は実際のメインフォーム名になってますか。 [サブフォームコントロール名] も実際のコントロール名になってますか。回答のリンク先は読んでますよね。
bee96

2021/02/17 04:28

何度も確認しましたので合っているかと思います。 回答のリンク先もしっかり読みました。 メインフォームをデザインビューで開きサブフォームのプロパティで名前と書かれているところがサブフォームコントロール名ですよね? 何がダメなのか分からないです・・・
hatena19

2021/02/17 04:33

追記のSQLは実際のものではなく編集したのもですよね。 可能なら実際のSQL文と、出現したパラメータボックスの標題を提示してもらえますか。
bee96

2021/02/17 04:36

原因が分かりました。 当初はただサブフォームにするだけでしたが、サブフォームを埋め込んだメインフォームをさらにサブフォームとし別にメインフォームを作ったのが原因だと思います。 フォーム①→登録フォーム フォーム②→登録フォームをサブフォーム(①)として表示させたフォーム メインフォーム→フォーム②をサブフォームとして表示させたフォーム 上記のような説明で分かりますでしょうか? メインフォームの中にサブフォーム②があり、サブフォーム②の中にはサブフォーム①がある状況です。 この場合だと Forms!メインフォーム名!サブフォームコントロール名.Form!コントロール名 これではだめですよね・・・?
hatena19

2021/02/17 04:47

メインフォームの中にサブフォームがあり、そのサブフォームの中にさらにサブフォームがあるということ、つまり、親→子→孫 の関係ということでしょうか。下記のように設定してください。 Forms!メインフォーム名!子のサブフォームコントロール名.Form!孫のサブフォームコントロール名.Form!コントロール名
bee96

2021/02/17 05:00

ついに完成しました!! 私の下手な質問も真摯に答えて頂きほんとありがとうございます。 >親→子→孫 の関係 こちらの例えも分かりやすく思わず「おー」と言ってしまいました(笑) またなにかあるかと思いますがその時はぜひよろしくお願いいたします。
hatena19

2021/02/17 05:05

もっとシンプルな方法を回答に追記しておきましたので、参考にしてください。
bee96

2021/02/17 07:57

ありがとうございます! そんなシンプルなやり方があったんですね・・・ とても参考になりました。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問