Access多记录数据表窗体组合框独立联动更新解决方案咨询
Access多记录明细窗体分类与商品组合框联动解决方案
你遇到的问题本质是数据表/连续式子窗体的所有行共用同一个控件实例,直接全局Requery组合框会修改所有行共用的行源,进而导致所有行的下拉选项同步变更,甚至已选值异常。可通过以下方案实现仅当前行下拉选项联动:
实现步骤
- 先清空Item组合框原有固定行源配置
- 添加两个事件处理逻辑:
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
相关产品推荐
相关产品推荐

