ขอความช่วยเหลือครับเรื่องการใช้ Dcount ครับ
กระทู้เก่าบอร์ด อ.สุภาพ ไชยา

 334   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 ที่มีอยู่ 
 

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 ได้เรียบร้อยไม่โดน หน.เล่นงานแล้ว จะได้นอนหลับสบาย
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.0551s