วันจันทร์ที่ 9 มีนาคม พ.ศ. 2558

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

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

ตัวอย่าง

หน้าจอให้กรอกรหัสหลักสูตร
เมื่อกรอกรหัส และคลิกปุ่ม ตกลง โปรแกรมจะไปตรวจสอบข้อมูลในตาราง เมื่อพบว่ามีข้อมูลซ้ำ จะแสดงข้อความให้ทราบ

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

วิธีการ

  1. สร้างตาราง ชื่อ tblCourses
  2. สร้างฟอร์มเพิ่มหลักสูตรใหม่ ชื่อ frmCourses เป็น Unbound Form
  3. สร้างฟอร์มแสดงข้อมูลจากตาราง tblCourse ชื่อ frmShowAllCourses
  4. เมื่อคลิกปุ่มตกลง ให้ค้นหาข้อมูล รหัสวิชา ที่มีในตาราง ถ้าพบว่าซ้ำกัน ให้เปิดหน้าจอแสดงข้อความว่า จะขอดูข้อมูลที่มีอยู่แล้วหรือไม่ ถ้าต้องการ ให้เปิดฟอร์ม frmShowAllCourses โดยกำหนดให้ไปที่หมายเลขรหัสที่ผู้ใช้พิมพ์
  5. ที่ปุ่ม ตกลง เขียนโค้ด ดังนี้
    Private Sub cmdSave_Click()
    Dim rst As DAO.Recordset
    Set rst = CurrentDb.OpenRecordset("select * from tblCourses WHERE (Course_id)='" & _
    Me.txtCourseID.Value & "'")
    numOfRecords = rst.RecordCount
    If numOfRecords > 0 Then
         If (MsgBox("ไม่สามารถใช้รหัส " & Me.txtCourseID.Value & "  เนื่องจากมีในฐานข้อมูลแล้ว" & vbCrLf & vbCrLf & _
            " ท่านต้องการดูรหัสทั้งหมด ในฐานข้อมูลหรือไม่" & vbCrLf & _
            "Yes=ต้องการ, No=ไม่ต้องการ", vbYesNo, "trainingBase") = vbYes) Then
            DoCmd.OpenForm "frmShowAllCourses"
            Forms!frmShowAllcourses.Recordset.FindFirst "course_id = '" & Me.txtCourseID.Value & "'"
            Exit Sub
        Else
            Me.txtCourseID.SetFocus
            Exit Sub
        End If
    End If
    Set rst = CurrentDb.OpenRecordset("tblCourses")
        rst.AddNew
        rst!course_id = Me.txtCourseID
        rst.Update
        Call MsgBox("เก็บข้อมูลเรียบร้อยแล้ว")
        Me.txtCourseID = ""
    Set rst = Nothing
    End Sub
  6. จากโค้ด จะเห็นว่า การสั่งให้ไปยัง Record ที่ต้องการในฟอร์ม ใช้คำสั่ง FindFirst โดยระบุข้อมูล ฟิล์ดที่ต้องการ
  7. ดาวน์โหลดไฟล์ เพื่อดูรายละเอียด ได้ คลิกที่นี่



ไม่มีความคิดเห็น:

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