ในฟิลด์ 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
--------------------------------------------