Событие обновления огня при включении - PullRequest
0 голосов
/ 13 января 2011

У меня есть текстовое поле ("D_find" в его идентификаторе) в моей форме, которую я использую для фильтрации данных формы, используя запрос LIKE.

У меня есть следующий код:

Private Sub D_find_AfterUpdate()  

    Dim fil  

    fil = Me.D_find  

    If fil = Null Then  
        fil = ""  
    End If  

    Me.Filter = "DeloN Like '" + fil + "*'"  

End Sub

Это работает правильно, если я нажимаю клавишу Tab или фокусирую какой-то другой элемент управления на форме, но мне нужно применить фильтр сразу после события keyup текстового поля, но я не могу этого сделать, потому что, если я использую этот код в D_find_keyup, я всегда имеет D_find НЕДЕЙСТВИТЕЛЕН, но в текущем сценарии он всегда не равен нулю, кроме случаев, когда он пуст.

Вторая проблема, присутствующая в текущем сценарии: после запуска AfterUpdate и применения фильтра цвет текста в текстовом поле D_find будет белым, и он станет черным после того, как я введу что-нибудь в это текстовое поле (D_find) или обрежу некоторый текст.

-
Я извиняюсь за мой плохой английский.

1 Ответ

0 голосов
/ 13 января 2011

Если текстовое поле все еще имеет фокус, вы можете использовать:

NameOfControl.Text

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

РЕДАКТИРОВАТЬ комментарии

Используя текстовое поле, txtSearch и список, lstCompanies следующего кода иллюстрирует вышеприведенное:

Private Sub txtSearch_Change()
s = "SELECT Key, Company " _
  & "FROM tblCompanies " _
  & "WHERE Company LIKE '*" _
  & Replace(Me.txtSearch.Text, "'", "''") & "*'"

Me.lstCompanies.RowSource = s
End Sub

Список возвращает постепенно уменьшающийся список при добавлении букв в txtSearch.

...