VB, используя набор записей ADO внутри функции vb, проверяя на ноль - PullRequest
0 голосов
/ 11 августа 2011

У меня странное поведение, которое меня озадачило.Я создал функцию в 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

Ответы [ 2 ]

1 голос
/ 11 августа 2011

Мне кажется, у вас неправильная логика:

Если IsNull (newstring) или IsEmpty (newstring) Или newstring = "" Тогда
isitnullorempty = Ложь
Else
isitnullorempty = True
Конец, если

Разве это не должно быть

Если IsNull (newstring) или IsEmpty (newstring) Или newstring = "" Тогда

isitnullorempty = TRUE

прочее

isitnullorempty = FALSE

Конец, если

0 голосов
/ 24 августа 2011

Ответ: если вы хотите передать нуль параметру функции, этот параметр должен быть установлен как вариант. Открытая функция isitnullorempty (newstring As Variant) As Boolean

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...