首页 > 解决方案 > 将 ComboBox RowSource 属性设置为在“GotFocus()”方法中查询会在 ComboBox Access VBA 中留下空白值

问题描述

我想根据另一个表中的数据使用 VBA 在 Access 表单中填充我的 ComboBox。以前为了做到这一点,我做了以下事情:

在此处输入图像描述

现在,每当我单击组合框的下拉列表时,它都会使用 t_people 表中的所有名称填充下拉列表。

然而,这将我限制在 t_people's name 列中的数据更改时。为了获得更新的列表,我必须关闭表单并重新打开它,以便查询再次运行。我已经限制了对这个 Access 文件的访问,因此用户只能看到 x 个表单,并且不能关闭/打开它们或其他人。

我的解决方案是在表单加载时删除查询,而是在每次组合框获得焦点、有点击事件或类似事件时运行查询。我在 VBA 中通过以下事件做到了这一点:

'Run when the "name" combobox gains focus
Private Sub nameCb_GotFocus()
    [nameCb].RowSource = "SELECT name FROM t_people"
End Sub

我已经设置了断点,并且这段代码确实运行了。但是,组合框不会在它之后填充。每次组合框获得焦点时,如何让组合框填充来自查询的值?

标签: vbacombobox

解决方案


在设计中设置RowSource,.Requery进入控件时添加一个。

Private Sub nameCb_Enter()
    nameCb.Requery
End Sub

推荐阅读