เช็คข้อมูลซ้ำในตารางอย่างไร



0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

23 มี.ค. 64 , 14:32:06
อ่าน 229 ครั้ง

Tatchawin

เช็คข้อมูลซ้ำในตารางอย่างไร
« เมื่อ: 23 มี.ค. 64 , 14:32:06 »
สวัสดีครับ

สอบถามหน่อยครับ พอดีผมต้องการเขียนโค้ด VBA AfterUpdate Combobox บน Unbound ครับ โดยหลังจาก Update ให้เช็ค Row ในตาราง หากค่า CongDiseaseID(Datatype Number) และ PersonID(Datatype Text) ในตาราง tblCongDiseaseDetails ตรงกับที่กรอกบน Form
แล้วอยู่ใน Row เดียวกันทั้งสองค่า ให้ฟ้องขึ้นมาว่าค่าซ้ำ ไม่สามารถกรอกได้

เช่น

บนตารางกรอก PersonID(Text) = 000001, CongDiseaseID(Number)= 1

PersonID          CongDiseaseID
000001                     1
567891                     10
654521                     9

Record แรกตรงกับที่กรอกบนตาราง ต้องการให้ PopUp เด้งฟ้องทันทีว่าซ้ำครับ

ผมลองเขียนแล้ว ได้ประมาณด้านล่างนี้ครับ แต่ไม่สำเร็จสักที

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

Private Sub txtCongDiseaseID1_AfterUpdate()
Dim intSearch As Integer
intSearch = Me.txtCongDiseaseID1.Value
    If DLookup("[CongDiseaseID]", "tblCongDiseaseDetails", "PersonID='" & Me.txtPersonID1 & "'") = intSearch Then
       MsgBox "ไม่อนุญาตให้กรอกข้อมูลซ้ำ, กรุณาลองใหม่", vbInformation, "ข้อมูลซ้ำกับข้อมูลเดิม"
    End If
End Sub

 

23 มี.ค. 64 , 15:00:28
ตอบกลับ #1

PNR

: เช็คข้อมูลซ้ำในตารางอย่างไร
« ตอบกลับ #1 เมื่อ: 23 มี.ค. 64 , 15:00:28 »
ต้องเช็ค ทั้ง 2 textbox และ 2 Field ในครั้งเดียว ตัวอย่างโค้ด

Sub SearchDuplicate()
If Not IsNull(Me.txtCongDiseaseID1) And Not IsNull(Me.txtPersonID) Then
If DLookup("[CongDiseaseID]", "tblCongDiseaseDetails", "CongDiseaseID=" & Me.txtCongDiseaseID1 & "") _
And DLookup("[PersonID]", "tblCongDiseaseDetails", "PersonID='" & Me.txtPersonID & "'") Then
MsgBox "ไม่อนุญาตให้กรอกข้อมูลซ้ำ, กรุณาลองใหม่", vbInformation, "ข้อมูลซ้ำกับข้อมูลเดิม"
End If
End If
End Sub

Private Sub txtCongDiseaseID1_Exit(Cancel As Integer)
Call SearchDuplicate
End Sub

Private Sub txtPersonID_Exit(Cancel As Integer)
Call SearchDuplicate
End Sub
« แก้ไขครั้งสุดท้าย: 23 มี.ค. 64 , 15:05:44 โดย PNR »
เรียนเพื่อนสมาชิกและอาจารย์ทุกท่าน
ผมไม่ใช่อาจารย์และไม่ใช่ผู้ที่แตกฉานใน Access นะครับ
แค่ผู้หนึ่งที่แชร์ความรู้เท่าที่มี ถ้าหากอาจารย์ทุกท่านเห็นว่ายังไม่ถูกต้อง
กรุณาโพสตอบกระทู้ส่วนเนื้อหาที่น่าจะถูกต้องกว่าให้ด้วยเพื่อเป็นวิทยาทาน
 
โพสต์นี้ได้รับคำขอบคุณจาก: Tatchawin

23 มี.ค. 64 , 15:53:50
ตอบกลับ #2

Tatchawin

: เช็คข้อมูลซ้ำในตารางอย่างไร
« ตอบกลับ #2 เมื่อ: 23 มี.ค. 64 , 15:53:50 »
ลองกับไฟล์ตัวเองแล้วไม่ได้เลยครับ

งั้นผมขอส่งไฟล์จริงมาให้ เพื่อโปรดูให้ผมทีนะครับ โดยความหมายของผมคือ ที่ frmqryTransactions2 หากบนหน้า Form ตรงส่วน "กรอกข้อมูลผู้ป่วยจากการซักประวัติ" ซึ่งมี
- textbox PersonID 5 อัน (Control Source Reference มาจาก textbox ตัวอื่น ห้ามไม่ให้ Enable และ Lock ไว้ ให้ Insert ลงตาราง tblCongDiseaseDetails ด้วยค่านี้)
- ComboBox CongDisease 5 อัน (ต้องกรอกเข้าไปเอง) >> หลังจากกรอก Combo Box เสร็จให้เช็ค After Update ทันทีว่า "PersonID" และ "CongDiseaseID" ซ้ำกับ Record บนตาราง tblCongDiseaseDetails หรือไม่ เช่น ถ้าผู้ป่วยที่มี PersonID: 00000001 หากกรอกว่าป่วยด้วยโรคประจำตัว "Hypertension" และ "กระดูกทับเส้นประสาท" อีก จะซ้ำกับข้อมูลบนตาราง ห้ามไม่ให้กรอกซ้ำอีก ให้ PopUp เด้งเตือน อะไรประมาณนี้ครับ

ไม่แน่ใจว่าผมอธิบายงงหรือเปล่า 555555 ถ้างงตรงไหนถามกลับได้นะครับ รบกวนทีนะครับ

ขอบคุณล่วงหน้ามากๆเลยครับ ใกล้สำเร็จแล้วครับผม




[ไฟล์แนบถูกลบโดยผู้ดำเนินการ]

 

23 มี.ค. 64 , 22:14:18
ตอบกลับ #3

chai

: เช็คข้อมูลซ้ำในตารางอย่างไร
« ตอบกลับ #3 เมื่อ: 23 มี.ค. 64 , 22:14:18 »
ใช้​ BeforeUpdate event หลัง​ texbox อันที่2 ดีกว่าครับ

 If (not isnull(me. textbox_id) or me.textbox_id<>""​)​ and (not isnull(textbox_disease) or me. textbox_disease<>""​) then
        If dcount("*", "table_name", "id=forms! Formname!textbox_id and   disease =forms! Formname!textbox_disease" ) >0
       then
       Msgbox "ข้อมูลซ้ำ"
       Cancel=true
       End if
Else
Msgbox "ใส่ข้อมูลไม่ครบ"
End if
ลองประยุกต์ดูครับ
« แก้ไขครั้งสุดท้าย: 23 มี.ค. 64 , 22:23:58 โดย chai »

 
โพสต์นี้ได้รับคำขอบคุณจาก: PNR, Tatchawin

24 มี.ค. 64 , 08:34:11
ตอบกลับ #4

Tatchawin

: เช็คข้อมูลซ้ำในตารางอย่างไร
« ตอบกลับ #4 เมื่อ: 24 มี.ค. 64 , 08:34:11 »
ใช้​ BeforeUpdate event หลัง​ texbox อันที่2 ดีกว่าครับ

 If (not isnull(me. textbox_id) or me.textbox_id<>""​)​ and (not isnull(textbox_disease) or me. textbox_disease<>""​) then
        If dcount("*", "table_name", "id=forms! Formname!textbox_id and   disease =forms! Formname!textbox_disease" ) >0
       then
       Msgbox "ข้อมูลซ้ำ"
       Cancel=true
       End if
Else
Msgbox "ใส่ข้อมูลไม่ครบ"
End if
ลองประยุกต์ดูครับ

ลองแล้ว ไม่ได้เลยครับ TT ดูเหมือนไม่มีอะไร แต่ไปต่อไม่ถูกเลย

 

24 มี.ค. 64 , 09:32:35
ตอบกลับ #5

PNR

: เช็คข้อมูลซ้ำในตารางอย่างไร
« ตอบกลับ #5 เมื่อ: 24 มี.ค. 64 , 09:32:35 »
ลองดูครับ
เรียนเพื่อนสมาชิกและอาจารย์ทุกท่าน
ผมไม่ใช่อาจารย์และไม่ใช่ผู้ที่แตกฉานใน Access นะครับ
แค่ผู้หนึ่งที่แชร์ความรู้เท่าที่มี ถ้าหากอาจารย์ทุกท่านเห็นว่ายังไม่ถูกต้อง
กรุณาโพสตอบกระทู้ส่วนเนื้อหาที่น่าจะถูกต้องกว่าให้ด้วยเพื่อเป็นวิทยาทาน
 
โพสต์นี้ได้รับคำขอบคุณจาก: Tatchawin

24 มี.ค. 64 , 14:43:00
ตอบกลับ #6

Tatchawin

: เช็คข้อมูลซ้ำในตารางอย่างไร
« ตอบกลับ #6 เมื่อ: 24 มี.ค. 64 , 14:43:00 »
ลองดูครับ

ทำได้แล้วครับ เมื่อคืนงมเองตั้งนาน  :cry: ยังไงก็ขอบคุณมากๆนะครับ  :love: 

 


บอร์ดเรียนรู้ Access สำหรับคนไทย