วิธีใช้ฟังชั่น Nz ใช้ที่ไหน ตรงไหน รบกวนขอตัวอย่างด้วยครับ



0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

16 ต.ค. 61 , 23:21:21
อ่าน 637 ครั้ง

ชีวิต ไม่สิ้นหวัง

  • สมาชิกไท.Access
  • กระทู้: 3

    • ดูรายละเอียด


 

17 ต.ค. 61 , 08:28:44
ตอบกลับ #1

ปิ่นณรงค์

:yuush:
Nz ( ตัวแปร, [ ค่าที่ต้องการแปลงถ้าตัวแปรนั้นเป็นค่าว่างหรือ Null ] )

Nz  คือ Function ที่ใช้แปลงค่าจากตัวแปร ถ้าค่านั้นว่าง หรือ Null ก็ให้แปลงค่านั้นเป็นจำนวนตามที่เรากำหนดครับ
เช่น
Nz(Field1,5) + Nz(Field2,5) สมมุติใน Field1 = Null และ Field2 = 2 ผลที่ได้ก็คือ 5 + 2 =  7 เป็นต้น
หรือจะแปลงค่าว่างหรือ Null เป็นข้อความก็ได้เหมือนกันคับ


แต่โดยปกติการนำไปใช้ที่เจอบ่อยๆก็คือการใช้ในการแปลงค่า Null เป็น 0 กันซะส่วนใหญ่ครับ และจำเป็นต้องใช้ถ้าท่าน สร้างการคำนวนบน Form เพราะถ้า textbox ในกรณีใช้การคำนวน textbox หลายๆตัว เช่น textbox1 + textbox2 +textbox3 ถ้า textbox ตัวใดตัวหนึ่งนั้นเป็นค่าว่าง มันจะแสดง Error ขึ้นมาทันที เพราะเหตุนี้ก็เลยนิยมใช้ Nz ในการดักจับ Error พวกนี้ไว้ด้วยครับ โดยใส่เป็น txtSum =  Nz(textbox1,0) + Nz(textbox2,0) + Nz(textbox3,0)

การใส่ Nz คือการกำหนด ให้ถ้า Field ใดๆ หรือ Control ใดๆ บน Form ที่มีค่าว่างหรือ Null ให้แปลงค่าเป็น 0 เพื่อไม่ให้เกิดการผิดพลาดในการคำนวน
การใส่ Nz ตัวอย่างในคิวรี่ถ้าต้องการ คำนวนโดยใช้ฟิวใด ก็ไปอ้างอิงเอาตรงนั้นเช่น
« แก้ไขครั้งสุดท้าย: 17 ต.ค. 61 , 08:34:27 โดย ปิ่นณรงค์ »
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: ชีวิต ไม่สิ้นหวัง, อุดมโชค สมหวัง

17 ต.ค. 61 , 10:50:01
ตอบกลับ #2

TTT

ในฟิลด์ Data Type แบบ Text หากกำหนดคุณสมบัติหัวข้อ Allow Zero Length: Yes จะเป็นการกำหนดให้โปรแกรม MS Access เห็นค่าของสตริง "" ไม่เหมือนกับค่า Null กล่าวคือ ค่า Null ของ String ไม่เหมือนกับค่า String ที่มีความยาวเป็น 0 เช่น เมื่อเรากำหนด Allow Zero Length: Yes และกำหนด Required: Yes (หมายถึง ฟิลด์นี้ต้องใส่ข้อมูลห้ามเป็นค่าว่าง) เมื่อเราทำการคีย์ข้อมูลเราสามารถใส่ค่าเครื่องหมาย "" บนฟิลด์ที่กำหนด Required: Yes ได้ โดยโปรแกรมจะเห็นว่ามีค่าแล้ว แต่หากกำหนด Allow Zero Length: No และกำหนด Required: Yes เมื่อเราคีย์ข้อมูลใส่ค่าเครื่องหมาย "" บนฟิลด์ที่กำหนด Required: Yes โปรแกรมจะไม่ยอมให้ผ่านไป ยังคงฟ้องให้ผู้ใช้ใส่ข้อมูลอยู่ นั่นคือโปรแกรมเห็นค่า "" เป็นค่า Null นั่นเอง

ฟังก์ชัน Nz() ก็เช่นกัน เพราะฟังก์ชั่น Nz() จะมองค่า "" ไม่เหมือนกับค่า Null การใช้งานเราตัองมั่นใจว่าค่าที่เราต้องการจะใช้ Nz() ต้องเป็นค่า Null จริงๆ ไม่ใช่ค่า "" เช่น
?Nz(Null,0) = 0
?Nz("",0) = ""
จะเห็นว่าหากเราใช้ Nz() กับค่า String ที่เป็น "" ฟังก์ชั่น Nz() จะไม่ให้ค่าตามที่เราต้องการ
เรื่องของค่าว่าง ค่าศูนย์ ไม่มีค่า และการใช้ฟังก์ชั่นเกี่ยวกับการไม่ใส่ค่าต่างๆ เหล่านี้ต้องทดลองและศึกษาดูครับ มันมีอยู่เยอะเหมือนกันใน MS Access หลายคนตกม้าตายตรงการตรวจสอบค่าพวกนี้ จนทำให้โปรแกรมที่เขียนทำงานผิดพลาดแบบไม่รู้ตัว (ผมด้วยคนนึง) ผมเคยเขียนการทดสอบเล่นๆไว้ลองเทียบดูนะครับ เป็นตัวอย่าง
--------------------------------------------
Dim myVar As Variant
myVar = Null
 
If Isnull(myVar) Then        Return: True
If IsEmpty(myVar) Then       Return: False
If myVar = "" Then           Return: Null
If myVar = vbNullString Then Return: Null
If myVar = vbNullChar Then   Return: Null
If myVar = vbEmpty Then      Return: Null
If myVar & "" = "" Then      Return: True
If Nz(myVar) = "" Then       Return: True
If Len(myVar) = 0 Then       Return: Null
--------------------------------------------
Dim myVar As Variant
myVar = Empty
 
If Isnull(myVar) Then        Return: False
If IsEmpty(myVar) Then       Return: True
If myVar = "" Then           Return: True
If myVar = vbNullString Then Return: True
If myVar = vbNullChar Then   Return: False
If myVar = vbEmpty Then      Return: True
If myVar & "" = "" Then      Return: True
If Nz(myVar) = "" Then       Return: True
If Len(myVar) = 0 Then       Return: True
--------------------------------------------
Dim myVar As Variant
myVar = ""
 
If Isnull(myVar) Then        Return: False
If IsEmpty(myVar) Then       Return: False
If myVar = "" Then           Return: True
If myVar = vbNullString Then Return: True
If myVar = vbNullChar Then   Return: False
If myVar = vbEmpty Then      Return: False
If myVar & "" = "" Then      Return: True
If Nz(myVar) = "" Then       Return: True
If Len(myVar) = 0 Then       Return: True
--------------------------------------------
Dim myVar As Variant
myVar = vbNullString
 
If Isnull(myVar) Then        Return: False
If IsEmpty(myVar) Then       Return: False
If myVar = "" Then           Return: True
If myVar = vbNullString Then Return: True
If myVar = vbNullChar Then   Return: False
If myVar = vbEmpty Then      Return: False
If myVar & "" = "" Then      Return: True
If Nz(myVar) = "" Then       Return: True
If Len(myVar) = 0 Then       Return: True
--------------------------------------------
Dim myVar As Variant
myVar = vbNullChar
 
If Isnull(myVar) Then        Return: False
If IsEmpty(myVar) Then       Return: False
If myVar = "" Then           Return: False
If myVar = vbNullString Then Return: False
If myVar = vbNullChar Then   Return: True
If myVar = vbEmpty Then      Return: False
If myVar & "" = "" Then      Return: False
If Nz(myVar) = "" Then       Return: False
If Len(myVar) = 0 Then       Return: False
--------------------------------------------
Dim myVar As Variant
myVar = vbEmpty
 
If Isnull(myVar) Then        Return: False
If IsEmpty(myVar) Then       Return: False
If myVar = "" Then           Return: False
If myVar = vbNullString Then Return: False
If myVar = vbNullChar Then   Return: False
If myVar = vbEmpty Then      Return: True
If myVar & "" = "" Then      Return: False
If Nz(myVar) = "" Then       Return: False
If Len(myVar) = 0 Then       Return: False
--------------------------------------------
ฐานข้อมูลเป็นเรื่องใกล้ตัว ใครๆก็ทำฐานข้อมูลเองได้นะครับhttp://www.youtube.com/c/AccessCreator link
 
โพสต์นี้ได้รับคำขอบคุณจาก: ชีวิต ไม่สิ้นหวัง, อุดมโชค สมหวัง

17 ต.ค. 61 , 21:36:58
ตอบกลับ #3

ชีวิต ไม่สิ้นหวัง

  • สมาชิกไท.Access
  • กระทู้: 3

    • ดูรายละเอียด

ต้องขอบคุณทั้ง 2 ท่านที่ชี้แนะครับ ได้แนวทางขึ้นมาเลยครับ ลองทำก่อนถ้าติดอย่างไร จะมาถามครับ

 


บอร์ดเรียนรู้ Access สำหรับคนไทย