April 25, 2012

The Days with VBA @ AIS

24/04/2555 @ AIS (Episode III : VBA) 

เช้าวันนี้ดูเหมือนจะแจ่มใส แต่ที่ไหนได้ ดันฝนตกหนักซะงั้นอ่ะ ลมแรงมากขนาดกางล่มแล้วฝนยังสาดเข้ามาเปียกกางเกงได้สบายๆ โชคดีที่เจอรถเมล์แอร์ (ปอ.) เลยทำให้เดินทางสะดวกขึ้นเยอะ 

ผู้เขียนมาถึงบริษัทก่อนเวลามากพอสมควร จึงมีเวลาทำอะไรได้เยอะโดยไม่ต้องเร่งรีบ วันนี้พี่เลี้ยงไม่มาจึงฝากพี่อีกคนที่อยู่ในทีมเดียวกันดูแลแทน ส่วนงานที่ต้องทำในวันนี้คือการเขียน Macro ให้กับ MS Excel โดยใช้ภาษา VBA ซึ่งมันก็คือ Visual Basic นั่นเอง พอรับ Requirement มาจากพี่ ผู้เขียนก็ตั้งหน้าตั้งตาทำอย่างดี ศึกษาโค้ดและ syntax จากหนังสือ ค่อยๆลองผิดลองถูกไปเรื่อยๆ จนได้ UI ที่สมารถติดต่อกับ User ได้ ผู้เขียนทำอะไรได้ไม่มากนักในวันนั้น เพราะผู้เขียนไม่ได้ใช้ VB มาประมาณสี่ถึงห้าปีได้แล้ว ซึ่ง syntax ของมันก็ดูค่อนข้างขัดใจอย่างมาก แต่ก็ต้องค่อยๆลองถูไถทำไปเรื่อยๆ ซึ่งพี่เค้าก็ไม่ได้เร่งอะไรมากนัก

ส่วน requirement ที่ผู้เขียนได้รับมาก็คือ ให้เขียนโปรแกรมอ่านข้อมูลแต่ละแถวที่อยู่ในไฟล์ excel ให้มารวมอยู่ในไฟล์เดียวกัน โดยมีการเก็บ List ของไฟล์ว่าอ่านไฟล์ไหนไปแล้วบ้างโดยไม่ต้องอัพเดทข้อมูลซ้ำ ซึ่งสุดท้ายแล้วจะเอาข้อมูลของทุกตารางมาวิเคราะห์และทำเป็นสรุปใน Worksheet เดียว

25/04/2555 @ AIS (Episode III : VBA)

พอเริ่มมีงานทำ ผู้เขียนก็เริ่มขี้เกียจเขียนบล็อกละ 55555 ไม่ค่อยมีเวลาจริงๆ อิอิ

เช้าวันนี้เจอสายแปดในตำนาน ขับเร็วสะใจมาก เลยทำให้ถึงบริษัทประมาณเจ็ดโมงสี่สิบ เห็นข้างหน้าตึกชอบมีคนเอาหนังสือพิมพ์ M2F ฟรีมาแจก ก็น่าอ่านดีสำหรับคนว่างงานในยามเช้าและไม่อยากเสียตัง เลยหยิบมาลองอ่านดู เนื้อหาก็น่าสนใจพอสมควรเลยทีเดียว พอประมาณเก้าโมงผู้เขียนก็เบิกโน็ตบุ๊คมานั่งทำงานต่อ นั่งศึกษาซอร์สโค้ดจากอินเตอร์เน็ตแล้วเอามาโมใส่ลงในงานของตัวเอง ซึ่งก็ทำด้วยความเพลิดเพลิน ทำให้รู้สึกว่าเวลามันผ่านไปรวดเร็วมาก วันนี้ทั้งวันก็เลยไม่ได้ทำอะไรเลยนอกจากทำ VBA ต่อจนเสร็จไปได้ส่วนหนึ่ง

ขณะที่ทำงานนี้อยู่ ผู้เขียนก็เดินออกไปปรึกษากับพี่ว่าการเขียนโค้ดเพื่อจัดการกับระบบไฟล์ข้อมูลเป็นอะไรที่ยุ่งยากและถึกมาก ถ้าทำในลักษณะของฐานข้อมูลน่าจะโอเคกว่า กะว่าจะใช้พวก PHP, MySQL อะไรทำนองนี้ พี่เค้าก็บอกว่ามันจะไม่มี security ที่ดีพอ ไม่มีความสามารถในการ Authentication ได้ดีเท่ากับพวก ASP ดังนั้น PHP ก็เลยยังไม่เอามาใช้เพราะติดปัญหาด้านความปลอดภัยในการเข้าถึงข้อมูล

26/04/2555 @ AIS (Episode III : VBA)

การเดินทางไปทำงานในช่วงเช้าเริ่มที่จะอยู่ตัวขึ้น นั่นคือสามารถกำหนดเวลาถึงที่แน่นอนได้ ประมาณ 7:45 - 8:05น. และสามารถรับมือกับเหตุการณ์รถติดหนักๆได้อย่างดี ตอนนี้เริ่มปลงกับรถเมล์และคนขับแล้ว เพราะค่อนข้างที่จะเผื่อเวลาไว้พอสมควร ถ้ามันขับเร็วมาก ก็ไปนั่งชิวที่ออฟฟิศได้ ถ้าขับช้ามากก็ไม่กลัว เพราะยังไงก็ถึงทันเวลาอยู่ดี

การทำงานของวันนี้ก็ไม่มีอะไรมาก คือเอางานเขียนโปรแกรม VBA หรือ Macro ของ MS Excel มาทำต่อ ตอนแรกที่วางแผนเอาไว้คือตั้งใจจะเขียนโปรแกรมให้มันทำงานแบบ Top Down นั่นคือรวบรวมรายชื่อของพนักงานทั้งหมดในบริษัทให้ครบก่อน จากนั้นถึงรวมไฟล์ที่บันทึกรายชื่อพนักงานที่มีการลาออก แจ้งโอนย้าย เปลี่ยนแผนก ฯลฯ ทีหลัง แต่สุดท้ายก็เปลี่ยนแผนมาทำแบบ Bottom Up แทน (เริ่มจากไฟล์รายชื่อพนักงานลาออก โอนย้าย เปลี่ยนแผนก ก่อนแล้วจึงรวบรวมรายชื่อพนักงานทั้งหมดอีกรอบ) โดยเขียนโค้ดอย่างค่อยเป็นค่อยไปมาก วันๆจึงขลุกอยู่กับการเรียนรู้ Syntax ของ VBA การเปิด Sheet จาก Workbook อื่น การดึง Data จาก Row หนึ่งมาใส่ลงในอีก Row หนึ่ง การ Implement Array การใช้ Sub Procedure และ Function Procedure โดยเริ่มต้นทดลองกับ Sheet รายชื่อพนักงานที่มีการลาออกก่อน ซึ่งแหล่งที่มาของข้อมูลต่างๆก็คือ GOOGLE นั่นเอง !!!

พอเลิกงานก็กลับบ้าน ซึ่งพักหลังๆนี้ รู้สึกได้ทันทีเลยว่า ไม่ค่อยได้นั่งซักเท่าไร เพราะคนบนรถปอ. มีเยอะมาก หาที่นั่งได้ลำบากเหลือเกิน กว่าจะได้นั่งก็เลยครึ่งทางไปซะแล้ว ทำเอาเมื่อยขากลับบ้านทุกวัน เฮ้อ.... =_=

27/04/2555 @ AIS (Episode III : VBA)

เรามาเน้นเรื่องของการทำงานดีกว่า (เพราะเรื่องการเดินทางมันก็เหมือนๆเดิมละ)

วันนี้ก็มีเขียน VBA ต่อจนเสร็จในส่วนของการรวบรวมรายชื่อพนักงานที่มีการแจ้งลาออก ตอนนี้สามารถเพิ่มฟังก์ชั่นตรวจสอบรายชื่อพนักงานที่มีการเปลี่ยนแปลงการลาออกได้แล้ว (เช่น เปลี่ยนวันลาออก หรือไม่ลาออกแล้ว) โดยจะใช้รหัสพนักงานเป็น Primary Key และตรวจสอบว่า Record ใดที่ถูก ตรวจจับได้ว่ามีการเปลี่ยนแปลง ก็จะนำวันที่ของไฟล์นั้นมาเทียบกับข้อมูลเดิมว่า ข้อมูลอันไหนมีการอัพเดทที่ล่าสุดมากกว่ากันก็เลือกแก้ไข Record ของพนักงานคนนั้น

จากนั้นก็ก็อปปี้โค้ดดังกล่าวมาเปลี่ยนชื่อตัวแปรและ Parameter เพื่อเอาไปใช้กับ Sheet อื่นๆที่เหลืออยู่ เช่น พนักงานโอนย้าย และปรับเปลี่ยนสัญญาจ้างพนักงาน จากนั้นก็ทำการเทสโปรแกรมโดยใช้ไฟล์จริงมาทดสอบและลองรันดู อาจมีบัคบ้างแต่ก็แก้ๆกันไป สุดท้ายก็ให้พี่คนที่อยู่ในทีมเดียวกัน (คนที่ Assign งานนี้ให้ผู้เขียน) มาตรวจสอบ พร้อมอธิบายโค้ดให้เข้าใจและให้เห็นภาพ เสร็จแล้วพี่เค้าก็บอกว่าให้จัดการกับไฟล์รายชื่อพนักงานทั้งหมดของบริษัทต่อ



30/04/2555 @ AIS (Episode III : VBA)

ในที่สุดก็เสร็จไปหนึ่งงาน แต่ว่าการที่จะนำโค้ดมาแก้ไขทีหลังนั้นยากมาก เพราะของเก่านี่เรียกได้ว่า คิดอะไรออกก็จับยัดๆซะอย่างเดียว จนขนาดตัวผู้เขียนที่เป็นเจ้าของงานเองยังกลัวว่าจะอ่านไม่รู้เรื่อง วันนี้เลยทำการเขียนโค้ดใหม่ตั้งแต่ต้น โดยเอา Algorithm เดิมเป็นหลัก แต่เขียนให้อ่านง่ายขึ้น มีการ Optimize Code และแบ่งแยกออกเป็น Function ให้สามารถเข้าใจและแก้ไขได้ง่ายในภายหลัง

02/05/2555 @ AIS (Episode III : VBA)

หลังจากที่จัดการกับโค้ดเดิมให้ดูดีขึ้นแล้ว ก็เริ่มทำการเขียนโปรแกรม VBA สร้าง Macro ให้ MS Excel อ่านรายชื่อพนักงานทั้งหมดของไฟล์ในแต่ละเดือนให้มารวมอยู่ในไฟล์ของโปรแกรมหลักเดียวกันได้ โดย Algorithm จะแตกต่างจากงานที่แล้วหน่อยก็คือจะไม่เอารายชื่อของพนักงานแต่ละคนมาเพิ่มต่อจากเดิม แต่จะเปลี่ยนแปลงข้อมูลของพนักงานเฉพาะ Record ที่มีข้อมูลแตกต่างไปจากเดิมเท่านั้น นั่งคือ ถ้าพนักงานคนเดิมยังอยู่ก็ไม่ต้องทำอะไร แต่จะเพิ่มหรือ mark record ของพนักงานเข้าไปในไฟล์กรณีเป็นพนักงานใหม่ (record นี้จะไม่ปรากฎในไฟล์เดิม แต่จะมีอยู่ในไฟล์ใหม่) และจะลบหรือ unmark record ของพนักงานออกจากไฟล์ในกรณีที่พนักงานคนนั้นลาออก  (record นี้จะไม่ปรากฎในไฟล์ใหม่ แต่จะมีอยู่ในไฟล์เดิม)

ด้วยความที่ไม่ค่อยรู้ Data Structure ของ VBA มากนัก จึงต้องทำการวน While Loop สองรอบเพื่อ Check เงื่อนไขดังกล่าวสองครั้ง จึงทำให้การรันโปรแกรมครั้งหนึ่งใช้เวลานานมาก อีกทั้งจำนวน record ก็มีมากมาย (ก็พนักงานของบริษัทเค้าเยอะหนิ อิอิ)

ส่วนตอนเย็น พี่หัวหน้าแผนกก็พาพนักงานทุกคนในแผนกรวมถึงน้องๆเด็กฝึกวานด้วย ไปกินเลี้ยงบุฟเฟ่ต์ที่ห้องอาหารนานาชาติรามายณะ อาคารคิงพาวเวอร์ ซอยรางน้ำ เนื่องในโอกาสมีพี่ๆบางคนในแผนกได้โปรโมชั่น (หมายถึงเลื่อนตำแหน่งนั่นเอง) ก็เลยเลี้ยงฉลองกัน ดูจากในเว็บแล้วห้องอาหารนี้ค่อนข้างแพงและหรูหราเลยทีเดียว มีการแสดงหุ่นเชิดแบบไทยๆด้วย พอเลิกงานก็นั่ง BTS จากอารีย์ไปลงอนุสาวรีย์ เดินทะลุห้าง Center One ไปไกลกันมาก็ถึงตึกคิงพาวเวอร์ ตัวตึกค่อนข้างใหญ่ กว้างและดูดี ส่วนห้องอาหารก็ประดับได้ดีพอสมควรเลยทีเดียว ติดอยู่ตรงที่ว่า วันนั้นที่เราไปกินกัน คนจีนเยอะมากๆๆๆ คือวันนั้นทัวร์จีนลงพอดี ทำให้ต้องแย่งตักอาหารกับคนจีนกันจะเป็นจะตาย ของที่ดูดีก็ดูหมดราคาไปเลยทีเดียว คนจีนทั้งมารยาทแย่และสกปรกมาก (ทุเรศสุดๆ รับไม่ได้) ไม่เจอกับตัวเองนี่ไม่รู้จริงๆว่ามันเป็นยังไง แทบอธิบายทั้งหมดไม่ไหว แต่วันนั้นก็กินไปเยอะอยู่นะ (กินจนแทบอ้วกเลยทีเดียว) ส่วนการแสดงการเชิดหุ่นกระบอกนั้น แสดงไม่นานมากแล้วก็ไม่ได้ยิ่งใหญ่อลังการอย่างที่คิดเอาไว้ ส่วนอาหารรสชาติก็ธรรมดาสุดๆ แถมมีของหรูๆให้เลือกกินน้อยมาก (เน้นไปที่ข้าวและกับข้าวพวกนี้ซะเยอะ จะมีเด่นๆก็อาหารญึ่ปุ่น ปลาแซลม่อนดิบ ที่พอจะรับประทานได้) ตอนกลับบ้านก็นั่ง BTS จากอนุสาวรีย์มาลงที่หมอชิตแล้วนั่งรถเมล์ต่อ ซึ่งคราวนั้นถือว่าเป็นครั้งแรกในชีวิตที่ขึ้น BTS เองคนเดียว >..<



ดูบมความเกี่ยวกับห้องอาหารนี้เพิ่มเติมได้ที่นี่
http://www.bloggang.com/viewdiary.php?id=bookkii&group=24&month=03-2010&date=12

03/05/2555 @ AIS (Episode III : VBA)

วันนี้ก็เขียนโค้ดต่อจนเสร็จในช่วงบ่าย มีการเพิ่มลูกเล่นเข้าไปบ้างเพื่อให้ง่ายต่อการใช้งาน จากนั้นก็เรียกพี่มาตรวจงาน งานนี้จะได้จบๆไปซะที อยากได้งานใหม่แล้ว 555 (แต่ก็ดูเหมือนพี่เค้าจะไม่ค่อยทีอะไรให้ทำเท่าไร เพราะพี่เค้าบอกว่าไม่ต้องรีบทำนะ... ย้ำว่า ไม่ต้องรีบ =.=" ) ซึ่งเมื่อรันโปรแกรมให้พี่เค้าดู พี่เค้าก็บอกว่ามันรันช้าเกินไป จึงแนะนำ Data Structure อันนึงมาให้ลองใช้ นั่นก็คือ Dictionary ซึ่งก็คุ้นเคยดีอยู่แล้วสำหรับผู้เขียนเพราะใช้เคยใน Python แต่สำหรับ VBA ขอบอกตรงๆเลยว่าไม่เคยลอง พี่จึงสอนและแนะนำหลักการเบื้องต้น สำหรับการเก็บ Key การเก็บ Item และตัวอย่างการประกาศ Dict ใน VBA อีกทั้ง Flow Control ของโปรแกรม เพราะมีการเพิ่ม requirement ให้เก็บ log record ของพนักงานก่อนการเปลี่ยนแปลงค่าใน record นั้นๆด้วย หลังจากนั้นผู้เขียนก็เตรียมตัวกลับบ้านและมาทำงานต่อในวันถัดไป

04/05/2555 @ AIS (Episode III : VBA)

วันนี้ปวดท้องมากในตอนเช้า (สงสัยเพราะพิษของการกินบุฟเฟ่ต์จนล้นกระเพาะจนทำให้กระเพาะอักเสบหรือไม่ก็ติดเชื้อในลำไส้เพราะของมันสกปรกแน่นอน เจอคนจีนอุบาถว์ๆซะขนาดนั้น) แต่ก็ต้องฝืนๆ กินอาหารให้น้อยๆ เน้นพวกนมเปรี้ยวหรือโยเกิร์ตเพื่อให้ถ่ายเอาเชื้อออก

ตั้งแต่เช้าจนบ่าย ผู้เขียนก็ทำงานเดิมต่อให้เสร็จ (แต่ก็มีแอบหลับบ้างนะ อิอิ) วิธีการใช้ Dict นี้จะเร็วกว่าการวน While Loop สองรอบ เพราะเราวน While Loop แค่รอบเดียว โดยเราจะเก็บเอา PIN Code ของพนักงานเป็น Key ของ Dict ก่อนจากนั้นจะอ่านไฟล์ใหม่เข้ามา หาก PIN Code ของพนักงานในไฟล์ใหม่ปรากฎอยู่ใน Dict (Exists) ก็จะนำมาเปรียบเทียบว่าทุกๆ field ของ record นั้นเปลี่ยนแปลงไปจากเดิมหรือไม่ ถ้าเปลี่ยนแปลงก็นำเอาข้อมูลใหม่มาใส่แทน แต่ถ้า PIN Code ไม่ปรากฎอยู่ใน Dict (Not Exists) ก็จะทำการเพิ่มเข้า record เข้าไปใน Row ล่าสุดของไฟล์และเพิ่ม Key ลงใน Dict เมื่อรันโปรแกรมจนเสร็จ ก็ตรวจสอบขั้นสุดท้ายว่า record ไหนในไฟล์เก่าที่ไม่ถูกเรียกออกมาตรวจสอบ แสดงว่าพนักงานที่เป็นเจ้าของ record นั้นได้ลาออกไปแล้ว ซึ่งเมื่อเขียนโปรแกรมออกมาเสร็จสมบูรณ์ ก็ทำให้รันเร็วขึ้นกว่าเดิมนิดหน่อย พอรู้สึกได้ แต่ปัญหาที่พบก็คือ ตัว Log record ที่เพิ่มขึ้นอย่างมหาศาลและการตรวจสอบว่า record มีการเปลี่ยนแปลงหรือไม่นั้นค่อนข้างลำบาก (เพราะถ้าความหมายเหมือนกัน แต่มี White Space เพิ่มเข้ามาหรือหายไป ก็ถือว่า record มีการเปลี่ยนแปลงแล้ว) ดังนั้นวิธีแก้ไขคือการตรวจสอบเฉพาะบางช่องที่มีความสำคัญและไม่มีผลกับ White Space ซึ่งส่วนที่ต้องทำเพิ่มเติมนี้จะถูกยกไปทำในวันถัดไปแทน (=w=)b

08/05/2555 @ AIS (Episode III : VBA)

วันนี้ผู้เขียนเริ่มทำงานตั้งแต่เช้า เขียนโปรแกรมไปเรื่อยๆชิวๆ ไม่ค่อยรีบมากเท่าไร โดยเพิ่มฟังก์ชั่นตรวจสอบการเปลี่ยนแปลงของ record ซึ่งเลือกมาเปรียบเทียบเฉพาะบาง column หรือเลือกเอาเฉพาะ column ที่สำคัญๆเท่านั้นมาใช้ โดยปัญหาที่พบหลักๆก็คือ ข้อมูลที่อยู่ในไฟล์แต่ละอันนั้นมี Format ที่แตกต่างกัน เช่น Email Address แบบเต็มกับแบบย่อ หรือ data ใน column สลับตำแหน่งกัน ซึ่งยากมากที่จะสามารถเอามาตรวจสอบและเปรียบเทียบได้ วิธีแก้ที่ดีที่สุดก็คือแก้ไขไฟล์ต้นฉบับให้มีรูปแบบที่ตรงกันก่อนที่จะนำมาใช้ในโปรแกรม และเขียนฟังก์ชั่นเพิ่มเติมในโปรแกรมเพื่อให้รูปแบบของ Email Address ของพนักงานไม่ว่าจะแบบเต็มหรือแบบย่อให้มีความหมายเหมือนกัน

เมื่อจัดการกับปัญหาต่างๆเสร็จแล้ว ในตอนบ่ายพี่เค้าก็บอกว่าให้สร้างโปรแกรมขึ้นมาอีกขึ้นนึง เพื่อรวบรวมข้อมูล record ของพนักงานจากทุกๆไฟล์ให้มาเก็บอยู่ใน Sheet เดียวกัน เพื่อที่จะทำการเทสโปรแกรมว่า ข้อมูลของพนักงานหลังจากการรันโปรแกรมเสร็จแล้ว มีผลลัพธ์ที่ตรงกับความจริงหรือไม่

09/05/2555 @ AIS (Episode III : VBA)

วันนี้ก็เริ่มทดลองทดสอบโปรแกรม โดยนำไฟล์จริงข้อมูลจริงทุกอย่างมาลองรันดู และเปรียบเทียบกับข้อมูลที่ได้จากการรันอีกโปรแกรมหนึ่ง เนื่องจากข้อมูลพนักงานมีเกือบหมื่น records จึงไม่สามารถเทียบดูด้วยตาเปล่าไหว จึงให้พี่เค้าช่วยแนะนำวิธีการเทสที่ง่ายและประหยัดเวลา นั่นคือ การทำ Pivot และ Sorting ใน Excel จะว่าไปคำว่า sorting ก็คงคุ้นหูกันอยู่แล้ว แต่ว่าไอเจ้าฟังก์ชั่น Pivot นี่มันคืออะไร มันก็คือการทำตารางสรุปรายงานนั่นเอง สามารถเลือก record สำหรับการ count, sort, และ group record ต่างๆได้ตามที่ต้องการ เห็นแล้วอยากจะบอกว่า สุดยอดไปเลย *0* ... ดังที่อาจารย์ในภาคบางคนเคยกล่าวไว้ว่า โปรแกรมที่เทพที่สุดที่ทุกคนมองข้าม มันสามารถทำงานได้ครอบจักรวาลจริงๆ คือ MS Excel นั่นเอง จึงทำให้การทดสอบเทสเคสของโปรแกรมของผู้เขียนง่ายและแม่นยำขึ้นเยอะเลย

ในช่วงบ่ายอาจจะทำงานช้าลงไปบ้าง เพราะเนื่องจาก Flash Drive ที่ใช้ทำงานประจำอยู่ติดไวรัสซะงั้น ก็เลยมัวแต่หาวิธีที่ทำให้ไวรัสมันไม่กระจาย และเริ่มตรวจสอบผลลัพธ์ เปรียบเทียบสิ่งที่ได้จากการทำ Pivot และจากการรันโปรแกรมจริงๆ ว่ามีความสอดคล้องกันหรือไม่

10/05/2555 @ AIS (Episode III : VBA)

หลังจากที่เมื่อวานเริ่มทำเทสเคส วันนี้ก็มาเริ่มทำงานนี้ต่อ ขอบอกเลยว่าต้องใช้เวลาในการตรวจสอบนานมาก เพราะมี record ของพนักงานเกือบๆหมื่นแถว อีกทั้งยังมีเงื่อนไขมากมายที่ต้องคอยสังเกตดีๆด้วย เช่น พนักงานมีการลาออก มีการเพิ่มเข้ามาใหม่ หรือมีการอัพเดทข้อมูล ซึ่งไม่ใช่เรื่องง่ายเลยที่จะหาจุดผิดพลาดและยืนยันความถูกต้องได้ ซึ่งสุดท้ายผู้เขียนก็ค้นพบว่า มี record ของพนักงานคนนึงหายไปเมื่อทำการรันโปรแกรมเสร็จแล้ว *0* (ซวยแล้วกรูงานนี้... 1 ใน 9,xxx มันหายไปไหนวะเนี่ย) ซึ่งผู้เขียนก็ต้องใช้เวลาก่อนครึ่งวันกว่าจะรู้และการันตีได้ว่าไอที่โปรแกรมมันบัคมันพลาดเนี่ย ก็คือหาหมายเลขช่องสุดท้ายของข้อมูลแถวสุดท้ายผิด (มันมีค่าน้อยกว่าของจริง 1 แถว) ทำให้ข้อมูล record สุดท้ายของไฟล์ก่อนล่าสุดหายไป หรือโดนเขียนทับไปนั่นเอง - -"

แล้วในช่วงบ่าย ผู้เขียนก็แก้ให้โปรแกรมมันสามารถรันได้ถูกต้องจนได้ จากนั้นก็ทำการตรวจสอบเทสเคสของโปรแกรมในอีกส่วนหนึ่ง (ส่วนที่รวมรวบข้อมูลการลาออก โอนย้าย เปลี่ยนสัญญาจ้าง เป็นต้น) ซึ่งใช้เวลาไม่นานมาก เพราะข้อมูลทดสอบง่ายและโปรแกรมรันไม่ซับซ้อน เมื่อเสร็จทุกขั้นตอนแล้วผู้เขียนก็นำโปรแกรมไปส่งพี่ ซึ่งพี่ก็บอกว่าให้สร้าง column ที่สรุปความสัมพันธ์ระหว่างโปรแกรมทั้ง 2 ส่วนเพิ่มอีก ให้สามารถตรวจดูได้ง่ายๆว่า พนักงานคนไหนที่มีการโอนย้าย มีการปรับเปลี่ยนรหัสพนักงาน หรือมีการลาออก ให้สะดวกต่อ User ผู้ใช้งานโปรแกรมมากยิ่งขึ้น แล้วก็หวังว่าพรุ่งนี้ทุกอย่างของโปรแกรมนี้คงจะเสร็จสมบูรณ์ (จะได้ปิดจ็อบนี้ซะที ฮู่เร่.... \(>3<)/ )

11/05/2555 @ AIS (Episode III : VBA)

ในช่วงเช้าพอมาถึงที่บริษัท หลังจากที่นั่งเล่นได้ซักพัก ก็มีกิจกรรมถ่ายรูปกับเพื่อนๆ ในแผนก ทั้งรูปของตัวเองขณะทำงาน และรูปหมู่ถ่ายรวมกับเพื่อนๆ เพื่อเอาไปประกอบหนังสือรุ่น หลังจากรื่นเริงไปได้ซักชั่วโมงก็เริ่มจัดการกับงานที่ยังค้างอยู่ ซึ่งตอนนี้ก็ใกล้จะเสร็จสมบูรณ์แล้ว พอเขียนฟังก์ชั่นอัพเดทสรุปความสัมพันธ์ของโปรแกรมในส่วนของชีทที่รวม record ของพนักงานกับชีทที่รวมรายชื่อพนักงานจาก report ต่างๆ เสร็จแล้ว ก็นำโปรแกรมและ Script ที่เขียนไปส่งพี่อีกรอบ พี่เค้าก็ให้เพิ่มการอ่านไฟล์และรวบรวม record จากไฟล์ที่เกี่ยวกับพนักงานขอเปลี่ยน username เข้าไปในโปรแกรมอีกรอบ ผู้เขียนก็เลยใช้เวลาในช่วงบ่ายทำงานในส่วนนี้จนเสร็จสมบูรณ์ 99.99%

No comments:

Post a Comment