บทความ

กำลังแสดงโพสต์ที่มีป้ายกำกับ ms access

การ Disable ปุ่มบน Custom Ribbon ของ MS Access

รูปภาพ
การสร้างปุ่มเพื่อใช้เอง ใน MS Access 2010 ต้องสร้างบนริบบิ้น โดยสร้าง XML ในตาราง USysRibbons รายละเอียด คลิกอ่านที่นี่  ในบางกรณี เราต้องการทำให้ปุ่มบางปุ่ม อยู่ในสภาวะไม่ทำงาน โดยทำให้เป็นสีจาง ๆ เราสามารถทำได้ โดยการแก้ไข โค้ด XML ในตาราง USysRibbons เมนูปกติ เมนูที่มีบางปุ่ม อยู่ในสภาวะ ไม่ทำงาน ในตัวอย่างข้างบน จะเห็นมีปุ่ม คะแนน ก่อน-หลังเรียน และ ปุ่ม ตรวจชิ้นงาน  อยู่ในสภาวะไม่ทำงาน วิธีการ ก่อนอื่นต้องเปิดเมนูของระบบ โดยคลิกขวาที่แถบ วัตถุ Access ทั้งหมด > ตัวเลือกการนำทาง จะเปิดหน้าต่าง ตัวเลือกการนำทาง ให้คลิก แสดงวัตถุของระบบ จะเห็นมีตาราง USysRibbons ให้เปิดตารางนี้ ไปดูที่ปุ่มที่ต้องการ และสั่ง ให้ enabled = "false" ปิด และเปิดไฟล์ Access เพื่อให้ โปรแกรมอ่านค่าในตาราง USysRibbons เพียงเท่านี้ ก็จะทำให้ปุ่มนี้ ไม่ทำงานเป็นสีเทา ๆ

การนำเข้าข้อมูล Access จาก Excel

รูปภาพ
เมื่อมีความจำเป็นต้องนำข้อมูลจาก Excel เข้าโปรแกรม Access สามารถทำได้โดยง่าย เพราะ Access มีเมนูการนำเข้าข้อมูลจากภายนอกอยู่แล้ว สามารถนำเข้าจากไฟล์ข้อความ (Text File) ไฟล์ XML และไฟล์ Excel เมื่อนำข้อมูลเข้า Access ข้อมูลจะไปอยู่ในตารางที่กำหนด โดยต่อท้ายจากข้อมูลที่มีอยู่เดิม หรือ ถ้าต้องการให้สร้างตารางใหม่ สำหรับข้อมูลที่นำเข้า ก็สามารถทำได้ หลักการนำเข้าข้อมูลจาก Excel เคล็ดลับที่สำคัญคือ ต้องกำหนดชื่อหัวคอลัมน์ ให้เป็นชื่อฟิลด์ในตารางที่นำเข้า ข้อมูลที่นำเข้าไม่จำเป็นต้องครบทุกฟิลด์ในตาราง แต่ที่สำคัญคือต้องดูชนิดของข้อมูลให้ตรงกันด้วย และตารางที่จะนำเข้าข้อมูลต้องไม่กำลังเปิดใช้งาน มิฉะนั้นเวลานำเข้าข้อมูล โปรแกรม Access จะเกิดหน้าจอถามว่าตารางกำลังเปิดอยู่จะให้ปิดหรือไม่ ถ้าไม่ปิดก็จะไม่สามารถนำเข้ามูลไปต่อท้ายได้ ตัวอย่างการนำเข้าข้อมูลจาก Excel ในตัวอย่างนี้ ฐานข้อมูล Access ประกอบด้วย 2 ตาราง คือ Table1 และ Table2 ตาราง Table1 มีฟิลด์ 3 ฟิลด์ คือ ID ชนิดข้อมูลเป็น AutoNumber ฟิลด์ ชื่อ ข้อมูลเป็นชนิด Text และ ฟิลด์ จังหวัด ข้อมูลเป็น ชนิด Text ต้องการนำเข้าข้อมูลจ

การกรองข้อมูลใน combo box ของ Access

รูปภาพ
หลายครั้งที่มีการนำข้อมูลมาให้เลือกใน Combo Box ข้อมูลที่นำมาจะต้องมีการกรองข้อมูลในตาราง โดยมีเงื่อนไขต่าง ๆ เช่น ให้นำชื่อของบุคคลที่มีอายุตั้งแต่ 20 ปีขึ้นไป เป็นต้น หลักการ สามารถสร้างได้หลายวิธี วิธีที่ง่ายที่สุดคือ สร้าง Query ที่นำข้อมูลมาจากตารางเดียวหรือหลายตาราง และกำหนดเงื่อนไขที่้ต้องการ จากนั้น จึงสร้างฟอร์มและสร้าง combo box โดยกำหนดให้ Control source ของ combo box เรียกใช้ข้อมูลจาก Query นั้น วิธีการ สมมุติว่า มีข้อมูลดังต่อไปนี้ สร้าง Query โดยกำหนดในช่องเงื่อนไข ในฟิลด์อายุ โดยกำหนดให้มากกว่า 20 ดังภาพ สร้างฟอร์ม และนำ Combo Box มาวาง และกำหนด Row Source ให้ใช้ข้อมูล จาก Query 1 เมื่อเรียกใช้งาน จะเห็นว่า มีเฉพาะชื่อของผู้ที่มีอายุมากกว่า 20 ปี มาแสดง ถ้าเปรียบเทียบกับข้อมูลใน Table1 จะเห็นว่ามีทั้งหมด 7 คน แต่นำมาแสดงเพียง 4 คน คือ เฉพาะคนที่มีอายุมากกว่า 20 ปีเท่านั้น ถ้าต้องการให้แสดงอายุด้วย ให้กำหนด Column Count เท่ากับ 2 เมื่อเรียกใช้งาน จะได้ ดังนี้ การนำข้อมูลไปใช้ ให้ระบุว่าจะนำข้อมูลในคอลัมน์ใดไปใช้งาน โดยระบุในแท็บข้

การนับฟิลด์ Yes/No ใน MS Access

รูปภาพ
เรื่องมีอยู่ว่า กำหนดให้ผู้เรียนส่งงานทางเว็บ และดาวน์โหลดข้อมูลมาเข้า Access โดยแต่ละคนจะส่งงานจำนวน 3 เรื่อง ได้แก่ Line Facebook และ Blogger ทีนี้ต้องการจะนับดูว่า แต่ละคนที่ส่งขึ้นมา ส่งมาแล้วคนละกี่เรื่อง เกณฑ์การผ่านขั้นต่ำคือ 2 เรื่อง จึงจำเป็นต้องนับฟิลด์ Yes/No ว่า ในแต่ละ Record มีจำนวนเท่าไร เพื่อจะได้นำไปใช้เป็นเงื่อนไขในการกำหนดว่า ผ่านหรือยัง ดังภาพข้างล่าง   เราสามารถนับฟิลด์ Yes/No ได้ ถ้า Yes จะมีค่าเป็น -1 และ No จะมีค่าเป็น 0 ดังนั้นถ้าต้องการนับค่า โดยใช้ Query ต้องสร้างฟิลด์ใหม่ และนับฟิลด์ เช่ Total:-(LnProject+FbProject+BgProject) ถ้าต้องการให้แสดงเฉพาะที่มีค่าตั้งแต่ 2 ขึ้นไปก็กำหนดเงื่อนไขให้แสดง ดังภาพ เมื่อกด เรียกใช้ จะได้ ดังนี้ ถ้าเราต้องการระบุว่า คนที่ส่งมาแล้ว ตั้งแต่ 2 รายการขึ้นไป ให้แสดงผลว่า ผ่าน เราก็ใช้ Query นี้ แต่เปลี่ยนเป็น Update Query ให้ใส่คำว่าผ่าน ใน ฟิลด์ที่ต้องการ ดังภาพ โดยสรุป เราสามารถนับฟิลด์ Yes/No ได้ โดยค่า Yes มีค่าเป็นติดลบ และค่า No มีค่าเป็นศูนย์ เมื่อเวลานำมาคำนวณ ใส่เครื่องหมายลบข้างหน้า เพื่อเปลี่ยนค่าจ

Is Null และ ช่องว่าง ใน Access VBA

รูปภาพ
วันนี้ปวดหัวอยู่ตั้งนาน เพราะเรื่อง Is Null และ ช่องว่าง หรือ ข้อความว่างเปล่า ใน Access นั่นเอง เรื่องก็คือว่า มีข้อมูลในตาราง ที่กำหนดชนิดข้อมูลเป็น Text ตั้งค่าเริ่มต้นให้เป็นว่าง หรือ "" ในตารางมีข้อมูลอยู่แล้ว และได้ลบข้อมูลออกทิ้งไป ต่อมาต้องการสร้างเงื่อนไขใน Query ให้แสดงข้อมูลในฟิลด์นี้ โดยกำหนดเงื่อนไข ดังนี้   ผลปรากฎว่า ไม่มีอะไรออกมาให้เห็นเลย ทั้ง ๆ ที่ก็เห็น ๆ อยู่ว่า เคยมีข้อมูลอยู่ และลบไปแล้ว ตอนนี้ไม่มีอะไรแล้ว ทำไปทำมา ก็ได้ข้อสรุปว่า ข้อมูลชนิด Text ที่ลบไปแล้วเมื่อสักครู่ ปัจจุบัน กลายเป็น Null เลยทดสอบ เปลี่ยนเงื่อนไขใหม่ เป็น คราวนี้ ปรากฏว่า มีข้อมูลใน Record ที่ลบฟิลด์ isPass ไปแล้ว มาแสดงให้เห็น แต่ปัญหาก็คือ มีฟิลด์ isPass ใน Record อื่น ที่มีค่าเป็น "" หรือข้อความว่าง เมื่อกำหนดเงื่อนไขเป็น Is Null ข้อมูลใน Record ที่มีข้อความว่าง ก็จะไม่ปรากฏ เพราะไม่เป็นไปตามเงื่อนไข ทางแก้ก็คือ ต้่องใช้ฟังก์ชัน Nz() มาช่วย โดยสร้างฟิลด์ใหม่ แปลงข้อมูลที่เป็น Null ให้เป็นข้อความว่าง หรือ "" เสียก่อน แล้วจึงกำหนดเงื่อนไขเป็น ข้

การสร้างตารางด้วย Access VBA

รูปภาพ
วันก่อน สร้าง Query เพื่อปรับข้อมูลในตาราง โดยสร้าง Query ให้หาผู้เรียนปัจจุบันที่เรียนจบ และนำข้อมูลไปปรับในตารางผู้เรียน ปรากฏว่า ไม่สำเร็จ เพราะมี Error ว่า Operation must use updateable query ลองหาข้อมูลดู ก็พบว่า Update Query ก็มีข้อจำกัดอยู่เหมือนกัน ใช้ไม่ได้ทุกเรื่อง เช่น ฟิลด์ที่มีการคำนวณ หรือที่มาจาก Cross Tab ไม่สามารถใช้ Update Query ได้ เพราะมีการคำนวณเหมือนกัน  บังเอิญ Query ของผมเอามาจาก Cross Tab จึงทำให้มีปัญหา ทางออกของผมจึงนำเอาผลที่ได้ไปไว้ในตารางที่สร้างด้วยโค้ด VBA เป็นการสร้างตาราง On the fly ความจริงใช้ Query สร้างตารางแล้วเรียกใช้งานก็ได้ แต่ผมว่า ใช้โค้ด VBA สร้างตารางดีกว่า มีคนบอกว่า น่าจะใช้โค้ด VBA มากกว่าการใช้ Query เพราะ Query ปรับ เปลี่ยน ลบ ได้ ทำให้มีโอกาสการเปลี่ยนแปลงจากต้นฉบับเดิมได้สูง   ผมสร้างตารางชั่วคราว และเอาข้อมูลในตารางนี้ไปปรับข้อมูลในอีกตารางหนึ่ง ไม่มีปัญหา ปรับได้เรียบร้อยดี   โค้ด VBA สำหรับการสร้างตาราง มีดังนี้   Private Sub TestTemp()    On Error GoTo ErrorHandler    Dim strSQL as String    Dim strTable as Stri

เลขไทยบนรายงาน ของ MS Access

รูปภาพ
ในการทำงานกับ Microsoft Access บ่อยครั้งที่เราต้องใช้เลขไทย เช่น การพิมพ์เลขที่วุฒิบัตร จำเป็นต้องใช้เลขไทย เช่น เลขไทยที่เห็น ใช้ฟังก์ชัน Access ที่เขียนขึ้น เพื่อให้แสดงเลขไทย ฟังก์มีดังนี้ Public Function cThaiNumber(whatString As String) As String Dim myString As String Dim length As Byte Dim i As Byte Dim character As String Dim newString As String myString = whatString newString = "" length = Len(myString) For i = 1 To length     character = Asc(Mid(myString, i, 1))     Select Case character            Case "48": character = "240"            Case "49": character = "241"            Case "50": character = "242"            Case "51": character = "243"            Case "52": character = "244"            Case "53": character = "245"            Case "54": character = "246"            Case "55": character

การถ่ายโอนข้อมูลระหว่าง Access กับ MySQL ผ่านทาง phpMyAdmin

รูปภาพ
การโอนข้อมูลจาก MySQL  ไปยัง MS Access โดยใช้ phpMyAdmin ถ้าต้องการโอนข้อมูลจากฐานข้อมูล MySQL บนเว็บ ไปยัง MS Access ผ่านทาง phpMyAdmin ให้เข้า phpMyAdmin เลือกตารางที่ต้องการถ่ายโอนไปยัง MS Access เลือกส่งออก และกำหนดเป็นชนิด XML เลือกส่งออกเป็นไฟล์ คลิก ลงมือ การนำเข้า MS Access นำเข้า MS Access โดยผ่านทาง ข้อมูลภายนอก > นำเข้าและเชื่อมโยง > แฟ้ม XML เลือกไฟล์ แล้วคลิก ตกลง กำหนดเงื่อนไขว่า จะเอาเฉพาะโครงสร้าง หรือข้อมูลด้วย หรือ จะนำไปต่อท้าย(ผนวก)ตารางที่มีอยู่แล้ว เมื่อกำหนดแล้วคลิก ตกลง เมื่อคลิกตกลงโปรแกรมจะทำงานทันที ถ้าต้องการนำตารางใน MS Access เข้าฐานข้อมูล MySQL ผ่านทาง phpMyAdmin จะทำอย่างไร phpMyAdmin ส่งออกเป็นไฟล์ XML ได้ แต่ไม่สามารถนำไฟล์ XML เข้าฐานข้อมูลได้ ถ้าต้องการนำตารางจาก MS Access เข้าฐานข้อมูล MySQL ผ่านทาง phpMyAdmin ต้องส่งตารางออกเป็นไฟล์ csv จึงสามารถนำตารางเข้าฐานข้อมูลได้ สมมติว่า ต้องการนำข้อมูลจาก Table1 ในฐานข้อมูลของ Access เข้าตาราง MySQL วิธีการ เปิด MS Access 2010 คลิกเลือกตารางที่ต้องการส่งออก บนแถบวัตถุตาราง ขอ