ข้ามไปที่เนื้อหาหลัก

เทคนิค Access VBA

เป็นเทคนิค 4 อย่าง ที่เขียนเอาไว้ กันลืม

  • การใช้ฟอร์มย่อย หรือ subform
  • การใช้ Lookup ในฟิลด์ของตาราง
  • การสร้างฟอร์มค้นหาข้อมูล หรือ Search
  • การยกเลิก Layout
  1. การใช้ฟอร์มย่อย หรือ subform
    1. การอ้างอิง 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]
    2. การเปิดฟอร์มย่อยแบบว่าง ๆ โดยไม่มีข้อมูลใด ๆ ดังภาพ

      โดยปกติ ถ้ากำหนดฟอร์มย่อย ให้ไปยัง Record ใหม่ (ใช้คำสั่ง DoCmd.GoToRecord , , acNewRec) จะทำให้แสดงฟอร์มที่ว่าง ไม่มีข้อมูล หรืออาจจะกำหนดที่ on load event ของ ฟอร์มย่อย โดยกำหนดเงื่อนไขของ RecordSource ของฟอร์มย่อย ให้มีข้อมูลในฟิลด์หลัก เป็นว่าง หรือ Null ก็จะไม่แสดงข้อมูลใด ๆ แต่จะแสดงเฉพาะแบบฟอร์มว่าง ๆ เหมือนภาพข้างบน เช่น ที่ onLoad even ของฟอร์มหลัก กำหนดให้ RecordSource ของฟอร์มย่อย มีฟิลด์หลักเป็นว่าง ดังนี้

      Private Sub Form_Load()
             Me.teacherUpdate_subForm.Form.RecordSource = "SELECT * FROM " & _
             "tblTeachers WHERE id is null"
      End Sub

      อย่างไรก็ตาม ถ้ามีการกำหนดให้ฟอร์มย่อยนั้น ไม่สามารถเพิ่มฟิลด์ใหม่ได้ เช่น มีการกำหนดใน Property Sheet ของฟอร์มย่อย ไม่อนุญาตให้มีการเพิ่มใหม่ หรือ Allow Additions

      หรือมีการใช้คำสั่ง AllowAdditions = False เพื่อห้ามการเพิ่ม Record ก็จะไม่สามารถไปยัง Record ใหม่ได้ เพราะมีการสั่งห้ามเอาไว้ ผลก็คือ แทนที่จะมีฟอร์มว่าง ๆ แต่จะไม่ปรากฏว่ามีฟอร์มใด ๆ ให้เห็นเลย จะเห็นเป็นส่วนที่ว่าง ดังภาพ


      อย่างนี้ก็ดีไปอีกแบบ แล้วแต่ละเลือกเอาว่า จะให้มีฟอร์มย่อยปรากฎ หรือจะให้เป็นพื้นที่ว่าง ก็สามารถทำได้ ผมชอบว่า ถ้ากำหนดฟอร์มย่อยเป็นแบบ Continuous Forms การเว้นที่ว่างไว้ก่อนจะดีกว่า เมื่อคลิกเพื่อให้แสดงข้อมูล จึงจะปรากฏข้อมูลเป็นแถว ๆ ลงมา ดังภาพ

    3. การ Lock ฟอร์มย่อยเมื่อเปิด บางครั้งต้องการเปิดฟอร์มย่อย แต่ยังไม่อนุญาตให้คลิกกรอกข้อมูล หรือทำกิจกรรมใด ๆ กับฟอร์มย่อย จนกว่าจะคลิกปุ่ม หรือทำกิจกรรมที่กำหนดบนฟอร์มหลักเสียก่อน การ Lock ฟอร์มย่อย ให้ทำที่ฟอร์มหลัก เช่น เมื่อเปิดฟอร์มหลัก ก็ให้กำหนด control ของฟอร์มย่อย ไม่ให้เข้าถึงได้ โดยกำหนดให้ enabled เป็น False เช่น

      Forms![frmLearnerUpdate]![learner_subform].Enabled = False

      การ unlock ก็ทำได้ โดยกำหนด ให้ enabled เป็น true เช่น

      Forms![frmLearnerUpdate]![learner_subform].Enabled = True
  2. การใช้ Lookup ในฟิลด์ของตาราง
         การใช้ Lookup ในตาราง ช่วยทำให้ดูข้อมูลในฟิลด์ของตารางนั้น ๆ ง่ายขึ้น เช่น ฟิลด์ที่เก็บข้อมูลหมายเลขประจำตัวของสมาชิก ที่เป็น Foreign Key จะเก็บเป็นตัวเลข แต่เราสามารถใช้ Lookup เพื่อให้ Access ไปค้นหาชื่อในตารางที่เก็บข้อมูลสมาชิก โดยให้นำชื่อมาแสดงได้ แต่การเก็บข้อมูล ก็จะเก็บเป็นตัวเลข

    เมื่อดูข้อมูลแบบตาราง จะเห็นว่า ฟิลด์ หมายเลขประจำตัว และรหัสวิชา เป็นชื่อ ไม่ใช่ตัวเลข แต่ข้อมูลจริงที่ Access เก็บ จะเก็บเป็นตัวเลข

    การนำไปใช้

    ในกรณีที่ต้องการสร้างฟอร์มเพื่อปรับ/แก้ไขข้อมูล การใช้ Lookup ฟิลด์ จะสะดวกมาก โดยเฉพาะถ้ากำหนดให้เป็น Combobox เพราะสามารถเลือกเปลี่ยนข้อมูล โดยใช้ข้อมูลที่มีอยุ่แล้วในตารางอื่น ซึ่ง ถ้าจะะขียนเป็นโค้ด ก็ทำได้ แต่ใช้ Lookup สะดวกกว่าไม่ต้องเขึยนโค้ด เช่น การเปลี่ยนชื่อผู้รับผิดชอบโครงการ หรือ การเปลี่ยนสถานที่ ซึ่งมีอยุ่ในฐานข้อมูลในตารางอื่น

  3. การสร้างฟอร์มค้นหาข้อมูล หรือ Search
    สมมติว่า มีข้อมูลการจัดการอบรมหลักสูตรต่าง ๆ

    ในตัวอย่าง ฟิล์ดสถานที่จัดอบรม และผู้รับผิดชอบ เก็บข้อมูลเป็นตัวเลข แต่ใช้ lookup เพื่อนำข้อมูลจากตารางอื่นมาแสดง จึงเห็นเป็นชื่อสถานที่ และชื่อผู้รับผิดชอบ

    ในตัวอย่างนี้ จะเป็นการสร้างฟอร์มให้ค้นหาหลักสูตร เพื่อแก้ไขข้อมูล สถานที่จัดและผู้รับผิดชอบ

    หลักการ

    สร้างฟอร์มโดยมี ตารางข้างต้น เป็น RecordSource ใช้ส่วนหัวของฟอร์ม เพื่อสร้าง Text box สำหรับคำค้นหา  ทั้งนี้โดยกำหนดฟอร์ม เป็นแบบต่อเนื่อง เพื่อให้แสดงหลายรายการ ในการค้นหาใช้คำสั่ง SQL เพื่อเปลี่ยน RecordSource ตามคำค้นที่ใช้เป็นเงื่อนไข

    วิธีการ
    1. สร้างฟอร์มใหม่ เป็นชนิด Continuous form กำหนด RecordSource คือ ตาราง tblCoursePlan ตั้งชื่อฟอร์มนี้ว่า frmSearch
    2. กำหนดไม่ให้สร้าง Recordใหม่ โดยกำหนดที่  Property Sheet ของฟอร์มนี้ และกำหนดให้ Allow Additions เป็น  No การกำหนดเช่นนี้ จะทำให้ผู้ใช้ไม่สามารถคลิกเพื่อเพิ่ม รายการใหม่ได้
    3. ที่ส่วนหัวของฟอร์ม สร้าง Text box ตั้งชื่อว่า txtSearch  และปุ่ม ใช้ข้อความปุ่มว่า ค้นหา ตั้งชื่อว่า cmdOK และนำ Field ในตารางมาวาง ในส่วนของ Detail ดังภาพ
    4. กำหนดให้เมื่อเปิดฟอร์ม เป็นฟอร์มว่าง ไม่เห็นข้อมูลในตาราง โดยเขียนคำสั่ง ที่ on load ของฟอร์ม ดังนี้

      การกำหนดเงื่อนไข ให้ฟิลด์ เป็น null จะทำให้ไม่มีข้อมูล จะแสดง Record ใหม่ที่ว่าง q แต่เราได้กำหนดว่า ไม่ให้สร้าง Record ใหม่ ดังนั้น จะไม่มีอะไรปรากฏให้เห็น นอกจากหัวของฟอร์มเท่านั้น ดังนี้
    5. เขียนคำสั่งที่ on click ของปุ่ม เพื่อให้ปรับ RecordSource ของฟอร์ม เพื่อให้ค้นหาชื่อหลักสูตร และนำข้อมูลมาแสดง ตามเงื่อนไขที่กำหนดใน text box ดังนี้ 

      เนื่องจาก ชื่อหลักสูตรเป็นข้อความ จึงต้องมีการใช้เครื่องหมายคำพูดคร่อมด้วย
    6. เมื่อนำมาแสดง จะได้ผลการค้นหาตามที่ต้องการ
    7. ถ้าต้องการให้ค้นหาในหลายฟิลด์ ก็เพิ่มเงื่อนไข OR ก็จะทำให้ สามารถค้นหาได้หลายฟิลด์
    8. มีข้อสังเกตว่า ถ้าเป็นฟิลด์ในตารางที่มีการใช้ Lookup จะไม่สามารถใช้คำที่เห็นปรากฏ เป็นคำค้นได้ เนื่องจากข้อมูลในตารางจริง เป็นตัวเลข ส่วนที่เห็นเป็นการนำมาแสดง จึงไม่สามารถใช้เป็นเงื่อนไขคำค้นได้ ถ้าจะใช้ ต้องเป็นตัวเลขที่เก็บในตารางจริงเท่านั้น


  4. การยกเลิก Layout
        Access 2010 มีการสร้าง layout ถ้าสร้างแบบฟอร์มโดยคลิกปุ่มฟอร์ม แต่ปัญหาคือ การเคลื่อนย้ายตำแหน่งไม่ค่อยสะดวก ถ้าจะยกเลิกการ Layout ให้เลือกมุมมองแบบ ออกแบบ และคลิกปุ่ม ดังภาพ



ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

แนวข้อสอบ เงื่อนไขสัญลักษณ์

ครั้งที่แล้ว ได้แนะนำหลักการทำ ข้อสอบ ก.พ. ภาค ก. ความสามารถทั่วไป เงื่อนไขสัญลักษณ์ มา แล้ว ถ้าใครยังไม่ได้อ่าน ก็คลิกกลับไปอ่านได้
ความจริง ข้อสอบเงื่อนไขสัญลักษณ์ เป็นข้อสอบไม่ยาก ถ้าเข้าใจหลักการ และมีทักษะความชำนาญ ใจเย็น ๆ อย่าตื่นเต้น โดยเฉพาะการดูเครื่องหมายต่าง ๆ อย่าดูผิด เช่น เครื่องหมายมากกว่า (>) น้อยกว่า (<) เป็นต้น เพราะการแก้ปัญหาโจทย์เงื่อนไขสัญลักษณ์ หรือ inequality ก็คล้ายกับการแก้ปัญหาสมการโดยทั่วไป นั่นเอง คือ สามารถบวก ลบ คูณ หาร ด้วยจำนวนที่เท่ากัน ทั้งสองข้างของเครื่องหมายได้ กลับเศษเป็นส่วนได้ แต่ก็มีบางเรื่อง บางรายละเอียดที่แตกต่างกันบ้าง ซึ่งอ่านได้จาก ข้อสอบ ก.พ. ภาค ก. ความสามารถทั่วไป เงื่อนไขสัญลักษณ์ นะครับ ครั้งนี้ จึงเป็นการนำแนวข้อสอบ เงื่อนไขสัญลักษณ์ เพื่อนำมาฝึกทำให้เกิดทักษะความชำนาญ เพื่อจะได้ทำข้อสอบได้รวดเร็วขึ้น เพราะในห้องสอบ เวลาจัดได้ว่ามีค่ามาก ยิ่งทำเร็วและถูกต้อง ยิ่งดี คำสั่ง

เลือกตอบข้อ 1. ถ้าข้อสรุปทั้งสอง ถูกด้องหรือเป็นจริง ตามเงื่อนไข
เลือกตอบข้อ 2. ถ้าข้อสรุปทั้งลอง ผิดหรือไม่เป็นจริง ตามเงื่อนไข
เลือกตอบข้อ 3. ถ้าข้อ…

อุปมา อุปไมย สำนวนการเปรียบเทียบ ของไทย

การเตรียมสอบ ก.พ. ภาค ก. เพื่อสอบบรรจุเข้ารับราชการ มีการทดสอบความสามารถทั่วไป มักจะมี
ข้อสอบที่เกี่ยวกับอุปมาอุปไมย  ข้อสอบมีลักษณะ ให้หาตัวเลือกที่มีความหมาย ความสัมพันธ์คล้ายคลึง หรือเหมือนกับที่โจทย์กำหนดให้มา  หรือเติมข้อความที่มีความหมายสอดคล้องกับคำอุปมาอุปไมยที่ยกมาให้ เป็นต้น ดังนั้น การเข้าใจความหมายของคำอุปมาอุปไมย จึงช่วยให้ทำข้อสอบได้ดียิ่งขึ้น

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

คนดุ หากต้องการให้ความหมายชัดเจน น่าฟัง และเกิดภาพพจน์ชัดเจนก็ต้องอุปมาอุปไมยว่า “ดุ เหมือน เสือ”
ขรุขระมาก การสื่อความยังไม่ชัดเจนไม่เห็นภาพ ต้องอุปมาอุปไมยว่า “ขรุขระเหมือนผิวมะกรูด” หรือ “ขรุขระเหมือนผิวพระจันทร์” ก็จะทำให้เข้าใจ ความหมายในรูปธรรมชัดเจนมากยิ่งขึ้น

คำอุปมาอุปไมยที่ควรรู้จัก (พิมพ์คำ/ข้อความ แล้วกดปุ่ม "ค้นหา")

เทคนิคการทำ ข้อสอบ อนุกรม ของ ก.พ.

|ประเภทของอนุกรม เทคนิคการทำโจทย์เลข อนุกรม ข้อแนะนำเพิ่มเติม |


ข้อสอบเลขอนุกรม ของ ก.พ. ต้องการวัดความถนัดทางด้านตัวเลข โดยการจัดทำตัวเลขเป็นชุด ๆ ที่มีความสัมพันธ์กันบางอย่าง โดยให้ผู้เข้าสอบได้แสดงความถนัดด้านตัวเลข ในการวิเคราะห์และแก้ปัญหาตามที่โจทย์ระบุ


ประเภทของอนุกรม รูปแบบความสัมพันธ์ของตัวเลขอนุกรมเท่าที่พบบ่อย ๆ มีหลายประเภท เช่น

ก. อนุกรมเชิงเดี่ยว 

ได้แก่ชุดตัวเลขที่เป็นอนุกรมเพียงชุดเดียว เช่น
ค่าของตัวเลขเพิ่มขึ้นต่อเนื่องอย่างเป็นระบบ โดยการบวก หรือ คูณ ตัวเลขก่อนหน้า เช่น บวกด้วยตัวเลขที่เป็นค่าคงที่ เช่น    5   10   15   20   ...?...
บวกด้วยตัวเลขที่มีระบบ เช่น     1    2    5    10   ...?...
คูณด้วยค่าคงที่ เช่น   1   3   9   27   ...?...
มีทั้ง บวก ลบ คูณ หรือหาร สลับกัน เช่น บวกแล้วคูณด้วยค่าคงที่สลับกัน ดังตัวอย่าง  5   7    14   16  32   ...... มีการ บวก ลบ คูณ หรือ หาร ร่วมกัน เช่น  15   31   63   127   255  ...?...
ในตัวอย่างนี้ จะเห็นว่า ตัวเลขตัวแรกคูณด้วย 2 และบวกด้วย 1 จะได้ตัวเลขตัวถัดไป คูณด้วยค่าคงที่ที่เป็นเศษส่วน ให้สังเกตความสัมพันธ์ว่า ตัวเลขก่อนหน้า …