คุณสามารถใช้ฟังก์ชัน Nz เพื่อส่งกลับค่าศูนย์ สตริงความยาวเป็นศูนย์ (" ") หรือค่าที่ระบุอื่นๆ เมื่อ ตัวแปร เป็น Null ตัวอย่างเช่น คุณสามารถใช้ฟังก์ชันนี้เพื่อแปลงค่า Null เป็นค่าอื่นและป้องกันไม่ให้เผยแพร่ผ่านนิพจน์
ไวยากรณ์
Nz ( variant [, valueifnull ] )
ไวยากรณ์ของฟังก์ชัน Nz มีอาร์กิวเมนต์ดังนี้
อาร์กิวเมนต์ |
คำอธิบาย |
variant |
จำเป็น ตัวแปรของ ตัวแปร ชนิดข้อมูล |
valueifnull |
ระบุหรือไม่ก็ได้ (ยกเว้นใช้ในคิวรี) ตัวแปร ที่ให้ค่าที่จะส่งกลับถ้าอาร์กิวเมนต์ตัวแปรเป็น Null อาร์กิวเมนต์นี้ทําให้คุณสามารถส่งกลับค่าที่ไม่ใช่ศูนย์หรือสตริงที่มีความยาวเป็นศูนย์ได้ หมายเหตุ: ถ้าคุณใช้ฟังก์ชัน Nz ในนิพจน์ในคิวรีโดยไม่ใช้อาร์กิวเมนต์ valueifnull ผลลัพธ์จะเป็นสตริงที่มีความยาวเป็นศูนย์ในเขตข้อมูลที่มีค่า Null |
ถ้าค่าของอาร์กิวเมนต์ ตัวแปร เป็น Null ฟังก์ชัน Nz จะส่งกลับตัวเลขศูนย์หรือสตริงที่มีความยาวเป็นศูนย์ (จะส่งกลับสตริงที่มีความยาวเป็นศูนย์เสมอเมื่อใช้ในนิพจน์คิวรี) ขึ้นอยู่กับว่าบริบทระบุค่าควรเป็นตัวเลขหรือสตริง ถ้ามีอาร์กิวเมนต์ valueifnull (ระบุหรือไม่ก็ได้) ฟังก์ชัน Nz จะส่งกลับค่าที่ระบุโดยอาร์กิวเมนต์นั้น ถ้าอาร์กิวเมนต์ตัวแปรเป็น Null เมื่อใช้ในนิพจน์คิวรี ฟังก์ชัน NZ ควรมีอาร์กิวเมนต์ valueifnull เสมอ
ถ้าค่าของตัวแปรไม่ใช่ Null ฟังก์ชัน Nz จะส่งกลับค่าของตัวแปร
ข้อสังเกต
ฟังก์ชัน Nz มีประโยชน์สําหรับนิพจน์ที่อาจมีค่า Null เมื่อต้องการบังคับให้นิพจน์ประเมินเป็นค่าที่ไม่ใช่ Null แม้ว่าจะมีค่า Null อยู่ก็ตาม ให้ใช้ฟังก์ชัน Nz เพื่อส่งกลับค่าศูนย์ สตริงที่มีความยาวเป็นศูนย์ หรือค่าที่ส่งกลับแบบกําหนดเอง
ตัวอย่างเช่น นิพจน์ 2 + varX จะส่งกลับค่า Null เสมอเมื่อ ตัวแปร 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 อาร์กิวเมนต์ที่เป็นตัวเลือก ค่านั้นจะถูกส่งกลับเมื่อ variant เป็น Null ด้วยการรวมอาร์กิวเมนต์ที่เป็นตัวเลือกนี้ คุณอาจหลีกเลี่ยงการใช้นิพจน์ที่มีฟังก์ชัน IIf ตัวอย่างเช่น นิพจน์ต่อไปนี้ใช้ฟังก์ชัน IIf เพื่อส่งกลับสตริงถ้าค่าของ varFreight เป็น Null
varResult = IIf(IsNull(varFreight), _
"No Freight Charge", varFreight)
ในตัวอย่างถัดไป อาร์กิวเมนต์เสริมที่ระบุให้กับฟังก์ชัน Nz จะให้สตริงที่จะถูกส่งกลับถ้า varFreight เป็น Null
varResult = Nz(varFreight, "No Freight Charge")
ตัวอย่างคิวรี
Expression |
ผลลัพธ์ |
SELECT ProductID, NZ(Discount,"No Detail Available") AS Expr2 FROM ProductSales; |
ส่งกลับ "ProductID" ในคอลัมน์ Expr1 ประเมินค่า 'Null' ในเขตข้อมูล "Discount" และส่งกลับ "ไม่มีรายละเอียดที่พร้อมใช้งาน" สําหรับค่า 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