บทความ

เฝ้าระวัง Triclosan ในสบู่ ยาสีฟัน ของท่าน

Triclosan เป็นสารที่มีคุณสมบัติยับยั้งแบคทีเรีย (Antibacteria) จึงนิยมใช้เป็น ส่วนผสมในผลิตภัณฑ์เพื่อความสะอาดหลายชนิด เช่น สบู่ ครีมอาบน้ำ ผลิตภัณฑ์ระงับกลิ่นกาย ยาสีฟัน น้ำยาบ้วนปาก ตลอดจนน้ำยาล้างจานด้วย โดยพบว่ามีการใช้เพื่อวัตถุประสงค์ต่างๆ เช่น เป็นสารกันเสีย และเป็น สารยับยั้งแบคทีเรีย เป็นต้น มีข้อถกเถียงกันว่า สารนี้ อาจจะมีผลเสียต่อร่างกาย และสิ่งแวดล้อม เช่น อาจมีผลต่อการทำงานของต่อมไร้ท่อ อาจทำให้เชื้อแบคทีเรียดื้อต่อยาปฏิชีวนะ และ เป็นสารตกค้างในดินและน้ำ โดยเฉพาะในน้ำอาจเป็นผลเสียต่อพืชและจุลินชีพในน้ำ (aquatic organisms) EPA (Environmental Protection Agency) องค์กรสิ่งแวดล้อมของอเมริกา จัด สาร Triclosan อยู่ในกลุ่มยาฆ่าแมลง!!! FDA (the U.S. Food & Drug Administration) องค์กรอาหารและยา ระบุว่า ผลิตภัณฑ์สบู่ เครื่องสำอางที่มีสาร Triclosan ไม่มีผลต่างจากการใช้สบู่และน้ำธรรมดาในการกำจัดเชื้อแบคทีเรีย หนังสือพิมพ์ WashingtonPost รายงาน เมื่อ 8 เมษายน 2553 ว่ากำลังศึกษาถึงผลของสาร Tricolsan ขณะนี้ ยังไม่มีข้อสรุปที่ชัดเจน บริษัทที่ใช้ Triclosan เป็นส่วนผสมของผล

คัดลอกข้อมูลที่ไม่ซ้ำกัน ของ Excel 2010

รูปภาพ
ถ้ามีข้อมูลที่ซ้ำ ๆ กัน ดังนี้ ถ้าต้องการคัดลอกเอาเฉพาะที่ไม่ซ้ำกัน  สามารถทำได้ โดยการใช้ตัวกรอง หรือ Filter โดยมีวิธีการดังนี้ ลากดำคลุมพื้นที่ข้อมูลทั้งหมด ไปที่ ข้อมูล (Data) ตัวกรอง และเลือก ขั้นสูง เลือกคัดลอกไปยังที่อื่น และเลือก Unique Record Only พร้อมทั้งระบุช่วงที่จะวางข้อมูล จะได้ข้อมูลที่ไม่ซ้ำกัน ดังภาพ

อาหารบำรุงหัวใจ

รูปภาพ
ฟังรายการ Health Talk Radio ของ Melanie Cole วันนี้ เป็นเรื่องเกี่ยวกับอาหารบำรุงหัวใจ น่าสนใจมาก ในรายการได้สัมภาษณ์ Dr. James Beckerman ซึ่งเป็นผู้เชี่ยวชาญด้านหัวใจ (Cardiologist) ผู้เขียนหนังสือ The Flex Diet Dr. James Beckerman บอกว่า อาหารที่สำคัญคือ 4F ได้แก่ อาหารที่มีเส้นใยอาหาร(Fiber) ปลา(Fish)  ผลไม้ (Fruit) และไขมันที่มีประโยชน์ต่อสุขภาพ(healthy Fat) อาหารที่มีเส้นใย เช่น ผัก ธัญญพืช ธัญพืชที่ผ่านกระบวนการขัดสีน้อย(whole grain) ของเราคงได้แก่พวกข้าวกล้องนั่นแหละครับ อาหารเส้นใยอย่างน้อยควรได้รับวันละประมาณ 25 - 30 กรัม ปลา ให้ประโยชน์หลายอย่าง เช่น กรดไขมันโอเมก้า 3 ควรรับประทาน 1 - 2 ครั้งต่อสัปดาห์ (1-2 servings per week) ผลไม้ มีประโยชน์ Dr. James Beckerman บอกว่า ผลไม้ต่างจากน้ำผลไม้ น้ำผลไม้เป็นอาหารที่ผ่านกระบวนการแล้ว ถือเป็น processed food เพราะฉะนั้น การรับประทานผลไม้ดีกว่าดื่มน้ำผลไม้ เพราะ การรับประทานผลไม้จะได้ ทั้งน้ำ ทั้งเส้นใย ไขมันที่มีประโยชน์ต่อสุขภาพ ไขมันที่ควรหลีกเลี่ยง คือ ไขมัน Trans และนอกจากนี้ก็ควรหลีกเลี่ยงไขมันอิ่มตัว (saturated fat

เทคนิคการใช้ Recordset ในการเปิดตารางฐานข้อมูล ของ Access VBA

เทคนิคการใช้ Recordset ของ MS Access ใช้ DAO หรือ ADO ทั้ง DAO และ ADO ต่างก็มีวัตถุ Recordset เหมือนกัน แต่มี method properties และ options ต่างกัน แต่ DAO เป็น native library ที่ของ ACCESS MS Access แต่ละรุ่นมีการตั้งค่า Default ของ Library ต่างกัน ดังนั้น ในการกำหนด Dim ต้องกำหนดให้ชัดเจน เช่น Dim rst as DAO.Recordset ไม่ใช่ Dim rst as Recordset ควรกำหนด Type ให้กับ Recordset เสมอ โดยปกติ Access จะกำหนด Type เป็นแบบ Dynaset (dbOpenDynaset) เมื่อเปิด Query หรือ ตารางเชื่อมโยง และกำหนด Type  เป็นแบบ Table (dbOpenTable)เมื่อเปิดตารางในฐานข้อมูลเดียวกัน ซึ่งทั้งสองประเภทนี้มี Method ที่ต่างกัน เช่น dbOpenTable มี Seek แต่ไม่มี FindFirst เป็นต้น ดังนั้น ถ้าไม่กำหนด Type และเมื่อมีการแยกตารางออกเพื่อให้มี Front End และ Back End จะทำให้เกิด Error ได้ - ควรกำหนด Type เป็นแบบ Dynaset จะครอบคลุมได้ทุกกรณี - dbOpenTable มี Seek method ที่ทำงานได้เร็วมาก แต่จะใช้กับ SQL Statement ไม่ได้ - ถ้าต้องการความเร็ว และไม่ต้องการแก้ไขข้อมูล ให้กำหนด Type เป็น dbOpenSnapshot ตัวอย่าง

ฟังก์ชัน like ของ Excel

รูปภาพ
ขึ้นต้นว่า ฟังก์ชัน like ของ Excel ก็ผิดเสียแล้ว เพราะ Excel ไม่มีฟังก์ชัน likeถ้าต้องการเปรียบเทียบ เหมือนกับการใช้ like ของ Excel จะทำอย่างไร วันก่อนผมต้องการนับอาชีพของคน จำนวน 24,000 คน จะนับทีละเซลล์คงไม่ไหว ปัญหาคือว่า บางคนเขียนอาชีพเดียวกัน ต่างกัน เช่น ลูกจ้าง รับจ้าง ลูกจ้างบริษัท ลูกจ้างชั่วคราว เป็นต้น อาชีพพวกนี้ ถือเป็นอาชีพรับจ้างทั้งหมด จึงต้องนับเป็นอาชีพเดียวกัน วิธีการ สร้างสูตร โดยใช้หน้าต่าง VBA เขียนโค้ดเหมือนกับสูตร like เพื่อนับว่า อาชีพดังกล่าว มีคำว่า จ้าง หรือไม่ ใช้ฟังก์ชัน Countif() เพื่อนับจำนวนที่เป็นจริง คือ มีคำว่า จ้าง การสร้าง ฟังก์ชัน like เพิ่ม Developer Tab บนริบบิ้น (Excel 2010 ไปที่ File > Option > Customize Ribbon > Developer) เปิดหน้าจอเขียนโค้ด (ไปที่ Developer Tab >  Visual Basic หรือกด Alt + F11) ถ้าไม่เห็นหน้าจอเขียนโค้ด ให้เลือกเมนู View > Code พิมพ์ฟังก์ชัน ดังภาพ Function isLike(myText As String, myWord As String) As Boolean       isLike = " " & myText & " " Like "*"

การปัดเศษขึ้น เป็นเลขจำนวนเต็ม ของ Access VBA

รูปภาพ
วันก่อนผมเขียนโปรแกรมสำหรับพิมพ์ใบปะหน้าซองข้อสอบ และต้องการคำนวณจำนวนกล่องที่ใช้ในการบรรจุข้อสอบ วิธีการคือ เอาจำนวนแผ่นกระดาษเป็นตัวตั้ง และหารด้วยจำนวนกระดาษในกล่องแต่ละขนาดที่สามารถบรรจุกระดาษได้ เช่น กล่องขนาดใหญ่ บรรจุกระดาษได้ 2,500 แผ่น ถ้ามีกระดาษ 5,000 แผ่น ก็ต้องใช้กล่อง 2 กล่อง ทีนี้ ถ้าในกรณีที่มีกระดาษ 2,600 แผ่น  ก็จะเหลือเศษไม่ถึงครึ่ง ถ้าใช้การปัดเศษธรรมดา ก็จะได้เป็น 2 กล่อง แต่ความจริงแม้จะเหลือเศษนิดหน่อยก็ต้องใช้กล่องอีกกล่องหนึ่ง ดังนั้นจึงต้องมีการปัดเศษขึ้นเป็นจำนวนเต็ม ไม่ว่าจะเหลือเศษเท่าไรก็ตาม Access ไม่มีฟังก์ชันการปัดเศษขึ้นเสมอ ถ้าจะใช้ฟังก์ชัน Round() ก็จะไม่ได้ผลที่ต้องการ อย่างนี้ต้องใช้ฟังก์ชัน int() แต่มีวิธีการเขียนเสียใหม่ เพื่อให้ได้เศษปัดขึ้นเสมอ เช่น 22 หารด้วย หารด้วย 3 จะได้ เท่ากับ 7.33 ปัดเศษ เป็น 8 สูตรมีดังนี้ -int(-ตัวตั้ง/ตัวหาร) ตัวอย่าง 22 หารด้วย 3 จะได้ค่าเป็น  7.33 ถ้าปัดเศษธรรมดา จะได้ 7 แต่ถ้าต้องการให้ได้ 8 ต้องเขียน -int(-22/3) ซึ่งถ้าพิมพ์ใน immediate window จะได้ผลดังภาพ ฟังก์ชัน Round() การปัดเศษธรร

ตัวแปร global ของ MS Access VBA

รูปภาพ
VBA มี Scope ของค่าตัวแปร ที่จำกัดอยู่ใน Procedure หรือ Module ซึ่งเมื่อออกจาก scope นั้น ๆ ไปแล้ว ค่าของตัวแปรจะหมดไปด้วย ถ้าต้องการรักษาค่านั้นไว้ เพื่อนำไปใช้ใน procedure หรือที่อื่น ๆ ในฐานข้อมูล ต้องประกาศให้เป็นตัวแปรแบบ Global ซึ่งทำได้ ดังนี้ ไปที่แถบ Modules สร้างโมดุลใหม่ หรือจะใช้โมดุลที่มีอยู่แล้วก็ได้ เปิดโมดูล และประกาศค่าตัวแปรให้ใช้งานได้ทั้งฐานข้อมูล โดยใช้ว่า Public นำหน้า เรียกใช้งานตัวแปรนี้ ในที่ต่าง ๆ โดยไม่ต้องประกาศ Dimension (Dim) ของตัวแปรนั้น ๆ ถ้าต้องการกำหนดค่าของตัวแปรไปด้วย ก็สามารถทำได้ เช่น Public Const previousForm as String = "frmMain" มีข้อควรระวังคือ เมื่อเกิดมี Error ค่าของตัวแปรจะหมดไปด้วย ควรมีการ Trap Error ไว้เพื่อตรวจสอบในทุก procedure ด้วย

การใช้ VBA สั่งเปิดรายงานแบบมีเงื่อนไข (MS Access)

รูปภาพ
รายงานที่นำข้อมูลมาจาก Query สามารถกำหนดเงื่อนไขในการแสดงข้อมูลได้ ดังนี้ กำหนดเงื่อนไขโดยตรงในช่อง Criteria ของ Query นั้น ๆ  เช่น ถ้าเราต้องการให้นำข้อมูลของอำเภอนครหลวงมาแสดง ให้พิมพ์ข้อความในเครื่องหมายคำพูดในช่อง Criteria ดังภาพ ถ้าเป็นการสั่งจากฟอร์ม เราสามารถกำหนดให้นำข้อความจาก กล่องข้อความ list box หรือ combo box มาเป็นเงื่อนไขได้ โดยการอ้างอิงถึง กล่องข้อความในช่องเงื่อนไข ในภาพ เป็นการอ้างอิงข้อความชื่อวิชา ที่อยู่ใน กล่องข้อความ ในแบบฟอร์มชื่อ frmShowAll_by_Subject (อ่านวิธีการอ้างอิงถึง Object  คลิกที่นี่ ) ใช้ stLinkcriteria เพื่อกำหนดเงื่อนไขในการเปิดฟอร์ม  วิธีนี้เหมาะสำหรับการกำหนดเงื่อนไขที่มีการใช้สูตร เช่น ถ้าต้องการให้แสดงชื่อวิชาทั้งหมด หรือให้เลือกเฉพาะวิชาใดวิชาหนึ่งที่ต้องการ เราสามารถกำหนดเงื่อนไข ใน stLinkCriteria ได้ ตัวอย่างนี้ เป็นการกำหนดเงื่อนไข ให้นำข้อความใน list box ชื่อ lstSubNames มาเป็นเงื่อนไขในการเปิดรายงาน ตามที่ระบุ แต่ถ้าหาก ข้อความใน lstSubNames เป็นเครื่องหมายดอกจัน (*) ก็ให้นำข้อมูลทุกวิชามาแสดง         If Me.lstSubNames.Valu

การสร้าง QAT บนริบบิ้น ของ Access 2010

รูปภาพ
เมื่อมี การสร้างริบบิ้นขึ้นใช้เอง โดยสร้างตาราง USysRibbons และเขียน XML กำหนดค่า ต่าง ๆ จะไม่พบว่ามี Quick Access Toolbar (QAT) ที่ทำให้เข้าถึงคำสั่งต่าง ๆ ที่ใช้บ่อย ๆ ได้ ถ้าต้องการให้มี QAT ต้องเขียนเพิ่มเข้าไปใน XML ดังนี้ <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" > <ribbon startFromScratch="true"> <qat> <documentControls> <button idMso="FileSave"/> <control idMso="Undo" /> <control idMso="Redo" /> <button idMso="Paste"/> <button idMso="PrintDialogAccess"/> </documentControls> </qat> <tabs> <tab idMso="TabHomeAccess" visible="true" /> ... ภาพที่ได้ จะเป็นดังนี้ มีข้อสังเกตคือ FileSave เป็นปุ่ม (Button) ส่วน Redo และ Undo เป็น Control

ไม่สามารถคัดลอก และวาง จาก Excel มาที่ Access

รูปภาพ
โดยปกติ โปรแกรม MS Access และ MS Excel สามารถถ่ายโยงกันได้ เช่น ลากดำ และกดปุ่ม คัดลอก หรือ Copy จากโปรแกรม MS Excel และมาวาง ในโปรแกรม MS Access ได้ทันที ไม่มีปัญหา แต่บางทีสิ่งที่ไม่คาดคิดก็เกิดขึ้น นั้นคือ ไม่สามารถวางสิ่งที่คัดลอกจาก Excel มาไว้ใน Access ได้ โดยมีข้อความแจ้งให้ทราบว่า ข้อมูลที่คัดลอกไปที่คลิปบอร์ดเสียหาย ไม่สามารถวางได้ ลองปิดโปรแกรม แล้วเปิดใหม่ ปิดเครื่องแล้วเปิดใหม่ ก็ไม่หาย สาเหตุหลักเกิดมาจากการ update ของไมโครซอฟท์ ทำให้เกิดปัญหาด้านความปลอดภัยของ Excel เลยทำให้ไม่สามารถคัดลอก และวาง ใน Access ได้  อ่าน KB958437  และ KB967699 การแก้ไข วิธีที่ 1 คัดลอกแล้วปิดโปรแกรม Excel คัดลอกจาก Excel แล้วปิดโปรแกรม Excel เมื่อเขาถามว่า จะเอาสิ่งที่คัดลอกไว้ในคลิปบอร์ดเก็บไว้เพื่อให้สามารถเอาไปใช้กับโปรแกรมแกรมอื่น หรือไม่ ต้องตอบว่าใช่ คลิกที่ Access และกดปุ่ม วาง หรือ Paste เท่านี้ก็สามารถวางได้ วิธีที่ 2 คัดลอกจาก Excel แล้วมาที่ Access และ Paste จาก คลิกปบอร์ด คัดลอกจาก Excel มาที่ Access คลิกเพื่อเปิด คลิปบอร์ด จะเห็นสิ่งที่คัดลอกจาก Excel ค