CrystalReport : ข้อมูลส่วน DetailSection กับการแสดงผลส่วน PageFooterSection

เนื่องจากผู้เขียนได้รับมอบหมายให้มีการตรวจสอบข้อมูลว่า ถ้ามีข้อมูลใน Field1 ขึ้นต้นด้วยเครื่องหมาย “*” ต้องแสดงข้อความที่ส่วนท้ายของรายงานทุกแผ่นว่า “มีข้อมูลที่มีเครื่องหมาย * นำหน้า” ผู้เขียนจึงได้ทำการสร้าง Formula Field ขึ้นมาทั้งหมด 4 อัน คือ ffCountSubjectStar : ใช้สำหรับเก็บค่าจำนวนข้อมูลใน Field1 ที่ขึ้นต้นด้วย * ffResetCountStarSubject : ใช้สำหรับ Reset ค่าเมื่อขึ้นหน้าใหม่ ffSumStarSubjectCode : ใช้สำหรับเก็บค่าจำนวนรวมของ Field1 ที่ขึ้นต้นด้วย * ffPageFooter : ใช้สำหรับเก็บข้อความที่ต้องการให้แสดงท้ายกระดาษ 1. ffCountSubjectStar WhilePrintingRecords;Global numberVar isStarSubjectCode; if (Left({@Field1 },1) = “*”) then isStarSubjectCode := 1else isStarSubjectCode := 0 โค้ดส่วนนี้เป็นการตรวจสอบว่าถ้า Field1 นั้นมี * นำหน้า ให้เก็บค่านั้นไว้ในตัวแปร isStarSubjectCode โดย Formula Field นี้จะต้องนำไปใช้ในส่วนของ DetailSection เนื่องจากต้องมีการตรวจสอบข้อมูลทุก Record 2. ffResetCountStarSubject WhilePrintingRecords; Global numberVar isStarSubjectCode := 0; Global numberVar countStarSubjectCode := 0; โค้ดส่วนนี้เป็นส่วนที่ใช้สำหรับ Reset ค่าตัวแปร โดยกำหนดค่าเริ่มต้นให้ตัวแปร ให้เท่ากับ 0 โดย Formula Field นี้จะต้องนำไปใช้ในส่วนของ Page Header เนื่องจากต้องมีการตรวจสอบข้อมูลทุก Record 3. ffSumStarSubjectCode whileprintingrecords; //ทำราย Rec ที่มีการพิมพ์Global numberVar countStarSubjectCode;Global numberVar isStarSubjectCode; countStarSubjectCode := countStarSubjectCode + isStarSubjectCode โค้ดส่วนนี้เป็นการนับจำนวน Field1 ที่มี * นำหน้า ให้เก็บผลรวมไว้ในตัวแปร countStarSubjectCode โดย Formula Field นี้จะต้องนำไปใช้ในส่วนของ DetailSection เนื่องจากต้องมีการตรวจสอบข้อมูลทุก Record 4. ffPageFooter ” มีข้อมูลที่มีเครื่องหมาย * นำหน้า” เก็บข้อมูลที่ต้องการให้แสดงในส่วนของ PageFooter โดย Formula Field นี้จะต้องนำไปใช้ในส่วนของ PageFooterSection ผู้เขียนหวังว่าบทความครั้งนี้จะเป็นประโยชน์ต่อผู้อ่านไม่มากก็น้อย แล้วพบกันใหม่ครั้งหน้าจ้าาาาา ^^

Read More »

AutoMapper

AutoMapper คือ component ที่ใช้ในการ map ข้อมูลระหว่าง object ต่างชนิดกัน โดยทำการแปลงข้อมูลจาก object ชนิดหนึ่ง ไปกำหนดค่าให้กับ object อีกชนิดหนึ่ง ซึ่งถ้า object ปลายทางตรงตามข้อกำหนดของ AutoMapper ก็ไม่จำเป็นต้อง config ค่าใดๆเลย การแปลงข้อมูลจาก object ชนิดหนึ่งไปยัง object อีกชนิดหนึ่ง เกิดขึ้นได้บ่อยในการพัฒนา application โดยเฉพาะ application ที่อยู่ในลักษณะ multi tiers ที่ต้องมีการส่งผ่าน object ระหว่างกัน เช่น UI layer กับ Service layer หรือ Data access layer กับ Service layer การใช้งาน AutoMapper เมื่อต้องการแปลงข้อมูลจาก object ต้นทางไปยัง object ปลายทางอีกชนิดหนึ่ง ถ้า object ปลายทางมี property name ชื่อเดียวกับ object ต้นทาง AutoMapper จะทำการกำหนดค่าให้กับ property ของ object ปลายทางโดยอัตโนมัติ การกำหนดค่า config การแปลงข้อมูลระหว่าง object ทำได้โดยใช้ MapperConfiguration ซึ่งจะมีเพียงหนึ่งเดียว และสร้างขึ้นตอนเริ่ม application หรือ ใช้ Mapper.Initialize static method //static method Mapper.Initialize(cfg => cfg.CreateMap<Person, PersonPoco>()); //instance method var config = new MapperConfiguration(cfg => cfg.CreateMap<Person, PersonPoco>()); type ที่อยู่ทางซ้ายของ cfg.CreateMap<>() คือ type ต้นทาง ส่วนทางด้านขวาคือ type ปลายทาง ซึ่งเราจะทำการ mapping โดยใช้ static Mapper method หรือจะใช้ instance method ก็ได้ var mapper = config.CreateMapper(); //instance method var mapper = new Mapper(config); PersonPoco poco = mapper.Map<PersonPoco>(person); //static method PersonPoco poco = Mapper.Map<PersonPoco>(person); ในกรณีที่เรามี object ที่มีโครงสร้างซับซ้อน ซึ่งการใช้งานในบางโอกาสที่ต้องการดูข้อมูลเพี่ยงบางส่วน เราสามารถใช้งาน AutoMapper mapping ข้อมูล มาสู่ object ที่มีโครงสร้างเรียบง่ายใช้งานได้สะดวก ตัวอย่างเช่น object Order ที่มีโครงสร้างค่อนข้างซับซ้อนด้านล่างนี้ public class Order { public Customer Customer { get; set; } public OrderLineItem[] OrderLineItems() public decimal GetTotal() { return OrderLineItems.Sum(li => li.GetTotal()); } } public class Product { public decimal Price { get; set; } public string Name { get; set; } } public class

Read More »

เช็คฟอนต์สวย ด้วย WhatFont ~ Extension

อะ แฮ่ม และแล้วก็เดินมาถึง Blog สุดท้ายในรอบ TOR ของปีนี้จนได้ แต่กว่าจะได้ฤกษ์เขียนได้ก็ปาเข้าไปกลางปีกันเลยทีเดียว (55+) มาๆๆ เรามาเข้าเรื่องกันเลยดีกว่า ต้องบอกว่าหลายครั้งที่เราได้เข้าเว็บไซต์นู้นนั่นนี่ แล้วเห็น font สวยๆ แต่ไม่รู้ว่านั่นน่ะมันคือ font อะไร ชนิดไหน … วันนี้ทางผู้เขียนขอนำเสนอ Chrome Extension (อีกแล้วเหรอ !) ที่เรียบง่ายแต่ใช้งานได้จริง นั่นคือ * WhatFont * WhatFont คืออะไร ??? WhatFont เป็นหนึ่งในส่วนขยายของ Google Chrome ซึ่งเป็นเครื่องมือที่ใช้ในการดูได้ว่า Font ที่ใช้หรือแสดงอยู่ในหน้าเว็บไซต์ต่างๆ นั้น คือ Font ชนิดอะไร ขนาดเท่าไหร่ และมีค่าสี เป็นอะไร อ๊ะๆ ยังไม่หมดนะ มันสามารถระบุได้แม้กระทั่งความหนา ความบาง ของ Font นั้นๆ กันเลยทีเดียว เพียงแค่เรานำเมาส์ไปวางบนตัวอักษรที่เราต้องการจะดูรายละเอียดเท่านั้นเอง วิธีการติดตั้ง ดาวน์โหลดได้จาก Chrome เว็บสโตร์ คลิก จากนั้นให้คลิกปุ่ม “เพิ่มใน CHROME” หรือ Add to Chrome ระบบจะแสดง pop up ขึ้นมาให้คลิกเลือก “เพิ่มส่วนขยาย” เมื่อเราติดตั้งเรียบร้อยแล้ว หน้าจอก็จะแสดง pop up ขึ้นมาแจ้งให้เราทราบว่าได้ติดตั้งเสร็จเรียบร้อยแล้ว สำหรับวิธีการใช้งาน ให้เข้าเว็บที่เราต้องการ จากนั้นให้คลิกที่ Icon ที่มุมบนด้านขวาของ Browser ให้นำเมาส์ไปวางไว้บนข้อความ / ตัวอักษร ที่เราต้องการจะรู้ว่าเป็น font อะไร และหากต้องการจะดูรายละเอียดเพิ่มเติม เช่น ขนาด สี ความหนา ความบาง ก็ให้คลิกเลือกบนข้อความดังกล่าว จากนั้นจะมีส่วนแสดงข้อมูลเพิ่มเติมขึ้นมาให้เราได้ดูกัน เป็นยังไงกันบ้างเอ่ย ข้อมูลอันนี้นี่พอจะช่วยผู้อ่านได้บ้างมั้ย ?? ยังไงก็แล้วแต่ทางผู้เขียนอยากแนะนำให้ทุกคนไปลองใช้กันดูนะ ง่ายดี ฟรีด้วย แทนที่เรา จะมานั่งคาดเดา หรือมโน กันเองว่า เอ๊ ! ตัวนี้นี่มันเป็น font อะไรแล้วน๊าา แบบนั้นมันล้าสมัยไปแล้ว เสียเวลาเปล่าๆ ติดตั้งตัวนี้กันเลย ง่าย ครบ จบในตัวเดียว 55+ อย่าลืมลองเล่นกันดูนะ ไว้ปีหน้าฟ้าใหม่ เราจะมาเจอกันอีกใน Blog ถัดๆ ไปเน้ออออ ขอบคุณแหล่งอ้างอิง http://photoloose.com/what-font-chrome-extension/

Read More »

แลกเปลี่ยนเรียนรู้ Virtual Desktop Infrastructure (VDI)

ผมได้จัดแลกเปลี่ยนเรียนรู้ เรื่อง “การจัดการห้องบริการคอมพิวเตอร์ในแนวทาง Virtual Desktop Infrastructure” เมื่อวันที่ 11 มิถุนายน 2562 ณ ห้องปฏิบัติการคอมพิวเตอร์ 3 งานเทคโนโลยีสารสนเทศ ฝ่ายสารสนเทศและทรัพยากรการเรียนรู้ อาคารวิทยบริการ ชั้น 3 มหาวิทยาลัยสงขลานครินทร์ วิทยาเขตตรัง คิดว่านำมาเล่าสู่กันฟังในที่นี้น่าจะเกิดประโยชน์ คุณลักษณะของระบบ VMware vSphere ESXi 6.7 เป็น software จัดการ server Dell EMC PowerEdge Systems เป็น hardware ชนิด Rack Server จำนวน 5 เครื่อง แต่ละเครื่องมี RAM 512 GB มี GPU ชนิด NVIDIA Tesla M10 32 GB และมี SAN Storage ขนาด 50 TB L2/3 network switch ที่มี 10 G Base-T จำนวน 2 ตัว VMware Horizon 7 เป็น software สำหรับทำ VDI เครื่องที่ให้ใช้งานเป็น PCoIP zero client จำนวน 480 ชุด user account เป็น Local Microsoft AD สำหรับห้องคอม ประโยชน์ที่ได้รับจากการแลกเปลี่ยนเรียนรู้ในครั้งนี้ ได้ทดลองใช้งานเป็นผู้ใช้งาน ได้รับข้อคิดเห็นจากประสบการณ์ใช้งานตั้งแต่จัดซื้อเป็นเวลาเกือบ 1 ปีแล้ว ได้เห็นวิธีการ cloning VM ทำภายใน server สะดวกมาก เพราะ zero client ไม่มี hard disk เป็นแค่จอภาพ+อุปกรณ์เชื่อมต่อกับ server สิ่งที่ต้องเตรียมพร้อมในการนำระบบ VDI ไปใช้งาน ผู้ดูแลต้องมีความรู้เกี่ยวกับระบบ Virtualization Technology ผู้ดูแลต้องมีความรู้เกี่ยวกับ DHCP Sever, DNS Server ผู้ดูแลต้องมีความรู้เกี่ยวกับ Microsoft AD ผู้ดูแลต้องมีความรู้พื้นฐานการจัดการ PC , Windows ผู้ดูแลควรมีการติดตั้งและทดสอบโปรแกรมที่จะนำมาใช้กับระบบ VDI ผู้ดูแลต้องมีความรู้เกี่ยวกับระบบ Server และ Network ระบบไฟฟ้าและเครื่องปรับอากาศภายในห้อง Data Center ที่มีประสิทธิภาพ ปัญหาที่เจอในการใช้งานระบบ VDI vcenter ล่ม (ระบบไฟฟ้าภายในห้อง Data Center มีปัญหา,ไฟล์สำคัญโดนลบ) การ Clone เครื่อง (ใช้งานได้ไม่ครบทุกเครื่อง) ค่า Error ไม่สื่อความหมาย (Clone แล้วเครื่องไม่พร้อมใช้งาน) ข้อมูลทั้งระบบมีขนาดที่โตขึ้น (การเก็บข้อมูลในเครื่องผู้ใช้งาน Drive C,D) ทรัพยากรไม่เพียงพอเมื่อมีการสร้างเครื่องใช้งานเยอะเกินไป ต้องประเมิน Disk Storage ให้เพียงพอ ปัญหาเกี่ยวกับ user account ที่จะใช้ VM ในตอนแรกจะให้ใช้ Microsoft AD ของมหาวิทยาลัย แต่เนื่องจาก AD ของมหาวิทยาลัยไม่ได้ออกแบบมาให้คอนฟิกได้ง่าย จึงเปลี่ยนเป็นสร้าง Local AD ผูกกับ zero client เป็นเครื่อง ๆ ไป เปิดเครื่อง กด Enter ก็เข้าถึงหน้าต่าง Windows ราว ๆ 30-40 วินาที ข้อดีของการนำระบบ VDI มาใช้งาน การบริหารจัดการเครื่องมีประสิทธิภาพขึ้น เมื่อเทียบระหว่าง Zero

Read More »

Quick Analysis ใน Excel 2016 : ชุดคำสั่ง “Formatting”

จากบทความที่เคยเขียนไปก่อนหน้านี้ เรื่อง แนะนำการใช้เครื่องมือ Quick Analysis ใน Excel 2016 : ชุดคำสั่ง “Text” สำหรับโจทย์ที่เป็นตัวอักษร แต่ครั้งนี้จะมาเล่าต่อของ Quick Analysis ในชุดคำสั่ง “Formatting” เหมือนเดิมนั่นแหละ แต่โจทย์จะเปลี่ยนไปเป็นตัวเลขบ้าง มาดูกันสิว่ามันสามารถทำอะไรได้บ้าง สำหรับรอบนี้ได้สมมุติข้อมูลเป็นข้อมูลเวลาการทำงานในแต่ละวันของพนักงานที่ทำงานเป็นกะ เป็นรายชั่วโมง โดยคนคนนี้ทำงาน ได้กี่ชั่วโมงในแต่ละวัน ดังรูป มาดูว่าจะมีลูกเล่นอะไรบ้างค่ะ ส่วน Data bar เป็นการแสดง Bar หรือแท่งของข้อมูลนั่นเองค่ะถ้าไม่เห็นภาพ มาปฏิบัติกันดีกว่าค่ะ โดยเลือกช่วงของข้อมูล และเลือก Formatting เลือก Quick Analysis จากนั้นเลือก Data bar ตามขั้นตอนดังรูป ผลลัพธ์ที่ได้ ดังรูปด้านล่างค่ะ เป็นการแสดง Bar ให้เห็นถึงปริมาณของชั่วโมงการทำงานนั่นเอง ส่วน Greater จะเลือกข้อมูลที่มีข้อมูลที่สูงกว่า ที่เรากำหนด สามารถทำได้ดังนี้ค่ะโดยเลือกช่วงข้อมูลที่ต้องการ เลือก Quick Analysis และเลือก Formatting จากนั้นเลือก Greater จะปรากฎ Dialog ขึ้นมาเพื่อให้ใส่ จำนวนที่จะให้ว่าให้เลือกข้อมูลที่ดีกว่าอะไร ในที่นี้ระบุเป็น “8” จากนั้น จะให้แสดงข้อมูลที่เข้าเงื่อนไขเป็นอย่างไร ในที่นี่เลือกเป็น “Light Red Fill with Dark Red Text” คือให้ cell และอักษร ที่เข้าเงื่อนไขเป็นสีแดง นั่นเอง (สามารถทำตามได้จากรูปด้านล่างค่ะ) และผลลัพธ์ คือใน Column C จะทำการ เปลี่ยนสีของ cell และ อักษร เป็นสีแดง สำหรับ วันที่มีการทำงานมากกว่า 8 ชั่วโมงนั่นเอง ส่วน Color จะแสดงข้อมูลในลักษณะของสี เพื่อแสดงถึงข้อมูลด้วยสีต่าง ๆ โดยตัวเลขน้อยสุดจะเป็น สีแดง เลขสูงสุดจะเป็นสีเขียว สำหรับข้อมูลตัวเลขกลาง ๆ จะเป็นสีที่แตกต่างออกไป มาทำเพื่อให้เห็นภาพดีกว่าค่ะ โดยเลือกช่วงข้อมูล จากนั้นเลือก Quick Analysis และเลือก Color ผลลัพธ์ จะเป็นดังรูปด้านล่างค่ะ ค่ะ จากที่แสดงมาทั้งหมด อาจจะพอช่วยให้เห็นภาพ เพื่อนำไปประยุกต์ใช้ในการจัดการข้อมูลด้วย Excel ในมุมต้องการได้นะค่ะ บางครั้งในการทำข้อมูลอาจจะต้องมีการประยุกต์นำเทคนิคนี้นิด อันนี้หน่อยมาช่วยๆ กัน ถึงจะได้ผลลัพธ์ตามต้องการนะค่ะ หวังว่าบทความนี้พอจะเป็นแนวทาง สำหรับผู้อ่านได้บ้าง ไม่มากก็น้อยนะค่ะ…ขอบคุณค่ะ

Read More »