Nz 函數(shù)

此頁沒有內(nèi)容條目
內(nèi)容

expandtri全部顯示

當(dāng)一個(gè) VariantNull 時(shí),使用 Nz 函數(shù)可以返回 0、零長度字符串 (" ") 或其他指定值。例如,可以使用該函數(shù)將 Null 值轉(zhuǎn)換為其他值并防止它通過表達(dá)式擴(kuò)散。

Nz(variant, [valueifnull])

Nz 函數(shù)具有以下參數(shù):

參數(shù)

說明

variant

數(shù)據(jù)類型Variant 的變量。

Valueifnull

可選參數(shù)(除非在查詢中使用)。一個(gè) Variant,提供當(dāng) variant 參數(shù)為 Null 時(shí)的返回值。該參數(shù)使您能夠返回一個(gè)除 0 或零長度字符串以外的其他值。

注釋  如果在查詢的表達(dá)式中使用不帶 ValueIfNull 參數(shù)的 Nz 函數(shù),則對包含空值的字段,其返回結(jié)果為零長度字符串。

 

如果 variant 參數(shù)的值為 Null,Nz 函數(shù)將返回零或零長度字符串(當(dāng)用在查詢表達(dá)式中時(shí),總是返回零長度字符串),這取決于上下文表明該值是數(shù)值還是字符串。如果包含了可選 valueifnull 參數(shù),則當(dāng) variant 參數(shù)為 Null 時(shí),Nz 函數(shù)將返回由該參數(shù)指定的值。當(dāng)在查詢表達(dá)式中使用時(shí),NZ 函數(shù)總是包含 valueifnull 參數(shù)。

如果 variant 的值不為 Null,則 Nz 函數(shù)返回 variant 的值。

說明

Nz 函數(shù)對可能包含 Null 值的表達(dá)式是很有用的。要使表達(dá)式即使在包含 Null 值時(shí)也能計(jì)算得到一個(gè)非 Null 值,可使用 Nz 函數(shù)來返回 0、零長度字符串或一個(gè)自定義的返回值。

例如,表達(dá)式 2 + varXVariant varXNull 時(shí)總是返回 Null 值。而 2 + Nz(varX) 卻返回 2。

可以經(jīng)常使用 Nz 函數(shù)作為 IIf 函數(shù)的替代函數(shù)。例如,在下面的代碼中,需要用兩個(gè)包含 IIf 函數(shù)的表達(dá)式來返回所需的結(jié)果。第一個(gè)包含 IIf 函數(shù)的表達(dá)式用于檢查變量的值,并且如果該值為 Null,則將其轉(zhuǎn)換為零。

varTemp = IIf(IsNull(varFreight), 0, varFreight)

varResult = IIf(varTemp > 50, "High", "Low")

在下一個(gè)示例中,Nz 函數(shù)提供與第一個(gè)表達(dá)式相同的功能,并且一步即可獲得所需的值而不需要分兩步進(jìn)行。

varResult = IIf(Nz(varFreight) > 50, "High", "Low")

如果為可選參數(shù) valueifnul 提供了一個(gè)值,則當(dāng) variant 為 Null 時(shí),將返回該值。通過包含該可選參數(shù),可以避免使用含有 IIf 函數(shù)的表達(dá)式。例如,下面的表達(dá)式使用 IIf 函數(shù),在 varFreight 的值為 Null 時(shí)返回一個(gè)字符串。

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

在下一個(gè)示例中,為 Nz 函數(shù)提供的可選參數(shù)提供在 varFreightNull 時(shí)返回的字符串。

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

示例

下面的示例對窗體上的一個(gè)控件進(jìn)行計(jì)算,并根據(jù)控件值返回兩個(gè)字符串之一。如果控件值為 Null,過程就會使用 Nz 函數(shù)將 Null 值轉(zhuǎn)換為零長度字符串。

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