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

การแก้ไขข้อมูลจากหลายตาราง

ในกรณีที่ตารางหลักมีแต่ตัวเลข id ซึ่งมีการเชื่อมโยงจากตารางอื่น และต้องการให้ผู้ใช้แก้ไขข้อมูลในตารางหลัก จึงจำเป็นต้องนำข้อมูลจากตารางที่เกี่ยวข้องมาแสดง เพื่อให้ผู้ใช้เลือก และแก้ไขให้ถูกต้อง

ในตัวอย่างต่อไปนี้ มีข้อมูล 3 ตาราง โดยมีตารางหลักคือ tblCourseSchedule ซึ่งเชื่อมโยงจาก 2 ตาราง
แต่ละตาราง มีข้อมูลดังนี้
ต้องการให้ผู้ใช้แก้ไขข้อมูลในตาราง tblCourseSchedule ซึ่งมีแต่ตัวเลข จำเป็นต้องนำข้อมูลจากตารางอื่นมาแสดงให้เห็น โดยใช้ Listbox แสดงข้อมูลให้เลือก เพื่อแก้ไขอีกทีหนึ่ง หน้าจอ มีดังนี้

หลักการ
  1. สร้าง Query โดยใช้ข้อมูลจาก 3 ตาราง เพื่อให้แสดงข้อความของแต่ละ Record ในตาราง tblCourseSchedule
  2. สร้าง Listbox โดยกำหนดให้ใช้ Query ที่สร้่าง เป็น Row Source ของ Listbox
  3. เมื่อมีการคลิก ให้นำค่าไปไว้ใน Textbox และ Combobox 
  4. เมื่อคลิกปุ่มแก้ไข หรือ ลบ ให้ปรับข้อมูลในตาราง tblCourseSchedule
ปัญหา

          Combobox นำข้อมูลมาจากตาราง tblVenue เพื่อให้ผู้ใช้เลือกสถานที่ การนำชื่อสถานที่มาแสดง ทำอย่างไร จึงจะให้ตรงกับสถานที่ ที่อยู่ใน Listbox ที่ผู้ใช้ระบุว่าต้องการแก้ไข
           ทางออกคือ ใช้ id ของสถานที่จากใน Listbox และวน loop ใน Combox โดยใช้ Property Column() เพื่อหาว่า id นั้นอยู่ในแถวที่เท่าไรของ Combobox จากนั้น จึงใช้เป็นข้อมูล เพื่อนำมาแสดงใน Combox ด้วย Property itemData() ของ Combox อีกครั้งหนึ่ง

วิธีการ


  1. สร้าง Query ชื่อ qryEditCourseSchedule
  2. สร้างฟอร์ม โดยมี Textbox Combobox Listbox และปุ่ม ดังภาพ
    มีชื่อดังนี้ txtCourse_id, txtCourse_name, txtBeginDate, txtEndDate, cboVenue, lstCourseSchedule, cmdEdit และ cmdDelete
  3. กำหนด Row Source ของ lstCourseSchedule เป็น Query ที่สร้าง
  4. ที่ Event On Click ของ Listbox เขียน โค้ดดังนี้
    Private Sub lstCourseSchedule_Click()
    If Me.lstCourseSchedule.ListCount > 0 Then
        Me.txtCourse_id = Me.lstCourseSchedule.Column(1)
        Me.txtCourse_name = Me.lstCourseSchedule.Column(2)
        Me.txtBeginDate = Me.lstCourseSchedule.Column(3)
        Me.txtEndDate = Me.lstCourseSchedule.Column(4)
        Me.cboVenue.RowSource = "SELECT id, venue, address FROM tblVenue ORDER by venue"

    ' หาตำแหน่งของชื่อสถานที่ เพื่อนำไปแสดงใน Combobox
       Dim i As Long
       Dim thisItem As Long

       ' ตรวจหาข้อมูลทีละแถวใน Combobox เพื่อหาว่า id ของสถานที่ ที่เลือก อยู่แถวที่เท่าไร
       For i = 0 To Me.cboVenue.ListCount - 1
          If Me.cboVenue.Column(0, i) = Me.lstCourseSchedule.Column(6) Then
          ' id  ของสถานที่ใน Combobox อยู่ในคอลัมน์ที่ 1 แต่อยู่ในคอลัมน์ที่ 7 ใน listbox
          ' index เริ่มจาก 0 คอลัมน์ที่ 1 จึงเป็น 0 และ คอลัมน์ที่ 7 จึงเป็น 6
              thisItem = i
              Exit For
         End If
       Next i
         ' แสดงข้อมูลชื่อสถานที่ใน Combobox
         Me.cboVenue.Value = Me.cboVenue.ItemData(thisItem)
         Me.cboVenue.Requery
    Else
         Call MsgBox("ไม่พบข้อมูล")
    End If
    End Sub
  5. ที่ปุ่ม แก้ไข เขียนโค้ดที่ On Click ดังนี้

    Private Sub cmdEdit_Click()

    CurrentDb.Execute "UPDATE tblCourseSchedule " & _
                 "SET course_id = '" & Me.txtCourse_id.Value & _
                 "', begin_date = " & toSTR(Me.txtBeginDate) & _
                 ", end_date = " & toSTR(Me.txtEndDate) & _
                 ", venue_id = " & Me.cboVenue & _
                 " WHERE cs_id = " & Me.lstCourseSchedule.Column(0)
               
                 Me.lstCourseSchedule.Requery
                 Call MsgBox("แก้ไขข้อมูลเรียบร้อยแล้ว")

    End Sub

    'ใช้ฟังก์ชัน toStr() เพื่อปรับรูปแบบวันที่ภาษาไทย ให้ใช้กับ vba ได้
  6. ที่ปุ่ม ลบ เขียนโค้ดที่ On Click ดังนี้

    Private Sub cmdDelete_Click()

        CurrentDb.Execute "DELETE FROM tblCourseSchedule WHERE cs_id = " & Me.lstCourseSchedule.Column(0)
        Me.lstCourseSchedule.Requery
        Call MsgBox("ลบข้อมูลเรียบร้อยแล้ว")

    End Sub


    ดาวน์โหลดไฟล์ ตัวอย่าง (688 Kb)






ความคิดเห็น

แสดงความคิดเห็น

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

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

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

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

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

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

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

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