Microsoft Access Club > Access一日一見 >このページ >次頁 <前項  サイト内検索


Nz関数…



Nz 関数は、バリアント型 (Variant) の変数が Null 値である場合、0、長さ 0 の文字列 ("")、または別の特定の値を返します。たとえば、この関数を使用して、Null 値を別の値に変換し、式が Null 値に評価されないようにします。

基本構文

Nz(variant, [valueifnull])

Nz 関数には、次の引数があります。

引数 内容
variant データ型がバリアント型の変数を指定します。
valueifnull 省略可能 (クエリで使用される場合を除きます)。引数 Variant の値が Null のときに、値を返す変数です。この引数を指定すると、0 または長さ 0 の文字列以外の値が返されます。

メモ   引数 valueIfnull を使わずにクエリの式で Nz 関数を使用すると、フィールドが Null 値を含む長さ 0 の文字列になります。

  1. 引数 variant の値が Null 値の場合、Nz 関数は、コンテキストによって値が数値か文字列かを判断し、数値の 0 または長さ 0 の文字列 (クエリの式で使用すると、常に長さ 0 の文字列を返します) を返します。
  2. 省略可能な引数 valueifnull を指定した場合で、variant が Null 値の場合は、この引数で指定した値が返されます。
  3. クエリの式で使用する場合、Nz 関数は引数 valueifnull を指定する必要があります。
  4. 引数 variant の値が Null 値でない場合は、引数 variant の値が返されます。

解説

Nz 関数は、Null 値を含む式で使用すると威力を発揮します。

  • 式に Null 値が含まれている場合でも、Null 値以外の値に式を評価するには、Nz 関数を使用して、0、長さ 0 の文字列、または他の戻り値を取得します。

たとえば、2 + varX という式は、バリアント型の変数 varX が Null の場合、常に Null値を返します。しかし、2 + Nz(varX) では 2 を返します。

IIf 関数代用で使用

Nz 関数を、IIf 関数の代わりに使用できる場合があります。

  • たとえば、次のコードでは、目的の結果を得るために、IIf 関数を含む 2 つの式が必要です。最初の式は、変数の値をチェックし、Null 値の場合は 0 に変換します。
varTemp = IIf(IsNull(varFreight), 0, varFreight)
varResult = IIf(varTemp > 50, "High", "Low")

使用例

次の例では、Nz 関数は最初の式を代替します。これによって、目的の結果を 2 ステップでなく 1 ステップで得ることができます。

varResult = IIf(Nz(varFreight) > 50, "High", "Low")
  1. 省略可能な引数 valueifnull に値を指定すると、variant が Null 値の場合、その値が返されます。
  2. Nz 関数の引数 valueifnull を指定して、IIf 関数の代わりに使用できる場合があります。
  3. たとえば、次の式では、IIf 関数によって、変数 varFreight の値が Null 値の場合、配送料無料 という文字列が返されます。
varResult = IIf(IsNull(varFreight), "配送料無料", varFreight)
その2

次の例では、変数 varFreight が Null 値の場合は、Nz 関数の引数 valueifnull に指定した "配送料無料" という文字列が返されます。

varResult = Nz(varFreight, "配送料無料")
その3

次の例では、フォームのコントロールを評価し、そのコントロール値を基に 2 つの文字列のいずれかを返します。コントロールの値が Null 値の場合、Nz 関数によって、Null 値を長さ 0 の文字列に変換します。

Public Sub SamplePro()

    Dim frm As Form
    Dim ctl As Control
    Dim varResult As Variant

    ' [受注] フォームを示す Form オブジェクト変数を設定します。
    Set frm = Forms!受注

    ' [出荷先名] を示す Control オブジェクト変数を設定します。
    Set ctl = frm!出荷先名

    ' コントロールの値を基に結果を選択します。
    varResult = IIf(Nz(ctl.Value) = vbNullString, "値なし。", _
                                        "値は " & ctl.Value & " です。")

    ' 結果を表示します。
    MsgBox varResult, vbExclamation

End Sub

関連ページ

※Accessヘルプから引用しています。

2003/01/27 

ページの先頭へ 前ページへ戻る


Nz関数…


-Microsoft Access Club-

年額2,400円でドメインネームサーバーをご用意します。自宅サーバ構築時にご利用下さい。自宅サーバーは応用範囲が広いです。
年額2,400円でドメインネームサーバー。
自社・自宅サーバ構築時にご利用下さい。
やはり、自前サーバーは応用範囲が広いです。