ดาวน์โหลดโปรแกรม RSS Reader ได้ที่นี่ ...

|
|
|
Visitors - Session views |       
7 ธันวาคม พ.ศ.2549 101 Users On-Line. |
|
Visitors - Page views |        1 กุมภาพันธ์ พ.ศ.2551 |
|
|
|
 |
|
Run-Time Error 94 ... ปัญหาเล็กๆแต่สร้างความมึนงงได้เป็นอย่างดี 55555+ |
Category »
VB 6/VB.Net โดย : Webmaster เมื่อ 20/10/2551 19:19:00 | (อ่าน : 22967) | ก็ห่างหายไปจากการเขียนบทความมาเป็นเวลานานพอสมควรร่วม 2 เดือน ที่ปักหลักกับงาน 2 โปรแกรม และ 1 Dynamic Web Site ก็เพื่อปากเพื่อท้องผมเองแหละครับ ... หรือ สาวๆท่านใดหัวใจว่างๆ หากสนใจก็เชิญติดต่อเข้ามาได้เลยน่ะครับ ผมรับรองว่าจะหาเลี้ยงด้วยลำแข้งของตัวผมเองเลยทีเดียว 55555+ ... เอาล่ะครับหันกลับมารับใช้เพื่อนพ้องน้องพี่กันต่อไปดีกว่า แต่ก่อนที่จะเขียนบทความนี้ก็ต้องไปสืบเสาะกับ Google เขาซ่ะก่อนล่ะว่ามีใครกล่าวถึงเรื่องนี้หรือยัง อ้อ ... ยังไม่มี ถึงมีก็คนละสไตล์ ... แหล่มๆๆๆๆ ... จะว่าไปแล้ว Run-time error 94 : Invalid use of Null ค่อนข้างจะเกี่ยวข้องกับเรื่องของฐานข้อมูลเป็นหลักอยู่แล้ว ใครที่เป็นมือใหม่ๆก็จะงงกันเป็นแถว (ยกเว้นไปลอกจากหนังสือเขามาทั้งหมด แล้วก็รันๆๆๆๆ ผ่านแล้ว ไม่มี Error ... ตูเขียนโปรแกรมเป็นแล้ว โย้วววว ... แบบนี้ก็คงจะไม่มีวันรู้หรอกครับ ... 55555+) สำหรับท่านใดที่เคยติดตามบทความเรื่อง VB6 ของผมมาโดยตลอด จะพบอะไรบางอย่างที่ประหลาดๆแตกต่างไปจากหนังสืออยู่แล้วแหละครับ เพราะ Error นี้ มันเกิดขึ้นจากตัวเราผู้เขียนโปรแกรมขึ้นมาเองไงล่ะครับ ... เราลองมาดูคำเฉลยกัน
- Run-time error 94 : Invalid use of Null
- การดัก หรือ Trap Error ... แล้วมันผิดปกติตรงไหนกันล่ะเนี่ย
- จากภาพ คือ การนำข้อมูลเข้ามาแสดงผลในตารางกริด แต่ติดตรงที่หาก RS("CustomerID") ไม่มีค่าใดๆเลย ก็จะเกิดปัญหา Run-time error 94 ขึ้นมาทันที
- ตารางฐานข้อมูลกำหนดให้ฟิลด์ CustomerID เป็นแบบ Text และ อนุญาตให้ความยาวเป็นศูนย์ได้ (คือไม่ต้องใส่ค่าอะไรเลยก็ได้) ... นี่แหละคือตัวสร้างปัญหา
- การแก้ปัญหาด้วยการใส่เครื่องหมาย Double Quote "" วางไว้ก่อนเพื่อเชื่อม (ด้วยเครื่องหมาย &) กับข้อมูลอีกครั้งหนึ่ง แต่เฉพาะที่เป็นตัวอักษรเท่านั้นน่ะครับ และแน่นอนว่าหาก RS("CustomerID") เป็นค่าว่างมา ก็จะไม่มี Error เกิดขึ้นเลย (ไม่ได้แปลว่าเราหลบ Error น่ะครับ)
ดังนั้นแล้วกรณีที่เก็บข้อมูลเป็นแบบ Text หรือ String ไม่ว่าจะใช้ฐานข้อมูลตัวไหนก็ตามที เราจะต้องกระทำอย่างที่ผมได้อธิบายมาแล้วข้างต้นเสมอ นี่คือตัวอย่างของการสร้าง Bug ขึ้นมาน่ะครับ ... ลองดูที่ CustomerPK (ค่าตัวเลข - Number) ซึ่งผมทะลึ่งเอาเครื่องหมาย Double Quote ไปใส่เอาไว้ก่อน ให้นักเรียนโข่งทั้งหลายลองคิดตามไปด้วยน่ะครับว่าโอกาสที่โปรแกรมจะทำงานพลาด จะเกิดขึ้นได้อีกในกรณีไหน และ เมื่อไร หรือว่ามันจะไม่เกิด Error ใดๆขึ้นมาเลย ... 55555+
|
|