これはこの質問に多少関連していますが、ユーザー定義関数を定義するよりもエレガントでシンプルなソリューションがあることを望んでいました。
バックグラウンド
基本的に、これはよくある質問です。Access フォームのコンボボックス コントロールの RowSource クエリを動的に変更する必要があります。ねじれは、結果のクエリが実行時に例外をスローする可能性があることです。これは、クエリのソース テーブルが、動的に定義された別のデータベース ファイルに存在し、存在しない可能性があるためです。または、ファイルが存在する場合でも、目的のテーブルまたは列が存在しない可能性があります。
理想的には、割り当てが行われたときにこの問題をキャッチできるようにしたいと考えています。これにより、コンボボックスが無効になり、ユーザーが無効なクエリを呼び出すことができなくなり、フィールドに使用できるデータがないことをエンドユーザーが知ることができます。
たとえば、次のようなものが欲しいです。
Private Sub UpdateComboRows(src as String)
On Error Goto InvalidQueryError
cmbBox.RowSource = "SELECT [colName] FROM [dBase III;DATABASE=K:\" & src & "].[tblName];"
' Something here to invoke RowSource query and throw error
cmbBox.Enabled = True
Exit Sub
InvalidQueryError:
cmbBox.RowSource = ""
cmbBox.Enabled = False
End Sub
または、if-then ステートメントを使用するもの。
質問
これに対する「洗練された」アプローチはありますか、またはダミーのDAOレコードセットを作成しようとして立ち往生していますか? Dropdown イベント以外に Combobox RowSource クエリを呼び出す方法はありますか?