Access连续子表单:按记录筛选组合框RowSource致显示异常
在MS Access连续子表单中实现按问题动态过滤答案选项的方案
完全可以实现你的需求,核心思路是让组合框的行来源直接绑定当前记录的fkAnswerSet字段,替代用事件动态修改RowSource的方式——后者会因为连续表单复用控件实例,导致只有当前活动行生效。
具体实现步骤:
设置组合框的行来源查询
打开子表单设计视图,选中答案组合框,在属性表的「数据」选项卡中,将RowSource设置为带动态过滤的查询:SELECT AnswerID, AnswerText FROM Answers WHERE fkAnswerSet = [fkAnswerSet]这里的
[fkAnswerSet]会自动关联当前行记录中的同名字段值,Access在渲染连续表单的每一行时,会为该行的组合框上下文注入对应记录的fkAnswerSet值,从而自动过滤出匹配的答案选项。调整组合框关键属性
- 确认
Bound Column设置为你需要存储的字段(比如AnswerID,对应答案的主键) - 根据需求设置
Column Count(比如2,显示ID和文本)和Column Widths(比如0cm;5cm,隐藏ID列,只显示答案文本) - 建议开启
LimitToList属性为「是」,避免用户输入非选项内容
- 确认
移除事件中的RowSource修改代码
删除之前在Form_Current或GotFocus事件中修改RowSource的代码,避免干扰组合框的动态过滤逻辑。
效果验证
设置完成后,连续子表单的每一行都会:
- 正常显示该行问题对应的所有答案选项
- 已录入的答案值不会丢失或空白
- 所有行可同时显示,满足进度查看的需求
内容的提问来源于stack exchange,提问作者r0berts
相关产品推荐
相关产品推荐

