วันเสาร์ที่ 12 กุมภาพันธ์ พ.ศ. 2554

FUNCTION NTZ NVL แบบ ORACLE

หลายๆ ครั้ง เรามักพบปัญหา การนำค่าใน FIELD มาคำนวณ แล้วพบ ว่า ค่าที่ได้เป็น ว่างๆ  ปัญหาหลักส่วนหนึ่วคือ ค่าใน FIELD เป็น ว่างๆ หรือ NULL   ตย  เช่น  เราตั้งค่า AMOUNT + VAT ไว้  ในรายงาน หรือ QUERY ถ้า RECORD ใด ที่ VAT เป็น ช่องว่าง  จะทำให้ AMOUNT+VAT = NULL ไปด้วย

วิธีแก้ พื้นๆ ก็ไปไล่ UPDATE ค่าให้เป็น 0   ,  ผมแนะนำการทำ FUNCTION มาช่วย โดยให้เก็บ FUNCTION นี้ไว้ใน MODULE  ผมเรียกมันว่า ntz

FUNCTION NTZ(vain)
     if  isnull(varin) then
         ntz=0
     else
         ntz =varin
     end if
END FUNCTION

การนำ ไปใช้ ก็เพียงแต่ ใส่ FUNCTION ครอบ ตยเช่น =AMOUNT+VAT ก็ใส่เป็น =ntz(AMOUNT) + ntz(VAT)  เรานำไปใช้ได้ ทั้งใน QUERY REPORT และ FORM



เรานำ FUNCTION ดังกล่าว ไป ดัดแปลง เพื่อให้เทียบเคียงกับ FUNCTION NVL แบบ ORACLE ได้ เช่นกัน โดยการปรับเป็น FUNCTION ดังนี้   

FUNCTION NVL(vain, varnull)
     if  isnull(varin) then
         ntz=varnull
     else
         ntz =varin
     end if
END FUNCTION

แต่ผมนิยมใช้ NTZ เพราะมี PARAMETER เดียวโดดๆ  นำไปครอบสูตรแล้วได้ผลเลย  ส่วน NTZ ต้องพิมพ์เพิ่ม อีก 2 3 ตัวครับ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น