Access子窗体中Search Query如何引用内部搜索框的问题求助
Access子窗体搜索框查询引用语法解决方案
正确的子窗体控件引用格式
独立窗体的控件引用规则不适用于嵌套在主窗体中的子窗体控件,需要按照「主窗体→子窗体容器控件→Form对象→子窗体内部控件」的层级编写路径:
假设你的主窗体名称为MainPortal,主窗体上嵌入联系人子窗体的容器控件名称为ContactSubform,子窗体内部搜索框名称为SearchBox,则查询条件的正确写法为:
Like "*" & [Forms]![MainPortal]![ContactSubform]![Form]![SearchBox] & "*"
其中!Form!为固定语法,不可省略。
常见问题排查点
- 注意区分主窗体上的子窗体容器控件名称和子窗体本身的表单对象名称:你可以在主窗体设计视图中点击选中子窗体的边框,在属性表的「名称」栏查看容器控件的实际名称,必须使用该名称编写引用路径,直接填写子窗体的表单名会导致识别失败
- 通配符不要额外加空格:原测试写法中的
" * "会额外匹配前后带空格的内容,建议改为无空格的"*"避免不必要的匹配限制 - 搜索后主动触发刷新:给搜索框的「更新后」事件添加刷新逻辑,VBA写法为
Me.YourListBox.Requery(将YourListBox替换为你展示搜索结果的列表框控件名),确保输入内容后列表能实时同步筛选结果
简化替代方案
如果不想编写复杂的层级引用路径,可以直接在子窗体内部通过VBA动态设置列表框的行源,给搜索框的「更新后」事件添加如下代码即可:
' 替换代码中的对应字段名、列表框名即可直接使用 Me.YourListBox.RowSource = "SELECT * FROM contacts WHERE 目标筛选字段 Like '*" & Me.SearchBox & "*'" Me.YourListBox.Requery
内容的提问来源于stack exchange,提问作者OneLargeFarva
相关产品推荐
相关产品推荐

