Заполнить список из таблицы в vba - PullRequest
0 голосов
/ 14 июля 2009

Я разрабатываю форму vba для базы данных сотрудников, в которой есть критерии поиска для идентификатора пользователя, и имя сотрудника с идентификатором пользователя должно отображаться в элементе управления списка, который поступает из одной таблицы

Мне нужно заполнить поле списка значением из таблицы в соответствии со значением в текстовом поле, которое действует как поле поиска (например: userid)

Пожалуйста, помогите мне, как это сделать

Ответы [ 3 ]

2 голосов
/ 14 июля 2009

На ваш вопрос сложно ответить, потому что он зависит от некоторых вещей, таких как типы данных в поле поиска и т. Д. Поэтому этот ответ будет неопределенным в некоторых из этих пунктов ...

Прежде всего, вам нужно создать список с критериями поиска, который будет искать в форме искомое значение и соответственно фильтровать.

Вы делаете это, устанавливая свойство RowSource списка. Вот пример источника строк для списка, который ищет текстовое поле в форме для значения фильтра ...

SELECT tblAgencies.AgencyID, tblAgencies.OrganizationName
FROM tblAgencies
WHERE (((tblAgencies.OrganizationName) 
          Like "*" & nz([Forms]![frmMainMenu2]![txtSearchAgencies],"") & "*"))
ORDER BY tblAgencies.OrganizationName;

Ключевой частью является линия Like ... Несколько вещей об этом ... обратите внимание, что запрос ищет форму по некоторым критериям. Вы видите это в части запроса [Forms]! [FrmMainMenu2]! [TxtSearchAgencies]. Так что в frmMainMenu2 есть текстовое поле поиска, которое называется txtSearchAgencies.

Обратите также внимание, что я использую функцию NZ, чтобы гарантировать, что просмотр этого текстового поля возвращает хотя бы пустую строку. Наконец, обратите внимание, что используется оператор Like с подстановочными знаками на обоих концах, чтобы пользователь мог вводить частичную строку.

Наконец ... рядом с окном поиска поместите командную кнопку для выполнения фильтра / поиска. Все, что он должен сделать, это запросить список, как это ...

Me.lstAgencies.Requery.

Вы также можете попробовать Requery при событии OnChange, которое будет фильтровать по мере их ввода. Но если ваш запрос медленный, это может не сработать.

Сет

0 голосов
/ 12 августа 2009

Я согласен с Миком. Я бы просто использовал событие AfterUpdate вместо LostFocus, которое я использовал ранее.

0 голосов
/ 16 июля 2009

Допустим, у вас есть таблица TABLE1, в которой есть поля userid, employee. Вы должны создать форму, которая имеет комбинированный список (с именем boxid) и текстовое поле (с именем EdtEmployee). Определите значение строки в поле со списком, например

SELECT table1.userid FROM table1 WHERE employee like EdtEmployee & "*"; 

Затем определите событие потерянного фокуса для текстового поля, как это

Private Sub EdtEmployee_LostFocus()
 BoxId.Requery
End Sub

Надеюсь, это работает для вас

...