บทความ

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

MS Access VBA คลิกแล้วเปลี่ยนภาพ และ การวนภาพ

รูปภาพ
วันนี้ ผมใช้โปรแกรม MS Access มาทำเป็นเกมสื่อการสอน ภาษาอังกฤษ โดยใช้ VBA  ในเกมนี้ เป็นการจับคู่ภาพและคำภาษาอังกฤษ

การลบหรือเปลี่ยนแปลงระเบียนในตารางที่มีความสัมพันธ์กับตารางอื่น ของ Microsoft Access

รูปภาพ
โดยปกติ ถ้าตารางสองตารางของ MS Access ที่มีการเชื่อมความสัมพันธ์กัน ในลักษณะ one-to-many เราจะไม่สามารถแก้ไขฟิลด์ที่กำหนดความสัมพันธ์ ถ้าพยายามแก้ โปรแกรมจะขึ้นข้อความแจ้งให้ทราบ ดังนี้

เทคนิค Access VBA

รูปภาพ
เป็นเทคนิค 4 อย่าง ที่เขียนเอาไว้ กันลืม การใช้ฟอร์มย่อย หรือ subform การใช้ Lookup ในฟิลด์ของตาราง การสร้างฟอร์มค้นหาข้อมูล หรือ Search การยกเลิก Layout การใช้ฟอร์มย่อย หรือ subform การอ้างอิง Control ใน ฟอร์มย่อย จากฟอร์มหลัก ใช้รูปแบบ คือ Forms![main form name]![subform control name].Form![control name] -Forms เป็นการอ้างถึง Collection ของฟอร์ม - [main form name]  คือชื่อฟอร์มหลัก - [subform control name] คือชื่อที่ตั้งเป็นชื่อ Control สำหรับใส่ฟอร์มย่อย ไม่ใช่ชื่อฟอร์มย่อย แต่ก็อาจจะเป็นชื่อเดียวกันได้ ถ้าตั้งชื่อเหมือนกัน นั่นคือ ฟอร์มย่อย ต้องอยู่ใน Control ของฟอร์มหลัก เวลาอ้างถึงจึงต้องอ้างชื่อของ Control ที่เป็นที่อยู่ของฟอร์มย่อย -Form หมายถึงฟอร์มย่อย -[control name] คือชื่อของ control ที่ต้องการอ้างถึง ตัวอย่าง Forms![frmLearnerUpdate]![learner_subform].Form![txtFname] สามารถทำให้สั้นเข้า โดยใช้เครื่องหมาย . แทนเครื่องหมาย ! และใช้คำว่า Me แทนฟอร์มหลัก เช่น Me.[learner_subform].Form.[txtFname] การเปิดฟอร์มย่อยแบบว่าง ๆ โดยไม่มีข้อมูลใด ๆ ดังภาพ โดยปกติ

การเปลี่ยนสีตัวอักษรตามเงื่อนไขบนรายงาน ของ Access 2010

รูปภาพ
ในการทำรายงานผ่านหน้าจอ บางครั้งเราต้องการเน้นสีตัวอักษรให้ชัดเจน เช่น ถ้าเป็นรายงานการส่งเงิน ถ้าขาดส่ง ต้องการให้ขึ้นตัวอักษรสีแดง ถ้าเหลืออีก 1 เดือนจะต้องส่งเงิน ให้เป็นตัวอักษรสีชมพู นอกนั้น เป็นตัวอักษรตามปกติ ดังภาพ วิธีนี้ถ้าจะใช้ VBA กำหนดลักษณะของตัวอักษรใน Control ก็สามารถทำได้ แต่มีวิธีที่ง่ายกว่ามาก คือการใช้การกำหนดรูปแบบตามเงื่อนไข ซึ่งทำได้ ดังนี้ เปิดรายงาน ในมุมมองออกแบบ ในตัวอย่างนี้ ต้องการกำหนดเงื่อนไข ตามจำนวนเดือนที่เหลือ คือ ถ้าเหลือ 1 เดือน กำหนดให้ตัวอักษรเป็นสีชมพู ถ้าไม่เหลือเดือน ให้กำหนดสีตัวอักษร เป็นสีแดง Control ที่มีข้อมูลจำนวนเดือนที่เหลือ คือ monthsLeft ซึ่งเราจะใช้เป็นตัวกำหนดเงื่อนข คลิกเลือก Control ที่ต้องการให้ตัวอักษรเปลี่ยนทั้งหมด ไปที่เมนู รูปแบบ >  การจัดรูปแบบตามเงื่อนไข คลิกสร้างกฎ ซึ่งเป็นการระบุว่า ต้องการสร้างเงื่อนไขเพื่อจัดรูปแบบ จะเปิดหน้าต่างใหม่ ให้เลือก นิพจน์ที่จำเป็น เพื่อสร้างเงื่อนไขเอง และในช่องเงื่อนไข ให้พิมพ์เงื่อนไขที่ต้องการ ในที่นี้คือ ถ้าข้อมูลในฟิลด์ [monthsLeft] น้อยกว่าหรือเท่ากับ 0 เลือกรูป

การจัดรูปแบบข้อมูล Excel ด้วย VBA และนำเข้าไปยัง Access

รูปภาพ
การถ่ายโอนข้อมูล จาก Excel 2010 ไปยัง Access 2010 สามารถทำได้หลายวิธี เช่น การใช้เมนู ข้อมูลภายนอก หรือ External Data แต่ปัญหาอยู่ที่การจัดโครงสร้างของข้อมูล ถ้าโครงสร้างระหว่าง Excel และ Access ไม่ตรงกัน การถ่ายโอนก็จะทำได้ค่อนข้างลำบาก ทั้งนี้เพราะ การถ่ายโอนข้อมูลจาก Excel ไปยัง Access นั้น หัวตารางของ Excel จะต้องเหมือนกับชื่อ ฟิลด์ในตารางที่จะนำข้อมูลเข้า หรือมิฉะนั้นก็นำเข้าเป็นตารางใหม่ แล้วค่อยจัดการภายหลัง ในตัวอย่างนี้จะเป็นการถ่ายโอนเข้าตารางที่มีอยู่แล้ว ตัวอย่าง ต้องการถ่ายโอนข้อมูล ใน Excel ลงใน ตาราง ของ Access ต่อไปนี้ โครงสร้างของตาราง Access ที่ต้องการถ่ายโอนข้อมูลเข้ามา มีดังนี้ จะเห็นว่า โครงสร้างของข้อมูลใน Excel ไม่เหมือนกับใน Access ซึ่งเป็นเรื่องธรรมดา การถ่ายโอนข้อมูล จาก Excel จึงจำเป็นต้องจัดรูปแบบของข้อมูลใน Excel ให้เหมือนในตาราง ของ Access โดยถ้าจะให้ดี ก็ต้องเพิ่มชื่อหัวตาราง ให้เหมือนกับชื่อฟิลด์ในตารางของ Access ก็จะทำให้การถ่ายโอน สะดวก และง่ายได้ รูปแบบที่ต้องการ คือ ฟิลด์ ID เป็น AutoNumber จึงไม่ต้องนำเข้าจาก Excel วิธีการจัดรูปแบ

การเปิดฟอร์ม และไปยังเรคคอร์ดที่กำหนด ด้วย VBA ใน MS Access 2010

รูปภาพ
การให้ผู้ใช้งานฐานข้อมูล เพิ่มข้อมูลที่ไม่ซ้ำกันในตาราง เช่น เลขที่รหัสวิชา เป็นต้น เป็นเรื่องค่อนข้างลำบาก เนื่องจากผู้ใช้ต้องเดาสุ่มว่า มีข้อมูลแล้วหรือยังในตาราง วิธีแก้ไขอย่างหนึ่ง คือ นำข้อมูลที่มีอยู่แล้ว มาแสดงให้เห็น เพื่อกำหนดไม่ให้ซ้ำกับของเดิม ตัวอย่าง หน้าจอให้กรอกรหัสหลักสูตร เมื่อกรอกรหัส และคลิกปุ่ม ตกลง โปรแกรมจะไปตรวจสอบข้อมูลในตาราง เมื่อพบว่ามีข้อมูลซ้ำ จะแสดงข้อความให้ทราบ ถ้าต้องการตรวจสอบข้อมูลที่มีอยู่แล้ว จะนำข้อมูลที่มีในตารางมาแสดงในฟอร์ม และไปยังตำแหน่งหมายเลขที่ซ้ำ ตามที่ระบุ วิธีการ สร้างตาราง ชื่อ tblCourses สร้างฟอร์มเพิ่มหลักสูตรใหม่ ชื่อ frmCourses เป็น Unbound Form สร้างฟอร์มแสดงข้อมูลจากตาราง tblCourse ชื่อ frmShowAllCourses เมื่อคลิกปุ่มตกลง ให้ค้นหาข้อมูล รหัสวิชา ที่มีในตาราง ถ้าพบว่าซ้ำกัน ให้เปิดหน้าจอแสดงข้อความว่า จะขอดูข้อมูลที่มีอยู่แล้วหรือไม่ ถ้าต้องการ ให้เปิดฟอร์ม frmShowAllCourses โดยกำหนดให้ไปที่หมายเลขรหัสที่ผู้ใช้พิมพ์ ที่ปุ่ม ตกลง เขียนโค้ด ดังนี้ Private Sub cmdSave_Click() Dim rst As DAO.Recordset Set rst

Tab บนริบบิ้นที่สร้างเอง (custom ribbon) เปลี่ยน Focus เมื่อเปิดฟอร์ม หรือรายงาน

รูปภาพ
Tab บนริบบิ้นที่สร้างเอง (custom ribbon) เปลี่ยน Focus เมื่อเปิดฟอร์ม หรือรายงาน เรียกฟอร์มบนริบบิ้น จัดทำรายงาน (ชื่อTab4) เพื่อเปิดรายงาน เปิดรายงาน Focus เปลี่ยนไปที่ Tab ธนาคารโรงเรียน การแก้ไข เริ่มจากใน Access 2010 มี Method ชื่อ ActivateTab ซึ่งสามารถเปลี่ยน Focus ของ Tab บน Ribbon ให้อยู่ที่ Tab ที่ต้องการได้ โดยหลังจากสั่งเปิดรายงาน แล้ว สั่งให้ Focus ที่ Tab4 เช่น gobjRibbon.ActivateTab "Tab4"    จะเปลี่ยน Focus มาที่ Tab4

การเปิดไฟล์ Access แบบเต็มหน้าจอ (Full screen)

รูปภาพ
โดยปกติ เราเปิดไฟล์ Access จะเห็นมีริบบิ้น และองค์ประกอบอื่น ๆ ของโปรแกรมอยู่ด้วย เช่น ในกรณีที่เราต้องให้แสดงเฉพาะส่วนของโปรแกรมที่สร้างขึ้น โดยการซ่อนไม่ให้เห็นริบบิ้น และอื่น ๆ ก็สามารถทำได้เช่นกัน หลักการ สร้างฟอร์มเป็นฉากหลัง ซึ่งเป็นฟอร์ว่าง ๆ หรืออาจจะมีลวดลายเป็นพื้น ก็ได้ และกำหนดให้เป็นฟอร์มชนิด popup พร้อมทั้งกำหนดให้ Maximize ให้เต็มหน้าจอ แล้วเรียกฟอร์มอื่น ๆ ให้มาปรากฎซ้อนที่ฟอร์มนี้ ดังตัวอย่าง วิธีการ สร้างฟอร์มเปล่าชื่อ background และกำหนด Property ของฟอร์ม คือ Pop up เป็น Yes และ Modal เป็น No (เพราะต้องการให้เปิดฟอร์มนี้ และสามารถทำกิจกรรมอย่างอื่น ๆ ได้อีก ถ้ากำหนด Modal เป็น Yes จะไม่สามารถทำกิจกรรมใด ๆ ได้ จนกว่าจะปิดฟอร์มนี้เสียก่อน) กำหนด Border Style เป็น None และ กำหนด Record Selector เป็น No เพื่อไม่ให้มีขอบและเป็นหน้าว่างเปล่า สร้างฟอร์มที่จะให้แสดง ในตัวอย่างนี้คือ Form1 กำหนดคุณสมบัติคือ               Pop Up เป็น Yes               Modal เป็น Yes (เพื่อให้อยู่หน้าฟอร์ม background มิฉะนั้นจะถูกซ่อนอยู่ด้านหลัง)               Border S

การสร้าง Shortcut เพื่อเรียกใช้งาน Macro หรือ Procedure ใน Access 2010

รูปภาพ
ใน Access 2007 มีหน้าจอสร้าง Macro ซึ่งมีตัวเลือก AutoKeys สำหรับกำหนด shortcut เพื่อเรียกให้ Macro ที่สร้างขึ้น ทำงานได้ โดยไม่ต้องใช้เมาส์คลิก แต่ใช้การกดปุ่มที่แป้น ที่กำหนดเป็น Shortcut แต่ใน Access 2010 หน้าจอการสร้าง Macro หายไป แต่ความจริงยังคงสนับสนุน การใช้ AutoKeys เพื่อให้สามารถเรียกใช้ Shortcut ให้ Macro ทำงานได้เหมือนเดิม หน้าจอการสร้าง Macro ของ Access 2010 หลักการคือ สร้าง Macro และตั้งชื่อเป็น AutoKeys และ สร้าง Subform เพื่อกำหนด Shortcut และเรียกใช้ฟังก์ชัน Macro หรือเรียกฟังก์ชัน runcode เพื่อเรียกใช้งานฟังก์ชันที่สร้างเอง ให้ทำงาน ก็ได้ ในตัวอย่างนี้ จะเป็นการสร้าง Shortcut คือ Ctrl + K เพื่อให้แสดงข้อมูล ในฟิลด์ถัดไปของตาราง วิธีการ สร้างตารางให้มีข้อมูลและโครงสร้าง ดังภาพ สร้างฟอร์ม และกำหนด Record Source ของฟอร์ม เป็น Table1 ที่สร้างขึ้น เมื่อเวลานำ Textbox มาวาง จะได้กำหนดให้แสดงข้อมูลในฟิลด์ของตารางนี้ได้ สร้างกล่องข้อความ หรือ Textbox และกำหนด Control Source ให้เป็น Field1 (ถ้าไม่กำหนด Control Source ของฟอร์มนี้ เมื่อคลิก Control Source