เพิ่มข้อมูลคนเดิมถ้าซ้ำรหัสเดิมให้แสดงข้อมูลคนเดิม
กระทู้เก่าบอร์ด อ.Yeadram

 849   4
URL.หัวข้อ / URL
เพิ่มข้อมูลคนเดิมถ้าซ้ำรหัสเดิมให้แสดงข้อมูลคนเดิม

เรียน อาจารย์ทุกท่านครับ
    คือผมมี ข้อมูลฟิลด์นักเรียนชื่อ id_student ในตารางชื่อ student และได้สร้างตารางอีกอันชื่อ Absent_student (เพื่อกรอกการขาดเรียน) ซึ่งมีฟิลด์ชื่อ id_student เหมือนกัน แล้วเชื่อมความสัมพันธ์กันแบบ หนึ่งต่อกลุ่ม ความต้องการของผม มีดังนี้ครับ
1. สมมุติ ในหนึ่งสัปดาห์จะมาสรุปการขาดเรียน 1 ครั้ง ก็จะคลิกเพิ่มเลขประจำตัวนักเรียน (id_student) เช่น 30000 ชื่อนักเรียนก็จะปรากฏขึ้นมา แล้วผม ก็กรอกรายละเอียดการขาดเรียนในสัปดาห์นี้ เข้าไป ใน textbox1
2. พอสัปดาห์ที่ 2 จะมากรอกสถิติการขาดเรียนอีก ก็จะคลิ๊กเพิ่มข้อมูลนักเรียนเข้าไป ถ้าปรากฏว่า เป็นนักเรียนคนเดิม เลขประจำตัวนักเรียน (id_student) เช่น 30000 มีการขาดอีก
*** ผมต้องการให้ เมื่อคลิ๊กซ้ำเลขประจำตัวเดิม ให้ฟ้องว่า
1.มีข้อมูลนักเรียนคนนี้อยู่แล้ว
2.พร้อมกับให้ฟอร์มนี้ (frm_Absent_student) แสดงข้อมูลคนเดิม (เลขประจำตัว 30000) ขึ้นมา แล้วเราก็กรอกข้อมูลการขาดเรียน ในสัปดาห์ที่ 2 เข้าไป ใน textbox2 ที่สร้างไว้แล้ว ในตาราง Absent_student

****ความหมายคือ ถ้าคนเดิมซ้ำให้แจ้งเตือน พร้อมกับ เปิดแสดงข้อมูลคนเดิมที่มีการกรอกไปแล้วในสัปดาห์ก่อนขึ้นมา ***** ไม่ใช่เป็นการเพิ่มเรคอร์ด คนที่มรเลขประจำตัวเก่าขึ้นมาอีก 1 เรคอร์ดครับ ****
***** ในตาราง Absent_student ผมใช้ เขตข้อมูลชื่อ id_number เป็นคีย์หลัก โดยมีเขตข้อมูล id_student เชื่อมความสัมพันธ์กับ id_student ในตาราง Absent_student (ส่วนในตาราง student ใช้เขตข้อมูล ชื่อ id_student เป็นคีย์หลัก )

4 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R23458
ผมว่าง่ายๆคือทำ main form ที่มีรายะลเอียดของนักเรียน เช่น ID, ชื่อ ฯลฯ ส่วน sub form ที่เชื่อมกับ main form ด้วย ID ก็ให้มีฟิลด์ วันที่ขาดเรียน วันไหนขาดเรียนก็มาที่ main form ค้นด้วย ID พอเจอแล้ว Access ก็แสดง sub form วันที่ขาดเรียนที่เคยป้อนไปทั้งหมด จะป้อนวันที่ขาดเรียนเพิ่มเติมก็ไปที่ new record ของ sub form แล้วป้อนเพิ่ม น่าจะง่ายกว่านะครับ
2 @R23459
ถ้าอย่างที่ผมทำนี้ จะมีวิธีเรียกคนที่เคยกรอกไปแล้วขึ้นมาแสดงอีกครั้ง โดยไม่มีการเพิ่ม record ใหม่ได้ไหมครับ อาจารย์สันติสุข โค๊ดที่เขียน ประมาณนี้ครับ
Private Sub id_student_BeforeUpdate(Cancel As Integer)
    If DCount("id_student", "Absent_student_semester1", "id_student = '" & Me.id_student & "'") > 0 Then

        MsgBox "เลขประจำตัวนักเรียนซ้ำ" & vbCrLf & "ไม่สามารถเพิ่มได้อีก", , "การตรวจสอบข้อมูลซ้ำ"

        Cancel = False

        Me.id_student.Undo
*******ต้องการใส่เงื่อนไข ตรงบรรทัดแถวๆนี้ ให้เรียก เรียกประจำตัวเก่าเมื่อมีการซ้ำที่เคยกรอกไปแล้วขึ้นมาครับ**********
    End If
End Sub
3 @R23460
สมมุติข้อมูลเทเบิล Absent_student_semester1 แสดงอยู่ในฟอร์ม F ก็เขียนโค้ด
Forms("F").RecordSource = "select * from Absent_student_semester1 as A where A.id_student = '" + Me.id_student + "' " ลงในตำแหน่งที่คุณคอมเม้นท์มาครับ

4 @R23462
ขอบคุณอาจารย์สันติสุขครับ ผมใช้คำตอบอาจารย์ (R23458) ง่ายกว่าอย่างที่ว่าครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3148s