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 多列组合框自动完成的主要内容,如果未能解决你的问题,请参考以下文章