Функцию Nz можно использовать для возврата нуля, пустая строка (" "), или другого указанного значения, если значение Variant равно NULL. Например, эту функцию можно использовать для преобразования значения NULL в другое значение и предотвращения его распространения через выражение.
Синтаксис
Nz ( variant [, valueifnull ] )
Функция Nz имеет аргументы, указанные ниже.
Аргумент |
Описание |
Переменная |
Обязательный аргумент. Переменная, имеющая тип данных Variant. |
Значение_если_null |
Необязательный аргумент (если он используется не в запросе) типа Variant. Объект Variant, предоставляющий возвращаемое значение, если аргумент variant имеет значение NULL. Этот аргумент позволяет вернуть значение, отличное от нуля или пустой строки. Примечание: Если функция Nz используется в выражении запроса без аргумента Значение_если_null , в результате выполнения этой функции для полей, содержащих пустые значения, будет возвращена пустая строка. |
Если значение аргумента variant равно NULL, функция Nz возвращает нулевую или нулевую строку (всегда возвращает строку нулевой длины при использовании в выражении запроса) в зависимости от того, должен ли контекст указывать, должно ли значение быть числом или строкой. Если включен необязательный аргумент valueifnull , функция Nz вернет значение, указанное этим аргументом, если аргумент variant имеет значение NULL. При использовании в выражении запроса функция NZ всегда должна включать аргумент valueifnull .
Если значение variant не равно NULL, функция Nz возвращает значение variant.
Замечания
Функция Nz полезна для выражений, которые могут содержать значения NULL . Чтобы принудить выражение к значению, отличному от NULL , даже если оно содержит значение NULL , используйте функцию Nz для возврата нуля, строки нулевой длины или настраиваемого возвращаемого значения.
Например, выражение 2 + varX всегда возвращает значение NULL , еслиvarXVariant имеет значение Null. Однако 2 + Nz(varX) возвращает значение 2.
Часто можно использовать функцию Nz в качестве альтернативы функции IIf . Например, в следующем коде два выражения, включая функцию IIf , необходимы для возврата требуемого результата. Первое выражение, включающее функцию IIf, используется для проверка значения переменной и преобразования его в ноль, если оно имеет значение NULL.
varTemp = IIf(IsNull(varFreight), 0, varFreight)
varResult = IIf(varTemp > 50, "High", "Low")
В следующем примере функция Nz предоставляет те же функции, что и первое выражение, и требуемый результат достигается за один шаг, а не за два.
varResult = IIf(Nz(varFreight) > 50, "High", "Low")
Если указать значение для необязательного аргумента valueifnull, это значение будет возвращено, если параметр variant имеет значение Null. Включив этот необязательный аргумент, можно избежать использования выражения, содержащего функцию IIf . Например, в следующем выражении функция IIf возвращает строку, если значение varFreight равно Null.
varResult = IIf(IsNull(varFreight), _
"No Freight Charge", varFreight)
В следующем примере необязательный аргумент, предоставленный функции Nz , предоставляет строку, возвращаемую, если varFreight имеет значение Null.
varResult = Nz(varFreight, "No Freight Charge")
Примеры запросов
Expression |
Результаты |
SELECT ProductID, NZ(Discount, "No Detail Available") AS Expr2 FROM ProductSales; |
Возвращает "ProductID" в столбце Expr1, вычисляет значения NULL в поле "Скидка" и возвращает значение "Нет доступных сведений" для всех значений NULL (возвращает значения, отличные от NULL, как есть). |
SELECT ProductID, NZ(Discount, "No Detail Available") AS ReplaceNull FROM ProductSales; |
Возвращает "ProductID" в столбце Продукт, вычисляет значения NULL в поле "Скидка" и возвращает значение "Нет сведений доступно" для всех значений NULL (возвращает значения, отличные от NULL) и отображается в столбце ReplaceNull. |
Пример VBA
Примечание: В примерах ниже показано, как использовать эту функцию в модуле Visual Basic для приложений (VBA). Чтобы получить дополнительные сведения о работе с VBA, выберите Справочник разработчика в раскрывающемся списке рядом с полем Поиск и введите одно или несколько слов в поле поиска.
В следующем примере элемент управления вычисляется в форме и возвращается одна из двух строк на основе значения элемента управления. Если значение элемента управления равно NULL, процедура использует функцию Nz для преобразования значения NULL в строку нулевой длины.
Public Sub CheckValue()
Dim frm As Form Dim ctl As Control Dim varResult As Variant ' Return Form object variable ' pointing to Orders form. Set frm = Forms!Orders ' Return Control object variable ' pointing to ShipRegion. Set ctl = frm!ShipRegion ' Choose result based on value of control. varResult = IIf(Nz(ctl.Value) = vbNullString, _ "No value.", "Value is " & ctl.Value & ".") ' Display result. MsgBox varResult, vbExclamation End Sub