MS Access 2010 多列组合框自动完成

Posted

技术标签:

【中文标题】MS Access 2010 多列组合框自动完成【英文标题】:MS Access 2010 Multi column Combobox Autocomplete 【发布时间】:2013-11-14 15:20:31 【问题描述】:

我在 Access 中有一个简单的组合框,它用作结果集持有者并包含两列 id 和 name。

我开发了一个简单的搜索功能, 即用户在文本框中输入关键字,组合框在搜索子字符串后返回结果,

例子:

TXT BOX 输入:应用

组合框结果:

ID 名称

1   Cinnamon Apple
2   Apple Candy Box
42  Carton of Apples
54  iphone App
6   App Store

现在,当我去搜索结果中的组合框并输入“i”时,我希望从下拉列表中选择“iphone App”,但没有任何反应,因为它正在搜索第一列,即 ID

那么如何搜索名称并自动完成组合框?或按第二列搜索

另外,显示 ID 对我来说很重要,如果我隐藏 ID 列,我可以按名称搜索就好了,因为它是结果集中唯一的列。

【问题讨论】:

【参考方案1】:

隐藏 ID 是实现您想要的最简单的方法,但我知道您说过您不想隐藏 ID 字段。

我认为可以做你想做的事。基本上,在每次按键时,您都需要重置 RowSource 以使组合框被过滤为仅与用户按键匹配的项目。以我的经验,这在您用于过滤的下拉菜单中效果最好,而不是用于数据输入的下拉菜单,尤其是在您使用连续表单或数据表表单时。执行此操作时会遇到很多问题和注意事项。除非您是经验丰富的 VBA 程序员,否则我真的不建议您尝试这样做。我自己的实现使用了相当多的事件来使其工作,包括 Enter、KeyUp、KeyDown、KeyPress 和 AfterUpdate。我还使用了一个计时器,这样我就可以累积他们的按键,并且只有在大约 300 毫秒没有按键后才更改行源。我还将 ADO 与断开连接的记录集一起使用,这样我就可以过滤记录集而无需再次调用数据库(以提高效率和“保持线路凉爽”的名义)。

如果你想要一些代码,我在 UtterAccess 开发这个想法的早期确实发布了一个非常基本的版本。我认为它可能会出现问题,并且它可能无法在您想要显示 ID 字段时正常工作。自从我最初发布我的代码以来,这是我必须在我的一个项目中正常工作的东西。

http://www.utteraccess.com/forum/Autocomplete-Autosugges-t1986007.html

【讨论】:

感谢您的建议 您提到您使用计时器来累积按键,并且仅在没有按键 300 毫秒后更改行源,但是,您没有在示例中包含该代码。我正在尝试弄清楚如何使用组合框实现计时器来完全做到这一点。【参考方案2】:

解决方法是在 Combobox 中显示 Name 和 ID,所以当我开始在 Combobox 中输入时,它默认自动完成 Name 而不是 ID。

【讨论】:

以上是关于MS Access 2010 多列组合框自动完成的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MS Access 2010 中使用 VBA 选择多值组合框的值?

MS Access 2010:未绑定的组合框不会更新

MS Access,根据文本框条目填充组合框

MS Access - 自动填充在组合框中不起作用

MS Access 组合框“#Name?”错误

MS Access 组合框和 NVDA