0

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

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

例子:

TXT BOX 输入:应用程序

组合框结果:

身份证名称

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

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

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

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

4

2 回答 2

1

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

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

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

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

于 2013-11-14T23:42:27.640 回答
0

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

于 2013-11-15T21:50:49.130 回答