存在しない値リストに基づくコンボボックス等が表示される

 コンボボックス及びリストボックスの値集合ソースについてはちょっと混乱しやすいのですが、その特に極端なケースについてです。

f:id:accs2014:20170821010933p:plain:right:w400

 例を示してみます。テーブルでコンボボックスにより入力する列を設け(画像の例では「最終学歴」列)、「値集合タイプ」を「値リスト」とし、値集合ソースを設定します。


f:id:accs2014:20170821010928p:plain:right:w300

 フォームに、この列に連結されたコンボボックスを置きます。
 このとき、このコンボボックスの値集合ソースもテーブルの「最終学歴」列で設定したものと同じになります。


f:id:accs2014:20170821010925p:plain:right:w400

 テーブルに戻り「最終学歴」列の入力方法を普通のテキストボックスに戻します。
 これにより「最終学歴」列の値集合ソースの値が消滅します。ただしフォームのコンボボックスの値集合ソースの値は残ります。


f:id:accs2014:20170821011153p:plain:right:w400

 再度フォームに移り、コンボボックスの値集合ソースを変更します(選択肢として「大学院」を追加しています)。


f:id:accs2014:20170821010915p:plain:right:w300

 しかし、このコンボボックスの選択肢に「大学院」は現れません;-o-)
 「大学院」を含まない値集合ソースはどこにも存在しないはずなので奇妙な感じがします。というか何を直せばよいかわからず混乱します。


f:id:accs2014:20170821010952p:plain:right:w400

 いずれ、解決法はフォームのコンボボックスの「値リストの継承」プロパティを「いいえ」とすることです。
 これによりコンボボックスの「値集合ソース」の内容が確実に適用されますので、選択肢に「大学院」が表示されます。

 なお「値リストの継承」のはたらきについては下記の記事が参考になりますのでご覧ください。

www.accessdbstudy.net

 最後に上記の現象について補足します。フォームに置いたコンボボックスの「値リストの継承」はデフォルトで「はい」であり、基本的にテーブル側の値集合ソースが適用されます。そうであるなら、テーブルにコンボボックスが存在しなくなった時点でフォームのコンボボックスにもリストが表示されなくなるのが自然であると思われます。しかし、そうにはならず消えたはずの値リストに基づくリストが表示されてしまうため混乱してしまう、というわけです。