2016-02-18 7 views
0

Использование MS Access 2010 (формы) У меня есть простое текстовое поле, которое будет фильтровать (через SQL) базу данных, когда пользователь нажимает клавишу «Ввод».VBA on KeyDown (key Enter) string Null

ПРОБЛЕМА
Проблема заключается в том, что после того, как я ввожу данные и нажмите кнопку «Enter» ключ - код видит текстовое поле в NULL (а не значение, которое на самом деле в текстовом поле).

Но когда я снова нажимаю клавишу «Ввод» - тогда все работает нормально.


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

Название моего текстового поля является: search_txt

VBA:

Private Sub search_txt_KeyDown(KeyCode As Integer, Shift As Integer) 
    If (KeyCode = vbKeyReturn) Then 
     filterResults (Me.search_txt.Value) 
     Me.search_txt.SetFocus 
    End If 
End Sub 

ответ

1

Textbox.Value не не установлен до текстовое поле обновляется, оставив элемент управления, например нажав Enter или Tab.

Чтобы получить содержимое во время ввода пользователем, используйте свойство Textbox.Text.

Textbox.Text действителен только в том случае, если текстовое поле имеет фокус, но в вашем случае это всегда так.

+0

Спасибо! Это работает. Я на самом деле закончил тем, что исправил это, изменив событие на «KeyUp» - но это отлично работает, если пользователю требуется KeyDown – Sanya