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

Access多记录数据表窗体组合框独立联动更新解决方案咨询

Access多记录明细窗体分类与商品组合框联动解决方案

你遇到的问题本质是数据表/连续式子窗体的所有行共用同一个控件实例,直接全局Requery组合框会修改所有行共用的行源,进而导致所有行的下拉选项同步变更,甚至已选值异常。可通过以下方案实现仅当前行下拉选项联动:

实现步骤

  1. 先清空Item组合框原有固定行源配置
  2. 添加两个事件处理逻辑:

Category更新后事件

当选中某行的分类后,清空当前行已选商品,同时生成对应分类的商品下拉选项:

Private Sub Category_AfterUpdate()
    ' 清空当前行遗留的旧分类商品
    Me.Item = Null
    ' 动态生成当前行Item的行源(Category为数值类型写法,文本类型见下方注意事项)
    Me.Item.RowSource = "SELECT ID, [DESC] FROM ARTICLES WHERE CATEGORY = " & Nz(Me.Category, 0)
End Sub

Item获得焦点事件

切换到不同行的商品下拉时,自动根据当前行的分类刷新下拉选项:

Private Sub Item_GotFocus()
    Me.Item.RowSource = "SELECT ID, [DESC] FROM ARTICLES WHERE CATEGORY = " & Nz(Me.Category, 0)
End Sub

注意事项

  • 如果Category字段为文本类型,需要将行源拼接逻辑改为:
    Me.Item.RowSource = "SELECT ID, [DESC] FROM ARTICLES WHERE CATEGORY = '" & Replace(Nz(Me.Category, ""), "'", "''") & "'"
    
  • Item组合框的「限于列表」属性建议设为是,避免输入不符合分类的无效值
  • 无需担心其他行的已选商品显示异常:只要该商品ID存在于商品主表,即使不在当前控件的行源内,已保存的值仍会正常显示,只有点开下拉时才会加载当前行对应分类的选项

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:06:03