コンボボックス等の「値リストの継承」プロパティ

 コンボボックスやリストボックスをフォーム上に置いた場合、プロパティに「値リストの継承」という項目が現れます。この設定が効果を持つのは、コントロールが連結コントロールである場合ですが、以下でその効果を見てみます。

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

 まずこのようなテーブルを作成します。「出身地」列がコンボボックスとなっていて、「値集合タイプ」プロパティは「値リスト」、そして実際に選択肢として表示される値は「値集合ソース」プロパティにより設定されています。


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

 次にフォームです。レコードソースとして先ほどのテーブルを選択し、「出身地」列をコントロールソースとする(つまり連結コントロールである)コンボボックスを設置します。「値集合タイプ」などのプロパティの値は、テーブルの「出身地」列のプロパティと同じものがコピーされます。
 「値リストの継承」プロパティの値はデフォルトで「はい」となっているのを確認してください。


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

 さて、この(フォーム上の)コンボボックスの「値集合ソース」を変更してみますが…


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

 フォーム上で操作してみると、選択肢に変化がないことがわかります。「値リストの継承」が「はい」のとき、フォーム側の「値集合ソース」は無視され、コントロールソース側、つまりテーブル側の「出身地」列の「値集合ソース」が常に適用されるのです。


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

 選択肢を変更しようとするなら、テーブル側の「値集合ソース」を変更するか、右図のようにフォーム上で選択肢を編集する必要があります(このときテーブル側の「値集合ソース」も変更されます。しかし、フォーム側の「値集合ソース」はやはり変更されません)。


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

 続いて、「値リストの継承」を「いいえ」にすると、フォーム側の「値集合ソース」が適用され、テーブル側の「値集合ソース」は無視されます。


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

 フォームで操作してみると、フォーム側の「値集合ソース」に含まれる「四国」は表示されます。上記(2つ上の画像)の操作によりテーブル側の「値集合ソース」には「九州」という値が含まれているのですが、そちらは表示されません。
 なお、選択肢を変更しようとするなら、フォーム側の「値集合ソース」を変更するか、フォーム上で選択肢を編集する必要があります(このときフォーム側のコンボボックスの「値集合ソース」が変更されます。しかし、テーブル側の「値集合ソース」はやはり変更されません)。
 「値リストの継承」の値を操作する機会はあまりないように思われますが、参考まで。