0

У меня есть простая combobox в Access, которая служит держателем набора результатов и содержит два идентификатора столбца и имя.MS Access 2010 Multi column Combobox Autocomplete

Я разработал простую функцию поиска, т.е. типов пользователей в качестве ключевого слова в текстовом поле и выпадающий возвращает результаты после поиска подстроки,

Пример:

TXT BOX Вход: App

COMBOBOX Результаты:

ID Имя

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

Теперь, когда я иду искать выпадающий список в результатах, и я типа «я», я ожидаю, чтобы выбрать «iPhone App» из выпадающего, но ничего не происходит, потому что он ищет в первый столбец, т.е. ID

Итак, как я могу найти имена и автозаполнять поле со списком? или поиск по второй колонке

Кроме того, для меня очень важно показать идентификатор. Если я скрою идентификационный столбец, я могу искать по имени просто отлично, поскольку это единственный столбец в результирующем наборе.

ответ

0

обходной путь, чтобы показать имя, а затем идентификатор в Combobox, Так что, когда я начинаю вводить в Combobox, так ли Autocompletes имя по умолчанию вместо ID.

1

Скрытие идентификатора - это самый простой способ выполнить то, что вы хотите, но я признаю, что вы сказали, что не хотите скрывать поле идентификатора.

Я думаю, что можно сделать то, что вы хотите. В принципе, при каждом нажатии клавиши вам нужно будет сбросить RowSource для того, чтобы combobox был отфильтрован только на те элементы, которые соответствуют нажатию кнопок. По моему опыту, это лучше всего работает в выпадающих меню, которые вы используете для фильтрации, в отличие от выпадающих меню, используемых для ввода данных, особенно если вы используете непрерывную форму или таблицу данных. Есть много ошибок и оговорок, с которыми вы столкнетесь, когда делаете это. Я не могу рекомендовать это, если вы не опытный программист VBA. Моя собственная реализация использует довольно много событий, чтобы заставить ее работать, включая Enter, KeyUp, KeyDown, KeyPress и AfterUpdate. Я также использую таймер, чтобы я мог накапливать свои нажатия клавиш и только менять источник строк после каких-либо 300 мс без нажатия клавиш. Я также использую ADO с Disconnected Recordset, чтобы я мог отфильтровать набор записей без повторных вызовов в базу данных (во имя эффективности и «поддержание проводов»).

Если вам нужен какой-то код, я опубликовал очень базовую версию этого в начале моей разработки идеи в UtterAccess. Я думаю, что это, вероятно, будет ошибкой, и может не работать должным образом, если вы хотите показать поле ID. Это то, что я должен был сделать правильно в одном из моих проектов, так как я изначально разместил свой код.

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

+0

Спасибо за предложения – EvenPrime

+0

Вы упомянули, что вы используете таймер для накопления нажатий клавиш и только изменяете источник строк после 300 мс без нажатия клавиш, однако вы не включаете этот код в свой пример. Я пытаюсь понять, как реализовать таймер, чтобы сделать именно это с помощью поля со списком. –

Смежные вопросы