บทความ

กำลังแสดงโพสต์จาก กุมภาพันธ์, 2012

ดอกอัญชัน

รูปภาพ
วันนี้เห็นคนเก็บดอกอัญชัน ถามเขาว่าเก็บเอาไปทำไม เขาบอกว่า เอาไปตากแดดและชงกินเหมือนน้ำชา ทำให้ตาที่เคยมืดมัว มองเห็นได้ดีขึ้น เอาไปหุงกับข้าวก็ได้ ได้ข้าวสีม่วง สวยดี ดอกอัญชันแห้ง ซื้อ-ขายกัน กิโลกรัมละ 200 บาท ก็เลยลองหาข้อมูลดู

ดอกอัญชัน (Butterfly Pea, Blue Pea หรือ Clitoria ternatea) มีสารแอนโธไซยานิน ซึ่งมีคุณสมบัติเพิ่มการไหลเวียนของเลือดในหลอดเล็กๆ ทำให้เลือดไปเลี้ยงรากผมและนัยน์ตามากขึ้น สารแอนโทรไซยานินนี้จะพบในผลไม้และดอกไม้ที่มีสีน้ำเงิน สีแดง หรือสีม่วง
มีคุณสมบัติเป็นสารต้านอนุมูลอิสระจากธรรมชาติ โดยที่พืชจะสร้างสารนี้ขึ้นมา เพื่อป้องกันดอกหรือผลตัวเอง จากอันตรายของแสงแดดหรือโรคภัย

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

เมล็ดใช้เป็นยาระบายแต่จะทำให้คลื่นไส้อาเจียน

คุณค่าทางอาหาร สารอาหารให้สารสีฟ้า ซึ่งเป็นสารต้านอนุมูลอิส…

มะเร็งต่อมลูกหมาก (Prostate Cancer)

รูปภาพ
วันนี้ขอเป็นเรื่องของผู้ชายโดยเฉพาะ นั่นคือ มะเร็งต่อมลูกหมาก

ผู้ชายเป็นกันมาก ในอเมริกา ปีนี้ 2012 (2555) มีรายงาน ของ สถาบันมะเร็งแห่งชาติ (National Cancer Institute) ว่ามีคนเป็นโรคนี้กัน จำนวน 241,740 คน และเสียชีวิต จำนวน 28,170 คน

อะไรที่เป็นสาเหตุของโรคนี้

ยังไม่มีใครรู้ว่าอะไรคือต้นเหตุของโรค แต่พอรู้ว่าโอกาสเสี่ยงที่จะเกิดเป็นโรคนี้ มีดังนี้
อายุเกิน 65 ปีขึ้นไป มีโอกาสเป็นโรคนี้สูง ยิ่งอายุมากขึ้นยิ่งมีโอกาสเป็นสง ในประเทศอเมริกา ผู้ที่เป็นโรคนี้ส่วนใหญ่อายุเกิน 65 ปี ผู้ที่อายุต่ำกว่า 45 ปี มีน้อยมาก เกือบไม่พบเลยประวัติการเป็นโรคนี้ของคนในครอบครัว ถ้าท่านเคยมี พ่อ พี่ หรือ ลูก เคยเป็นโรคนี้ ท่านมีความเสี่ยงที่จะเป็นโรคนี้สูงกว่าผู้อื่นเชื้อชาติ คนผิวดำ (นิโกร) จะมีความเสี่ยงต่อโรคนี้ มากกว่าคนผิวขาว คนลาตินอเมริกา ยิ่งถ้าพวกเราชาวเอเซีย และหมู่เกาะแปซิฟิกแล้ว ความเสี่ยงต่อโรคนี้ น้อยกว่าพวกผิวขาวเสียอีก พวกอินเดียแดง และชาวพื้นเมืองรัฐอะลาสก้า ก็มีความเสี่ยงน้อย การที่มีความเสี่ยงต่อโรคสูง ไม่ได้แปลว่าจะต้องเป็นโรคนี้ ผู้ที่มีความเสี่ยงสูง แต่ไม่เป็นก็มีเยอะนะครับ

อาการของโร…

เฝ้าระวัง 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

ตัวอย่าง

Set rst = db.Open…

ฟังก์ชัน 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 "*" & myWord & &quo…

การปัดเศษขึ้น เป็นเลขจำนวนเต็ม ของ 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()
การปัดเศษธรรมดา ให้ใช้ฟังก์ชัน 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.Value = "*"…

การสร้าง 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


คลิกเพื่อวางใน Access
อ้างอิง
http:…

เทคนิค Access VBA

รูปภาพ
เทคนิค เกร็ด การใช้ VBA กับ Microsoft Access
การสั่งไม่ให้ใช้ คลิกขวา ที่ฟอร์ม หรือ รายงานเปิดฟอร์มหรือรายงานแบบ มุมมองออกแบบ หรือ Design Viewที่ on load เขียนคำสั่งเพิ่ม ดังนี้
Forms("ชื่อฟอร์ม หรือชื่อรายงาน").ShortcutMenu = Falseเมื่อเปิดฟอร์ม จะไม่สามารถใช้คลิกขวาได้การใช้ Combo boxกำหนด Row Source Type เป็น Table/Query เมื่อต้องการนำข้อมูลจากตารางหรือ Query มาแสดงถ้าจะใส่ข้อมูลเอง ให้กำหนด Row Source Type เป็น Value listถ้าจะเคลียข้อมูลใน Combo box ให้ใช้คำสั่ง me.ชื่อ combo box. RowSource = ""ในกรณีที่ต้องการสร้าง Comob box 2 อัน เมื่อเลือกอันที่หนึ่งแล้ว ให้เป็นเงื่อนไขที่จะนำตัวเลือกมาแสดงใน combo box อันที่ 2 เช่น เมื่อเลือกจังหวัดแล้ว ให้นำชื่ออำเภอของจังหวัดที่เลือก มาให้เลือกใน Combo box อันที่ 2 ทำดังนี้
- สร้างตาราง 2 ตาราง สำหรับเป็นข้อมูลจังหวัด และ อำเภอ
ตารางจังหวัด
ตารางอำเภอ
- สร้าง combo box 2 อัน สมมุติชื่อ cboProvince และ cboAmphur
-กำหนด Row Source Type ทั้งสอง เป็น Table/Query เพราะต้องเอาข้อมูลมาจาก ตาราง เนื่องจากชื่อจังหวัด ชื่ออำเภอ มีมา…