Nz 函数

应用对象
Microsoft 365 专属 Access Access 2024 Access 2021 Access 2019 Access 2016

当变量为 Null 时,可以使用 Nz 函数返回零、零长度字符串 (“ ”) 或其他指定值。 例如,可以使用此函数将 Null 值转换为另一个值,并阻止它通过表达式传播。

语法

Nz (variant [, valueifnull ] )

Nz 函数的语法有以下参数:

参数 说明
Variant 必需。 数据类型为 Variant 的变量。
valueifnull 可选(除非用于查询中)。 一种 变体 ,用于在 变体 参数为 Null 时提供要返回的值。 此参数允许您返回非零值或零长度的字符串。
注意: 如果在查询中的表达式中使用 Nz 函数而不使用 valueifnull 参数,则结果将在包含 null 值的字段中为零长度字符串。

如果 变体 参数的值为 Null,则 Nz 函数返回数字零或零长度字符串 (在查询表达式) 中使用时始终返回零长度字符串,具体取决于上下文指示值应为数字还是字符串。 如果包含可选的 valueifnull 参数,则 Nz 函数将在 变体 参数为 Null 时返回该参数指定的值。 在查询表达式中使用时, NZ 函数应始终包含 valueifnull 参数,

如果 variant 的值不为 Null,则 Nz 函数返回 variant 的值。

备注

Nz 函数对于可能包含 Null 值的表达式很有用。 若要强制表达式计算为非 Null 值(即使包含 Null 值),请使用 Nz 函数返回零、零长度字符串或自定义返回值。

例如,当 VariantvarXNull 时,表达式2 + varX将始终返回 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 提供值,则当 变量Null 时,将返回该值。 通过包含此可选参数,您可以避免使用包含 IIf 函数的表达式。 例如,以下表达式使用 IIf 函数,如果 IIf 函数的 varFreight 值为 Null,则返回一个字符串。

varResult = IIf(IsNull(varFreight), _
    "No Freight Charge", varFreight)

在下一个示例中,提供给 Nz 函数的可选参数提供如果为 NullvarFreight要返回的字符串。

varResult = Nz(varFreight, "No Freight Charge")

查询示例

Expression 结果
SELECT ProductID, NZ (Discount,“No Detail Available”) AS Expr2 FROM ProductSales; 返回 Expr1 列中的“ProductID”,计算字段“Discount”中的“Null”值,并为所有 Null 值返回“无可用的详细信息” (按原) 样返回非 Null 值。
SELECT ProductID, NZ (Discount,“No Detail Available”) AS ReplaceNull FROM ProductSales; 在“产品”列中返回“ProductID”,计算“折扣”字段中的“Null”值,并为所有 Null 值返回“无可用详细信息” (返回) 的非 null 值,并显示在 ReplaceNull 列中。

VBA 示例

注意

下面的示例演示了在Visual Basic for Applications (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