You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Access VBA:ComboBox获焦点设置RowSource后未填充数据问题

解决Access ComboBox焦点时刷新数据的问题

你的思路方向完全正确——通过ComboBox获得焦点的时机来重新加载数据源,但只设置RowSource还不足以让控件显示最新数据,因为Access不会自动触发列表的刷新动作。你需要在设置完数据源后,调用控件的Requery方法强制它重新查询并加载最新内容。

修正后的VBA代码

'Run when the "name" combobox gains focus
Private Sub nameCb_GotFocus()
    ' 设置数据源查询语句
    nameCb.RowSource = "SELECT name FROM t_people"
    ' 强制控件重新查询并刷新下拉列表
    nameCb.Requery
End Sub

为什么原代码没有生效?

当你直接修改RowSource属性时,Access只会更新控件的数据源配置,但不会主动重新执行查询并刷新显示内容。Requery方法的作用就是触发控件重新执行指定的查询,把t_people表中name列的最新数据加载到下拉列表里,这样每次ComboBox获得焦点时,用户就能看到最新的名称列表了。

额外优化小建议

  • 如果t_people表的数据量较大,频繁执行Requery可能会有轻微延迟,你可以考虑增加数据更新的判断逻辑(比如记录上次更新时间,仅在数据真的变化时才刷新);但对于普通小型数据表,直接调用Requery完全够用。
  • 你也可以把查询语句保存为Access的已命名查询(比如qry_PeopleNames),然后直接指定查询名作为RowSource,代码会更整洁:
    nameCb.RowSource = "qry_PeopleNames"
    nameCb.Requery
    

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:17:13