如何让MS Access数据表视图中字段自动执行Requery?
在MS Access数据表视图实现Subcategory随Category自动重查询的可行步骤
直接打开表的数据表视图无法支持自定义事件逻辑,必须通过基于Assets表的表单切换到数据表视图来实现,具体步骤如下:
1. 准备基于Assets表的表单
- 打开Access,创建新表单,数据源选择Assets表
- 在设计视图中,将Category和Subcategory字段添加为组合框控件(而非文本框):
- Category组合框的行源绑定到Category表,选择对应ID和名称字段,绑定列设置为ID
- Subcategory组合框的初始行源设置为你已创建的筛选查询(例如
SELECT SubcategoryID, SubcategoryName FROM Subcategory WHERE CategoryID = [Forms]![AssetsForm]![Category],注意替换表单名称为你实际的表单名)
2. 添加VBA事件代码
- 打开表单的VBA代码编辑器(按Alt+F11),粘贴以下代码:
' Category字段更新后刷新Subcategory的行源 Private Sub Category_AfterUpdate() ' 根据Category的当前值重新生成Subcategory的行源 ' 若Category是文本类型,需在值前后加单引号:'" & Me.Category.Value & "'" Me.Subcategory.RowSource = "SELECT SubcategoryID, SubcategoryName FROM Subcategory WHERE CategoryID = " & Me.Category.Value ' 清空Subcategory的旧值,避免残留无效选项 Me.Subcategory.Value = Null End Sub ' 光标进入Subcategory字段时强制重查询 Private Sub Subcategory_Enter() Me.Subcategory.Requery End Sub
3. 配置表单默认视图
- 返回表单设计视图,右键表单空白处→选择属性
- 在“格式”选项卡中,将“默认视图”设置为数据表
- 保存表单(命名为类似
frmAssetsData)
4. 测试功能
- 打开该表单(自动进入数据表视图)
- 选择某一行的Category字段,切换到Subcategory字段时,下拉列表会自动加载对应分类的子选项,无需手动按F5刷新
注意事项
- 确保Subcategory组合框的Limit To List属性设置为
Yes,防止输入无效子分类 - 若Category字段是文本类型,需调整VBA代码中的字符串拼接逻辑,添加单引号包裹值
- 多用户环境下,确保Subcategory表和查询的读写权限正常
内容的提问来源于stack exchange,提问作者Fredrick Durgan
相关产品推荐
相关产品推荐

