2013-11-14 174 views
0

我在Access中有一個簡單的組合框,它作爲結果集的持有者幷包含兩列id和名稱。MS Access 2010多列Combobox自動完成功能

我已經開發了一個關鍵字一個簡單的搜索功能, 即用戶在一個文本框,組合框搜索字符串後返回結果,

例子:

TXT BOX輸入:應用

組合框結果:

ID名稱

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

現在,當我去到搜索結果中的組合框框,我輸入「我」,我期望從下拉菜單中選擇「iPhone應用程序」,但什麼也沒有發生,因爲它正在搜索的第一列即ID

那麼如何搜索名稱並自動完成組合框?或搜索第二列

此外,對我來說顯示ID非常重要,如果我隱藏了ID列,那麼我可以通過Name進行搜索,因爲它是結果集中唯一的列。

回答

0

的解決辦法是顯示名稱,然後ID在ComboBox,所以當我開始在ComboBox,它自動完成名稱由默認值,而不是ID打字。

1

隱藏身份證是實現你想要的最簡單的方法,但我承認你說過你不想隱藏ID字段。

我認爲這是可以做你想做的。基本上,在每次按鍵時,您都需要重置組合框的RowSource,以將其過濾爲僅匹配用戶按鍵的項目。根據我的經驗,這最適合用於過濾的下拉菜單,而不是用於數據輸入的下拉菜單,尤其是在使用連續或數據表格形式的情況下。這樣做時會遇到很多問題和注意事項。除非你是一位經驗豐富的VBA編程人員,否則我無法真正推薦嘗試這種方式。我自己的實現使用了很多事件來使其工作,包括Enter,KeyUp,KeyDown,KeyPress和AfterUpdate。我也使用一個計時器,以便我可以積累他們的按鍵,並且只有在約300ms沒有按鍵後才能更改行源。我還將ADO與Disconnected Recordset一起使用,這樣我就可以在不調用數據庫的情況下過濾記錄集(以效率和「保持電線冷卻」的名義)。

如果您想要一些代碼,我在UtterAccess的開發過程中提前發佈了一個非常基本的版本。我認爲這可能會出現問題,並且可能無法正確顯示ID字段。自從我最初發布我的代碼以來,我不得不在自己的項目中正常工作。

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

+0

感謝您的建議 – EvenPrime

+0

您提到您使用計時器來累積按鍵,並且僅在300ms的無按鍵後才更改行源,但是,您不會在示例中包含該代碼。我想弄清楚如何實現一個計時器來完成這個與組合框。 –