กระทู้เก่าบอร์ด อ.สุภาพ ไชยา
393 14
URL.หัวข้อ /
URL
ขอความช่วยเหลือครับเรื่องการใช้ Dcount ครับ
ผมมีข้อมูล 3 field ที่สำคัญ A,B,C
ถ้าไม่ต้องการให้user ป้อนซ้ำ record อีกครั้ง จะใช้ Dcount ที่ไหน และอย่างไรดี ครับ
ขอความช่วยเหลือด่วนครับ
Field----A----------B-------------------C
ข้อมูล-----1-----------1--------------------2
ข้อมูล-----1-----------1--------------------2 ป้อนอีกไม่ได้ถ้าพบว่า 3 Field เหมือนRecord ที่มีอยู่
ถ้าไม่ต้องการให้user ป้อนซ้ำ record อีกครั้ง จะใช้ Dcount ที่ไหน และอย่างไรดี ครับ
ขอความช่วยเหลือด่วนครับ
Field----A----------B-------------------C
ข้อมูล-----1-----------1--------------------2
ข้อมูล-----1-----------1--------------------2 ป้อนอีกไม่ได้ถ้าพบว่า 3 Field เหมือนRecord ที่มีอยู่
14 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R01755
ใช้วิธีไปกำหนด primary key ให้กับทั้ง 3 field ที่หน้าจอ desing table กำหนด Field A,B,C เป็น primary key เมื่อกรอกข้อมูล หากข้อมูลซ้ำกันทั้ง 3 field โปรแกรมจะไม่รับค่าครับ
2 @R01756
ผมมี Field ที่เป็น Primary Key เป็น running Id อยู่แล้ว และผมกำหนดแล้วไม่ได้ครับเนื่องจาก 3 Field A,B,C ผมกำหนดเป็น Yes Duplicate Ok เนื่องจาก 3 Field เป็น Many ทำอย่างไรดีครับ ผมเคยเห็น อ.สุภาพ ใช้ Dcount กับการป้องกันห้องพักซ้ำกัน Concept ใช้ได้ แต่ของผมเป็น 3 Field จึงเกิด Error message
3 @R01757
ลองดูที่นี่ดูไหมครับ
http://www.thai-access.com/suphap.php?topic_id=508
4 @R01758
ขอบคุณครับคุณ sjs อันนี้ได้ครับ แต่ของผมต้องการ Detect 3 Field จึงจะบอกว่าซ้ำ ผมกำลังพยายามเอา concept ของ อ.มาปรับแก้อยู่ครับแต่ยังไม่ได้ ขอบคุณนะครับ
5 @R01759
Private Sub c_BeforeUpdate(Cancel As Integer)
If DCount("a", "b", "c", "tbltimestamp", "[a],[b],[c]= '" & Me.c & "'") = 1 Then
MsgBox "Cann't Add record'" & Me.c & "'not save", vbOKOnly, "Cancel"
DoCmd.CancelEvent
SendKeys "{Esc}", False
Exit Sub
End If
End Sub
6 @R01760
Private Sub c_BeforeUpdate(Cancel As Integer)
If DCount("a", "b", "c", "tbltimestamp", "[a],[b],[c]= '" & Me.c & "'") = 1 Then
MsgBox "Cann't Add record'" & Me.c & "'not save", vbOKOnly, "Cancel"
DoCmd.CancelEvent
SendKeys "{Esc}", False
Exit Sub
End If
End Sub
ยังไม่ผ่านเพราะอะไร รบกวนผู้มีความสามารถช่วยด้วยนะครับ ต้องการใช้งานด่วนครับ
7 @R01761
ให้ลองเปลี่ยนเป็น
Private Sub c_BeforeUpdate(Cancel As Integer)
If DCount("[a]", "tbltimestamp", "[a]='" & Me.a & "' And [b] = '" & Me.b & "' And [c]= '" & Me.c & "'") = 1 Then
MsgBox "Cann't Add record'" & Me.c & "'not save", vbOKOnly, "Cancel"
DoCmd.CancelEvent
SendKeys "{Esc}", False
Exit Sub
End If
End Sub
8 @R01762
อันนี้ได้แล้วครับ อ. ขอบคุณครับ
แต่ยังมีปัญหาว่า ถ้าuser Key ข้ามไปประมาณ 3 - 4 Record แล้ว กลับมา Key ใหม่มันไม่ Detect ทำอย่างไรดีครับ
9 @R01763
เนื่องจากตรงนี้จะใช้สำหรับการคีย์ข้อมูลใหม่เท่านั้น
สำหรับข้อมูลที่ได้บันทึกไว้แล้ว มันจะไม่ตรวจให้
10 @R01764
ถ้าต้องการให้ตรวจสอบข้อมูลใน Table ด้วยต้องใช้ Dlookup หรือเปล่าครับ อ.
11 @R01766
ทำอย่างไรจะให้ตรวจสอบข้อมูลใน table ด้วยละครับ อ. ช่วยด้วยนะครับ
12 @R01767
ลองใช้ Dcount แล้วตรงกำหนดเงื่อนไขก็ใส่ไปทั้ง 3 เงื่อนไขเลยครับ..
เสร็จแล้วก็ตรวจสอบดูว่า ถ้าได้จำนวน > 1 ก็ ให้ยกเลิกไม่สามารถรับข้อมูลได้ แต่ถ้า <=1 ก็สามารถรับข้อมูลเข้าไปได้ครับ
13 @R01769
ลองใช้
Private Sub c_BeforeUpdate(Cancel As Integer)
If DCount("[a]", "tbltimestamp", "[a]='" & Me.a & "' And [b] = '" & Me.b & "' And [c]= '" & Me.c & "'") > 1 Then
MsgBox "Cann't Add record'" & Me.c & "'not save", vbOKOnly, "Cancel"
'DoCmd.CancelEvent
SendKeys "{Esc}", False
Exit Sub
End If
End Sub
ผมลองแล้วใช้ Detect จาก table ได้เลย
14 @R01772
ขอบพระคุณทุกท่าน โดยเฉพาะ อ.สุภาพ อ.Badman และคุณ amn
ได้เรียบร้อยไม่โดน หน.เล่นงานแล้ว จะได้นอนหลับสบาย
Time: 0.1163s