ข้ามไปที่เนื้อหาหลัก

การเขียน if หรือ else เกี่ยวกับระยะเวลามันมีสิ่งที่ต้องคิดประกอบด้วยนะ

"ทำไมไม่มีความเคลื่อนไหว แต่ผ่านเงื่อนไขเราไปได้"


เรื่องมีอยู่ว่า จะเขียนโค๊ดตรวจสอบเงื่อนไขตรวจสอบความเคลื่อนไหวของข้อมูล ถ้าผ่านมาเกิน 6 เดือนให้แจ้งเตือนถึงสิ่งที่อาจจะทำให้เกิดข้อผิดพลาด หากผู้ใช้ยังฝืนดันทุรังใช้ข้อมูลนั้นต่อไป

IF Month > 6 THEN
     DISPLAY แบร่ๆๆๆ ข้อมูลเก่าเกินไปแล้วนะ ไปตรวจสอบหน่อยซิว่ายังใช้ได้จริง

END IF

Month = ระยะเวลาที่ทำรายการครั้งสุดท้ายเทียบกับปัจจุบัน

ถ้ากำหนดให้วันที่ล่าสุด คือ 2014-05-15
และวันที่ปัจจุบัน คือ 2014-09-04

Month จะมีค่าเท่ากับผลต่างของเดือนคือ 3 เดือนกว่า ซึ่งจะไม่นับเศษ Month ก็จะได้เท่ากับ 3

กรณีนี้ก็คือสามารถทำรายการได้ปกติ เพราะว่ามีการทำรายการไม่เกิน 6 เดือน นั่นก็คือข้อมูลยังใหม่ๆสดๆร้อนๆอยู่นั่นเอง


แล้วถ้าเพิ่งผ่านมาไม่กี่วันอย่างกรณีนี้ล่ะ
ถ้ากำหนดให้วันที่ล่าสุด คือ 2014-09-01
และวันที่ปัจจุบัน คือ 2014-09-04

เห็นมั้ยผ่านมาแค่ 4 วัน ผลต่างของเดือนก็คือ 0 ซึ่งก็ยังไม่เกิน 6 เดือน ก็ทำรายการได้ปกติ


และแล้วก็เกิดปัญหากับเลข 0 ขึ้นจนได้


กรณีที่ข้อมูลเก่า เพิ่มเอาไว้เฉยๆ ไม่ได้ทำรายการใดๆเลย เพราะเปลี่ยนไปใช้ข้อมูลอื่นแทน แต่แล้ววันดีคืนดีก็หยิบกลับมาใช้ซะงั้น


เอาล่ะ...ถึงเวลาที่โค๊ดเช็คเงื่อนไขของเราได้ออกโรงตรวจสอบเสียที 555+


เริ่มจาก ค้นหารายการครั้งล่าสุดที่นำไปใช้ แล้วก็มาคำนวณกับปัจจุบัน
ผลลัพธ์ที่ได้ก็คือ 0 ซึ่งไม่เกิน 6 เอาไปใช้งานได้เลย


แต่แล้ว....


"ข้อมูลนี้ใช้ไม่ได้นะน้อง มันเป็นข้อมูลเก่าเขาไม่ใช้งานแล้ว ปล่อยให้เลือกได้ไง"


"เอ่อ...ผมก็เช็คแล้วนะ T___T"



ได้เวลากลับมาดูโค๊ดตัวเองอีกที "โอ้...ซานต้า" ปล่อยไก่ตัวเบอเร่อเลย ผมเช็คเงื่อนไขไม่หมดครับ เพราะแหล่งที่ต้องเช็คที่จริงมันต้องมี 2 ที่นี่เอง นอกจากตารางความเคลื่อนไหวล่าสุดแล้ว ต้องไปเช็ควันที่เพิ่มข้อมูลหลักด้วยนั่นเอง!!!



ก็ที่มันได้ค่าเป็น 0 ก็แหงอยู่แล้วล่ะ ก็มันไม่เคยนำไปใช้งานจะไปมีค่าออกมาได้ไงกันเล่า!!


เลยต้องเพิ่มเงื่อนไขเข้าไปใหม่ ถ้าไม่พบความเคลื่อนไหวให้ไปดึงค่าวันที่เพิ่มข้อมูลครั้งแรกมาเปรียบเทียบแทน และแล้วก็ผ่านไปได้ด้วยดี




Month = -1

IF ค้นหาความเคลื่อนไหวเจอ = True THEN

     Month = เปรียบเทียบด้วยวันที่ทำรายการครั้งล่าสุด

Else
     Month = นำวันที่เพิ่มข้อมูลครั้งแรก มาคำนวณ
End IF




จากตัวอย่างถ้าไม่พบข้อมูลใดๆ เลยก็จะได้ค่า น้อยกว่า 0 เวลาตรวจสอบก็เปลี่ยนเป็น




IF Month > 6 OR Month < 0 THEN
     DISPLAY แบร่ๆๆๆ ข้อมูลเก่าเกินไปแล้วนะ ไปตรวจสอบหน่อยซิว่ายังใช้ได้จริง

END IF




แล้วก็ผ่านไปอีกงานนึง ไว้โอกาสหน้า มาบอกเล่าเรื่องราวกันใหม่ สวัสดีครับ ^___^

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

ร้อยละ ทศนิยม 2 ตำแหน่งบวกคืน ไม่เท่ากับ 100 และ ปัญหาการคำนวณเลขทศนิยม เมื่อปัดเศษแล้วค่าที่บวกคืนไม่เท่าเดิม

กรณีนี้เป็นการทดสอบคำนวณเลขที่ต้องหารครึ่ง ตัวอย่างเช่น 2.33 / 2 = 1.165 กรณีนี้ถ้าเก็บค่านี้ในฐานข้อมูลที่กำหนดให้มีทศนิยมเพียง 2 หลัก ในฟิลด์ 2 ฟิลด์ซึ่งแต่ละฟิลด์จะถูกปัดขึ้นเป็น 1.7 เมื่อนำมาบวกกลับ 1.17 + 1.17 = 2.34 ถ้าอย่างนั้นเราก็ต้องกำหนดให้ฟิลด์ที่ใช้เก็บข้อมูลสามารถเก็บเลขทศนิยมได้หลายๆตัว ก็จะเก็บเลขทั้งสามหลักไว้ในฐานข้อมูลเลย 1.165 + 1.165 จะได้ 2.33 พอดี แต่ตอนเราแสดงรายงาน ก็จำเป็นจะต้องแสดงเลขทศนิยมเพียงแค่ 2 หลักอยู่ดี แล้วเราจะทำอย่างไรล่ะทีนี้ ก็เก็บมันเป็นเลขทศนิยมเต็มจำนวนซะแล้วตอนแสดงก็ต้องปัดเศษอยู่ดี เพราะค่า 1.165 ถ้าใช้ฟังก์ชั่นปัดเศษลง ก็จะเหลือ 1.16 แต่ถ้าปัดขึ้นก็จะเป็น 1.17 ซึ่งตัวเลขทั้งสองตัว เมื่อนำมารวมกัน ยังไงๆ ก็ไม่เท่ากับ 2.33 อยู่ดี (1.16+1.16 = 2.32,    1.17+1.17 = 2.34 ) อีกตัวอย่างนึงครับเป็นการถอด VAT ราคาสินค้า การคิดค่าทศนิยม แล้วผลรวมเพี้ยน เนื่องจากการปัดเศษ แล้วยอดเกินบ้าง ขาดบ้าง ตัวอย่างการถอด VAT ซื้อของมา 573.50 บาท ถอด VAT ออกมาได้ (573.50*7) / 100 = 40.145 ราคาสินค้า จะได้เป็น 573.50 - 40.14...

การแชร์สแกนเนอร์ ถึงทำไม่ได้แต่ก็มีวิธีช่วยประหยัดขั้นตอนการทำงาน

"พี่ครับขอใช้เครื่องพี่สแกนเอกสารหน่อยครับ" "พี่ครับขอสแกนอีกสักสองแผ่นครับ" "พี่ครับพอดีมีเอกสารต้องสแกนเพิ่มน่ะครับ" ทุกครั้งที่ต้องสแกนเอกสารเป็นไฟล์เก็บไว้ในคอมพิวเตอร์ ผมจะต้องลุกไปขอใช้เครื่องพิมพ์แบบ All-In-One ของพี่โจ้ทุกครั้ง บางครั้งก็เกรงใจแกครับ เห็นกำลังใจจดใจจ่ออยู่กับงานตรงหน้า ไหนจะต้องตอบคำถามคำโน้นคนนี้ทาง MSN บ้าง Facebook บ้าง ^___^ พอไปขอใช้เครื่องทีไรก็ดูแกจะไม่สบอารมณ์เท่าไหร่ พยายามค้นหาวิธีแชร์สแกนเนอร์จากในอินเตอร์เน็ตอยู่หลายวัน ก็ไม่เจอวิธีที่จะสามารถแชร์สแกนเนอร์ให้เครื่องอื่นได้ใช้งานได้เลย แชร์ได้แค่ให้สั่งพิมพ์จากเครื่องอื่นๆได้เท่านั้น สุดท้ายก็เลยตัดสินใจใช้เทคนิคเล็กๆ น้อยๆ ที่ได้พบเจอมาใช้ประหยัดเวลา และไม่รบกวนการทำงานและสนทนาของพี่โจ้ ได้วิธีนึง นั่นก็คือ ตั้งค่าสแกนเนอร์ให้บันทึกอัตโนมัติ ไว้ในโฟลเดอร์ที่กำหนด แล้วก็ทำการแชร์โฟลเดอร์เครื่องพี่โจ้ทิ้งไว้ซะเลย 1. ตั้งค่าให้สแกนอัตโนมัติเมื่อกดปุ่มสแกน 2. กำหนดให้บันทึกลงโฟลเดอร์ที่แชร์ไว้แล้ว (แชร์โฟลเดอร์เก็บเอกสารสแกนของคอมฯเครื่องนั้นไว้) 3. ...

FPDF ภาษาไทย กับ วรรณยุกต์ลอย

สำหรับงานเขียนโปรแกรมเว็บแอพฯ ด้วย PHP ที่ต้องทำการส่งออกข้อมูลเป็นไฟล์เอกสาร PDF นั้น เมื่อลองค้นดูแล้วก็เจอกับ FPDF เป็นคลาสที่เขียนขึ้นมาสำหรับงานนี้โดยเฉพาะ แต่กับภาษาไทยแล้วก็ต้องเจอกับปัญหาสุดคลาสสิคคือ รองรับภาษาไทยไม่ร้อยเปอร์เซ็นต์ ^^" บทความที่สอนการใช้งานเบื้องต้นที่ครอบคลุมการทำงานของ FPDF http://www.select2web.com/category/fpdf จะมีบทความแนะนำการใช้ฟอนต์ภาษไทยอยู่ที่ลิงค์นี้ http://www.select2web.com/fpdf/fpdf-lesson-10.html ดาวน์โหลดและสร้างฟอนต์มาใช้เอง http://witkub.blogspot.com/2011/11/fpdf.html สำหรับวิธีแก้ไขปัญหาวรรณยุกต์ลอย ลองดูวิธีจากที่นี่ http://punnawatt.blogspot.com/2009/07/pdf.html สุดท้ายแล้วลองทดลองมาหมด ก็ยังไม่ได้คำตอบที่ตรงใจครับ เพราะไม่สามารถแก้สระลอยได้อย่างแท้จริง เพราะเงื่อนไขข้อมูลจริงไม่อาจจะทำให้เหมือนในตัวอย่างได้ ก็เลยถอดใจเรื่องวรรณยุกต์ลอย นอกจากปัญหาเรื่องวรรณยุกต์ลอย แล้วฟอนต์บางตัวก็เกิดปัญหาวรรณยุกต์ซ้อนทับกันด้วย เช่นคำว่า "นี้" เมื่อผลลัพธ์ออกมา สระอี และวรรณยุกต์โท จะทับกัน สรุป 1. ดาวน์โหล...

PHP CI MANIA