Доступ к VBA: если значение формы <> NULL, выполнить запрос else, завершить if. - ничего не делая - PullRequest
2 голосов
/ 20 сентября 2010

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

Private Sub Command153_Click()
If Forms![form name1]![form name2]!Text143 <> Null Then
DoCmd.OpenQuery "InsertGroup", acNormal, acEdit
Else
End If
End Sub

Я не написал пользовательский код ранее в VBA, поэтому я думаю,Я, вероятно, просто ошибаюсь, потому что это буквально ничего не делает (без ошибок или чего-то еще, я предполагаю, что он просто не выполняет запрос).Я знаю, что запрос, который я вызываю, работает нормально, как будто я просто получаю on_click для запуска запроса без if, у меня нет никаких проблем вообще.Я также ссылаюсь на правильное текстовое поле и пробовал это как с тестовыми данными, так и без них в текстовом поле.

Любая помощь очень ценится!

С уважением,

Энди.

Ответы [ 3 ]

2 голосов
/ 20 сентября 2010

Обычный способ сказать:

 If IsNull(Forms![form name1]![form name2]!Text143) Then

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

 If Trim(Forms![form name1]![form name2]!Text143 & vbNullString ) = vbNullString Then
1 голос
/ 09 июня 2014

Приведенные выше ответы кажутся хорошими и правильными, но стоит явно отметить, что сравнение с нулем, как вы написали в своем первом коде:

If Forms![form name1]![form name2]!Text143 <> Null Then....

всегда будет неудачным / будет оценено как ложное, даже если вашимена форм имеют значение null, так как Null не имеет значения для сравнения.Вы должны использовать IsNull(value) или Not Isnull(value), если хотите узнать, является ли что-то нулевым.

В качестве альтернативного метода или для охвата большего числа баз вы можете использовать nz(VariableName), который возвращает строку нулевой длины ""(что также совпадает с vbNullString), если VariableName равно нулю.Таким образом, вы можете проверить строку с нулевой длиной и нулевое значение в одной операции:

If nz(VariableName) = vbNullString then
    Debug.Print "The variable is Null or Zero-length"
End If
1 голос
/ 20 сентября 2010

Обычно вы закрываете как нулевую, так и пустую строку. Текстовое поле может иметь значение, отличное от NULL, которое вы увидите, если вы остановите код для проверки значения

If Nz(Forms![form name1]![form name2]!Text143,"") <> "" Then ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...