2015-02-28 2 views
0

У меня есть 2 текстовых поля и кнопка. Кнопка открывает запрос со значениями текстовых полей. Все работает отлично, за исключением случаев, когда один текстовый ящик пуст, тогда я хочу найти все записи из этого текстового поля (до сих пор я тестировал его на textbox2). Вот мой код:VBA Если текстовое поле пуст, отобразите все значения

Private Sub vbaBtn_Click() 

Dim af1 As String, af2 As String 
af1 = "([a1]='" + [krit1] + "') " 

If krit2 = "" Then 
af2 = "([a2]='" + "*" + "') " 
Else 
af2 = "([a2]='" + [krit2] + "') " 
End If 

DoCmd.OpenForm "FormLisategevusalad", acFormDS, , af1 & " " & "And" & " " & af2 

End Sub 

Мне кажется, что VBA всегда выбирает вариант Else не Если один, так как, когда я отлажена это сказало ошибка является «Недопустимым использованием» и указала на Другое условие.

Я использую неправильный метод для обнаружения и пустых строк? Если я получу пустое распознавание строк, это af2 = "([a2]='" + "*" + "') " правильный способ вернуть все записи?

Заранее спасибо.

+1

В настольном дизайне вы установили значение «Нет» в поле «Разрешить нулевую длину». krit2 может быть Null, а не «». Вы можете использовать строки нулевой длины Google или посмотреть на это: https://answers.yahoo.com/question/index?qid=20070128045303AAZu8fM. Я не гарантирую, что это ответ, просто что-то, о чем нужно прояснить. –

+0

@ user2204315 Здравствуйте, спасибо за ответ, который дал мне идею. Хотя на данный момент это не поможет мне грустно, потому что у меня есть значения нулевой длины в таблице2. Я попробую разные обходные пути. – Renet

ответ

1

Пустой текстовый ящик содержит значение Null, таким образом конкатенируя это с +, получается в Null. Использовать &:

Private Sub vbaBtn_Click() 

    Dim af1 As String, af2 As String 

    af1 = "([a1]='" & [krit1] & "') " 

    If IsNull([krit2]) Then 
     af2 = "([a2] Is Not Null) " 
    Else 
     af2 = "([a2]='" & [krit2] & "') " 
    End If 

    DoCmd.OpenForm "FormLisategevusalad", acFormDS, ,af1 & " And " & af2 

End Sub