フォームにコンボボックスがあります:
ControlSource=Target Basis ---------- [フォーム レコードソースのフィールド]
RowSource=Target Basis -------------- [同じ名前の別のテーブル]
RowSourceType = テーブル/クエリ
テーブル「ターゲット基準」には 20 個の奇数の値があります。上記は期待どおりに動作します...まで、
VB コードは上記を次のように変更します。
Select Case xyzVar 'xyzVar is taken from another field on form.
Case xyzValue
Me.Target_Basis.RowSourceType = "Value List"
Me.Target_Basis.RowSource = vbNullString
Me.Target_Basis.RowSource = "'Trend Channel'; 'Adjusted Trnd Ch.'"
Me.Target_Basis.Locked = False
Me.Target_Basis = "Choose"
Case Else 'etc.
上記のコードが完了すると、期待どおり「Choose」というテキストがコンボに表示されますが、ユーザーが選択リストをドロップすると、1 つのオプションのみが表示され、次のテキストになります --
SELECT [対象基準].基準 FROM [対象基準]
データベース全体でドキュメンターを使用したところ、上記のクエリがどこにも定義されていないことがわかりました。システムが controlSource 名からそれを生成しているに違いないと思いました。これを確認するために、別のテーブル (つまり、rowSource テーブル) の名前を「Target Basis」から「Target Type」に変更しました。リスト内の単一の項目が --
SELECT [対象タイプ].Basis FROM [対象タイプ]
その時点で、テーブルの名前を「Target Basis」に戻しました。ただし、ドロップリストに表示されるアイテムは上記のままです。それにもかかわらず、クエリもテーブル「ターゲット タイプ」もシステムに存在しません。Dbを閉じて、圧縮して、再度開いてみました。変化なし。
さらなる実験により、次のことが明らかになりました。
コードの実行が完了すると、rowSourceType と rowSource は本来あるべき状態になります。これらのプロパティを出力するボタンを作成して、これを確認しました。ただし、ユーザーがコンボのドロップ矢印をクリックするとすぐに、rowSource プロパティが上記の SELECT ステートメントに変わります。rowSourceType は「値リスト」のままです。これが、実行ではなくドロップ リストに表示される理由です。
controlSource が削除されると、つまりコントロールがアンバインドされると、問題はなくなります。
このクエリはどこから来たのですか??
どんな洞察にも大いに感謝します - IG