Access 2016 如何不使用VBA实现输入时实时过滤组合框匹配结果
无VBA实现Access表单实时前缀匹配过滤方案
以下两种方案都仅通过Access界面配置和SQL实现,无需编写VBA代码,适合初学者操作:
方案1:组合框原生自动扩展功能(操作最简单)
Access组合框自带前缀匹配扩展能力,全程无需写SQL:
- 打开
Software表单的「设计视图」 - 插入组合框控件,按弹出的组合框向导逐步配置:
- 选择「使用组合框获取其他表或查询中的值」,点击下一步
- 数据源选择
Software titles表,点击下一步 - 将
title字段从可用字段列表移动到选定字段列表,点击下一步 - 排序步骤可选按
title升序排列,方便结果查阅,点击下一步 - 调整下拉列宽度后点击下一步,最后点击完成即可
- 右键点击刚插入的组合框,打开「属性表」:
- 切换到「格式」选项卡,确认
AutoExpand属性设置为「是」 - 切换到「数据」选项卡,确认
LimitToList属性设置为「否」
- 切换到「格式」选项卡,确认
配置完成后输入Vis时,组合框会自动补全匹配前缀的首个title,下拉列表也会自动定位到所有Vis开头的条目区间,满足基础匹配需求。
方案2:自定义SQL过滤(仅展示匹配结果,无无关条目)
如果需要下拉列表仅展示符合前缀匹配的结果、隐藏其他无关内容,用该方案:
- 先按方案1的步骤插入组合框并完成基础配置
- 右键点击组合框打开「属性表」,切换到「数据」选项卡,点击
行来源属性后的...按钮打开查询生成器 - 切换到SQL视图,将默认生成的SQL替换为以下内容:
SELECT [Software titles].title FROM [Software titles] WHERE [Software titles].title LIKE [Forms]![Software]![Combo0] & "*" ORDER BY [Software titles].title ASC;
注意将上述代码中的Combo0替换为你实际使用的组合框的控件名称,可在属性表「其他」选项卡的名称字段中查到对应名称
- 保存查询后关闭查询生成器,回到属性表的「事件」选项卡,找到
更改事件,点击后方的...按钮,选择「宏生成器」后确定 - 在宏操作下拉列表中选择
Requery,控件名称填写你的组合框控件名,保存宏后关闭宏生成器
所有配置完成后,每输入一个字符,组合框的下拉列表就会自动刷新,仅展示以输入内容为前缀的title条目。如果想使用文本框作为输入控件,只需将SQL中的控件名替换为文本框的控件名,宏的Requery操作对象改为展示结果的列表框/表单即可。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

