ภายในวันไม่ให้กรอกข้อมูลซ้ำ



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

04 ส.ค. 63 , 19:00:08
อ่าน 258 ครั้ง

naekkhung

ผมมี subform ชื่อ collection มี combobox ชื่อ result_code โดยจะมีตัวเลือกหลายตัวเลือก กรณีที่พนักงานบันทึกข้อมูลภายในวันแล้วและเลือกตัวเลือก RPP PD BRK แล้วจะไม่สามารถลง RPP PD BRK ซ้ำได้ภายในวันได้อีก แต่ถ้าเป็นตัวเลือกอื่นสามารถเลือกลงซ้ำได้

« แก้ไขครั้งสุดท้าย: 05 ส.ค. 63 , 08:32:23 โดย naekkhung »

 

06 ส.ค. 63 , 16:03:16
ตอบกลับ #1

PNR

: ภายในวันไม่ให้กรอกข้อมูลซ้ำ
« ตอบกลับ #1 เมื่อ: 06 ส.ค. 63 , 16:03:16 »
สร้างคิวรี่ ขึ้นมาครับเพื่อรวบรวมว่า ในแต่ละวันได้ระบุ Result ว่าอะไร....   และระบุไปจำนวนกี่ครั้งแล้ว

แล้วสร้าง Dlookup มาเช็คจำนวนครั้งการระบุ Result ได้เลยครับ ถ้าเจอว่า ในวันนั้นเจอการระบุ Result แล้ว หรือ >1 ก็ให้ทำตามเงื่อนไขเช่นแจ้งเตือนเป็นต้น
ส่วนตัวอย่างไว้พรุ่งนี้เน้อ
เรียนเพื่อนสมาชิกและอาจารย์ทุกท่าน
ผมไม่ใช่อาจารย์และไม่ใช่ผู้ที่แตกฉานใน Access นะครับ
แค่ผู้หนึ่งที่แชร์ความรู้เท่าที่มี ถ้าหากอาจารย์ทุกท่านเห็นว่ายังไม่ถูกต้อง
กรุณาโพสตอบกระทู้ส่วนเนื้อหาที่น่าจะถูกต้องกว่าให้ด้วยเพื่อเป็นวิทยาทาน
 
โพสต์นี้ได้รับคำขอบคุณจาก: naekkhung

06 ส.ค. 63 , 18:25:01
ตอบกลับ #2

naekkhung

: ภายในวันไม่ให้กรอกข้อมูลซ้ำ
« ตอบกลับ #2 เมื่อ: 06 ส.ค. 63 , 18:25:01 »
ขอบคุณครับ ตั้งตารอเลยครับ

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

07 ส.ค. 63 , 08:19:00
ตอบกลับ #3

PNR

: ภายในวันไม่ให้กรอกข้อมูลซ้ำ
« ตอบกลับ #3 เมื่อ: 07 ส.ค. 63 , 08:19:00 »
ลองดูตัวอย่างนี้นะครับ


ผมใช้การสร้างคิวรี่เพื่อนับจำนวนครั้งการเลือกของCombobox Result ในแต่ละวัน
โดยกำหนดเงื่อนไขว่าถ้า RPP PD BRK นี้มีการลงไว้แล้ว จะไม่สามารถลงต่อได้อีกและมีการแจ้งเตือน พร้อมกับลบค่าที่เพิ่งกรอกลงไปเพื่อรอรับการกรอกใหม่อีกครั้งที่ถูกต้อง

ส่วนโค้ดก็ประมาณนี้ครับ
โค๊ด: [Select]
Private Sub Mycheck()
Dim IntCount As String
If Not IsNull(Me.dtDate) And Not IsNull(Me.cbresult) Then
Me.Dirty = False
IntCount = Nz(DLookup("CountResult", "QryCheckDate", "result ='" & cbresult & "' and Ondate = '" & CStr(Format(Forms!mainform!SubForm!dtDate, "DD/MM/YYYY")) & "'"), 0)

If cbresult = "RPP" And IntCount > 1 Then
MsgBox "วันนี้คุณไม่สามารถลงได้อีก!!!!", vbInformation, "ตรวจเช็ค"
Me.cbresult = Null
Me.cbresult.SetFocus

ElseIf cbresult = "PD" And IntCount > 1 Then
MsgBox "วันนี้คุณไม่สามารถลงได้อีก!!!!", vbInformation, "ตรวจเช็ค"
Me.cbresult = Null
Me.cbresult.SetFocus

ElseIf cbresult = "BRK" And IntCount > 1 Then
MsgBox "วันนี้คุณไม่สามารถลงได้อีก!!!!", vbInformation, "ตรวจเช็ค"
Me.cbresult = Null
Me.cbresult.SetFocus
End If
End If
End Sub

ส่วน Event ของ Combobox cbresult ผมใช้  Exit นะครับ เพราะจะสามารถตรวจสอบค่าที่กรอกลงไปได้แม่นยำกว่า Afterupdate ครับ

Private Sub cbresult_Exit(Cancel As Integer)
Mycheck
End Sub
« แก้ไขครั้งสุดท้าย: 07 ส.ค. 63 , 08:30:02 โดย PNR »
เรียนเพื่อนสมาชิกและอาจารย์ทุกท่าน
ผมไม่ใช่อาจารย์และไม่ใช่ผู้ที่แตกฉานใน Access นะครับ
แค่ผู้หนึ่งที่แชร์ความรู้เท่าที่มี ถ้าหากอาจารย์ทุกท่านเห็นว่ายังไม่ถูกต้อง
กรุณาโพสตอบกระทู้ส่วนเนื้อหาที่น่าจะถูกต้องกว่าให้ด้วยเพื่อเป็นวิทยาทาน
 

10 ส.ค. 63 , 09:35:42
ตอบกลับ #4

naekkhung

: ภายในวันไม่ให้กรอกข้อมูลซ้ำ
« ตอบกลับ #4 เมื่อ: 10 ส.ค. 63 , 09:35:42 »
Private Sub Mycheck()
Dim IntCount As String
If Not IsNull(Me.dtDate) And Not IsNull(Me.cbresult) Then
Me.Dirty = False
IntCount = Nz(DLookup("CountResult", "QryCheckDate", "result ='" & cbresult & "' and Ondate = '" & CStr(Format(Forms!mainform!SubForm!dtDate, "DD/MM/YYYY")) & "'"), 0)

If cbresult = "RPP" And IntCount > 1 Then
MsgBox "วันนี้คุณไม่สามารถลงได้อีก!!!!", vbInformation, "ตรวจเช็ค"
Me.cbresult = Null
Me.cbresult.SetFocus

ElseIf cbresult = "PD" And IntCount > 1 Then
MsgBox "วันนี้คุณไม่สามารถลงได้อีก!!!!", vbInformation, "ตรวจเช็ค"
Me.cbresult = Null
Me.cbresult.SetFocus

ElseIf cbresult = "BRK" And IntCount > 1 Then
MsgBox "วันนี้คุณไม่สามารถลงได้อีก!!!!", vbInformation, "ตรวจเช็ค"
Me.cbresult = Null
Me.cbresult.SetFocus
End If
End If
End Sub

ต้องไปใส่ Event ส่วนไหนหรอครับ


 

10 ส.ค. 63 , 09:59:28
ตอบกลับ #5

PNR

: ภายในวันไม่ให้กรอกข้อมูลซ้ำ
« ตอบกลับ #5 เมื่อ: 10 ส.ค. 63 , 09:59:28 »
Event Exit ของ combobox ครับ
จากตัวอย่าง combobox ชื่อ cbresult ครับของคุณชื่ออะไร ใส่ชื่อให้ตรงกัน
เช่น

Private Sub cbresult _Exit(Cancel As Integer)
Mycheck
End Sub
เรียนเพื่อนสมาชิกและอาจารย์ทุกท่าน
ผมไม่ใช่อาจารย์และไม่ใช่ผู้ที่แตกฉานใน Access นะครับ
แค่ผู้หนึ่งที่แชร์ความรู้เท่าที่มี ถ้าหากอาจารย์ทุกท่านเห็นว่ายังไม่ถูกต้อง
กรุณาโพสตอบกระทู้ส่วนเนื้อหาที่น่าจะถูกต้องกว่าให้ด้วยเพื่อเป็นวิทยาทาน
 
โพสต์นี้ได้รับคำขอบคุณจาก: naekkhung

10 ส.ค. 63 , 13:01:26
ตอบกลับ #6

naekkhung

: ภายในวันไม่ให้กรอกข้อมูลซ้ำ
« ตอบกลับ #6 เมื่อ: 10 ส.ค. 63 , 13:01:26 »
ผมทำได้แล้วครับ แต่ติดตรงที่ว่าถ้าเป็นลูกค้าเคสที่สองเงื่อนไขมันไม่ยอมทำงานไม่รู้ติดตรงไหน ผมแนบไฟล์มาด้วยครับ

 

11 ส.ค. 63 , 09:39:00
ตอบกลับ #7

PNR

: ภายในวันไม่ให้กรอกข้อมูลซ้ำ
« ตอบกลับ #7 เมื่อ: 11 ส.ค. 63 , 09:39:00 »
อ้างถึง
ติดตรงที่ว่าถ้าเป็นลูกค้าเคสที่สองเงื่อนไขมันไม่ยอมทำงานไม่รู้ติดตรงไหน

อ่อกรณีที่มีลูกค้าหลายๆคนด้วยก็ต้องนำ รหัสลูกค้า มาเช็คด้วย
แต่จากตารางของคุณ ไม่ได้กำหนดรหัสลูกค้าไว้เลย มีแค่การระบุชื่อ นามสกุลในฟอร์มเลยก็ลองดูตัวอย่างนี้นะครับ
« แก้ไขครั้งสุดท้าย: 11 ส.ค. 63 , 09:58:45 โดย PNR »
เรียนเพื่อนสมาชิกและอาจารย์ทุกท่าน
ผมไม่ใช่อาจารย์และไม่ใช่ผู้ที่แตกฉานใน Access นะครับ
แค่ผู้หนึ่งที่แชร์ความรู้เท่าที่มี ถ้าหากอาจารย์ทุกท่านเห็นว่ายังไม่ถูกต้อง
กรุณาโพสตอบกระทู้ส่วนเนื้อหาที่น่าจะถูกต้องกว่าให้ด้วยเพื่อเป็นวิทยาทาน
 


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