當(dāng)一個(gè) Variant 為 Null 時(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 + varX 在 Variant varX 為 Null 時(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ù)提供在 varFreight 為 Null 時(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