0

フォームにコンボボックスがあります:

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

4

2 に答える 2

0

まず、なぜあなたが持っているのかわかりません:

Me.Target_Basis.RowSource = vbNullString

それは不必要であり、問​​題を引き起こしている可能性があると思います。

Me.Target_Basis.Requery を追加して、コンボボックス リストを更新してみてください。

于 2013-06-11T13:51:38.733 に答える
0

アクセスはしばしば「マシンにゴースト」を残します。私は 20 年近く Access を使用してきましたが、問題を修正してから、すべてのフォーム/マクロ/クエリなどを新しい空のデータベースにインポートする必要があった回数はわかりません。それが起こります。それがあなたの現在の問題かどうかはわかりませんが、起こります。

于 2013-06-11T14:53:08.023 に答える