Неправильное использование нулевой ошибки, когда код не должен быть выполнен - PullRequest
0 голосов
/ 14 февраля 2020

У меня проблема с

Неправильное использование значения null

. Я знаю, как этого избежать с помощью Nz, но это не решает мою проблему.

У меня есть функция, которая создает запрос sql на основе данных из набора записей. Вот (псевдо) код:

string = IIf(Nz(rst.Fields(0).Value, "") = "", "NULL", MyFunction(rst.Fields(0).Value))

Код выдает значение NULL, поэтому Я думаю, не нужно выполнять функцию MyFunction, но во время выполнения я получить вышеуказанную ошибку, и это вызвано внутри MyFunction - почему?

Ответы [ 2 ]

1 голос
/ 14 февраля 2020

Как четко указано в документации , функция VBA IIf всегда будет оценивать как truepart , так и falsepart .

Если вы хотите избежать выполнения falsepart , вам понадобится фактический блок If-Then-Else или оператор Select-Case в VBA.

0 голосов
/ 14 февраля 2020

Вы можете изменить на:

Dim NullValue As Variant

NullValue = <some value that will not cause MyFunction to fail>
string = IIf(IsNull(rst.Fields(0).Value), "NULL", MyFunction(Nz(rst.Fields(0).Value, NullValue))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...