这与这个问题有些相关,但我希望可能有一个比定义用户定义函数更优雅/简单的解决方案。
背景
本质上,这是一个常见问题:我需要动态修改 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 查询吗?