ฟังก์ชัน Nz

นำไปใช้กับ
Access for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

คุณสามารถใช้ฟังก์ชัน Nz เพื่อส่งกลับค่าศูนย์ สตริงที่มีความยาวเป็นศูนย์ (" ") หรือค่าที่ระบุอื่นเมื่อ Variant เป็น Null ตัวอย่างเช่น คุณสามารถใช้ฟังก์ชันนี้เพื่อแปลงค่า Null เป็นค่าอื่นและป้องกันไม่ให้แพร่กระจายผ่านนิพจน์

ไวยากรณ์

Nz(variant [, valueifnull ] )

ไวยากรณ์ของฟังก์ชัน Nz มีอาร์กิวเมนต์ดังนี้

อาร์กิวเมนต์ คำอธิบาย
variant จำเป็น ตัวแปรของชนิดข้อมูล Variant
valueifnull จะมีหรือไม่มีก็ได้ (ยกเว้นถ้าใช้ในคิวรี) ตัวแปรที่ให้ค่าที่จะถูกส่งกลับถ้าอาร์กิวเมนต์ variant เป็น Null อาร์กิวเมนต์นี้จะทําให้คุณสามารถส่งกลับค่าอื่นนอกเหนือจากศูนย์ หรือสตริงที่มีความยาวเป็นศูนย์ได้
หมายเหตุ: ถ้าคุณใช้ฟังก์ชัน Nz ในนิพจน์ในคิวรีโดยไม่ใช้อาร์กิวเมนต์ valueifnull ผลลัพธ์จะเป็นสตริงที่มีความยาวเป็นศูนย์ในเขตข้อมูลที่มีค่า null

ถ้าค่าของอาร์กิวเมนต์ variant เป็น Null ฟังก์ชัน Nz จะส่งกลับตัวเลขศูนย์หรือสตริงที่มีความยาวเป็นศูนย์ (จะส่งกลับสตริงที่มีความยาวเป็นศูนย์เสมอเมื่อใช้ในนิพจน์คิวรี) โดยขึ้นอยู่กับว่าบริบทระบุว่าค่าควรเป็นตัวเลขหรือสตริง ถ้าใส่อาร์กิวเมนต์ valueifnull ที่เป็นทางเลือกแล้ว ฟังก์ชัน Nz จะส่งกลับค่าที่ระบุโดยอาร์กิวเมนต์นั้น ถ้าอาร์กิวเมนต์ variant เป็น Null เมื่อใช้ในนิพจน์คิวรี ฟังก์ชัน NZ ควรมีอาร์กิวเมนต์ valueifnull เสมอ

ถ้าค่าของ variant ไม่ใช่ Null ฟังก์ชัน Nz จะส่งกลับค่าของ variant

ข้อสังเกต

ฟังก์ชัน Nz มีประโยชน์สําหรับนิพจน์ที่อาจมีค่า Null เมื่อต้องการบังคับให้นิพจน์ประเมินเป็นค่าที่ไม่ใช่ Null แม้ว่าจะมีค่า Null อยู่ ให้ใช้ฟังก์ชัน Nz เพื่อส่งกลับค่าศูนย์ สตริงที่มีความยาวเป็นศูนย์ หรือค่าส่งกลับแบบกําหนดเอง

ตัวอย่างเช่น นิพจน์2 + varXจะส่งกลับค่า Null เสมอเมื่อตัวแปรเป็นvarXNull อย่างไรก็ตาม ส่ง 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 เพื่อส่งกลับสตริงถ้าค่าเป็น varFreightNull

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

ในตัวอย่างถัดไป อาร์กิวเมนต์เสริมที่อยู่ในฟังก์ชัน Nz จะมีสตริงที่จะถูกส่งกลับ ถ้าvarFreightเป็น Null

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

ตัวอย่างคิวรี

นิพจน์ ผลลัพธ์
SELECT ProductID, NZ(Discount,"No Detail Available") AS Expr2 FROM ProductSales; ส่งกลับ "ProductID" ในคอลัมน์ นิพจน์ 1 ประเมินค่า 'Null' ในเขตข้อมูล "ส่วนลด" และส่งกลับ "ไม่มีรายละเอียด" สําหรับค่า Null ทั้งหมด (ส่งกลับค่าที่ไม่ใช่ Null ตามที่เป็น)
SELECT ProductID, NZ(Discount,"No Detail Available") AS ReplaceNull FROM ProductSales; ส่งกลับ "ProductID" ในคอลัมน์ Product ประเมินค่า 'Null' ในเขตข้อมูล "Discount" และส่งกลับ "ไม่มีรายละเอียด" สําหรับค่า 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