У меня странное поведение, которое меня озадачило.Я создал функцию в vb (версия Microsoft Word для макросов VB), которая выглядит следующим образом:
Public Function isitnullorempty(newstring As String) As Boolean
If IsNull(newstring) Or IsEmpty(newstring) Or newstring = "" Then
isitnullorempty = False
Else
isitnullorempty = True
End If
End Function
Кажется, что она работает, как и ожидалось, если я создаю переменную и затем устанавливаю ее на ноль, "" илиоставляя это пустым.Я манипулирую переменной, а затем делаю MSGBOX isitnullorempty (переменная), и это соответствует тому, что я ожидаю.Это не ведет себя так же, когда я помещаю набор записей внутри функции.Я даже пытался сделать переменную, установить ее в набор записей, а затем протестировать ее, но это тоже не работает.Если я пытаюсь вызвать следующее
'ADO query code here (This is an ODBC connection)
DO While (Not oRecordset.EOF)
MsgBox isitnullorempty(oRecordset.Fields("CustomerTypeRefFullName"))
oRecordset.MoveNext
Loop
Это приводит к ошибке: Неправильное использование Null.
Итак, два вопроса.
Уже существует функция vb, которая делает то, что я хочу?Почему мой код ведет себя так?
Еще более странно то, что если я выполняю тестирование отдельно от функции, это работает.
Временное решение
Он пишет больше кода, чем нужно, но так как я не могу вызвать функцию со значением набора записей, я просто индивидуально проверю каждую записьв соответствии с моими потребностями, как это:
If IsNull(oRecordset.Fields("CustomerTypeRefFullName").Value) Or IsEmpty(oRecordset.Fields("CustomerTypeRefFullName").Value) Or oRecordset.Fields("CustomerTypeRefFullName").Value = "" Then
MsgBox "potato"
End If