ตรวจข้อมูลซ้ำแล้ว Run-time error 3061
กระทู้เก่าบอร์ด อ.Yeadram

 1,408   8
URL.หัวข้อ / URL
ตรวจข้อมูลซ้ำแล้ว Run-time error 3061

ผมใช้ Access 2007

ตรวจข้อมูลซ้ำแล้ว แล้ว error แบบนี้ครับ

Run-time error 3061
พารามิเตอร์น้อยเกินไป ต้องการ 1


Table
- Tlogin ฟิลด์ Tuser

Code ในช่องพิมพ์

Private Sub Tuser_AfterUpdate()
          Dim rst As DAO.Recordset
          Set rst = CurrentDb.OpenRecordset("SELECT Tuser.Tuser FROM Tlogin")
          On Error GoTo errl:
Do Until rst.EOF
               If rst!doc_name = Me.Tuser Then
                                MsgBox ("ข้อมูลมีในระบบแล้ว")
                               Exit Sub
               End If
              rst.MoveNext
            Loop
                     rst.Close
   Set rst = Nothing
errl:    Exit Sub
End Sub


รบกวนท่านด้วยครับ

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

1 @R19972
แก้ไข
Set rst = CurrentDb.OpenRecordset("SELECT Tuser.Tuser FROM Tlogin")

เป็น
Set rst = CurrentDb.OpenRecordset("SELECT Tlogin.Tuser FROM Tlogin")

2 @R19973
ขอบคุณครับ ลองแก้แล้วครับผม แต่พอ enter มันก็ข้ามไปเลยครับ ทั้งๆที่ชื่อซ้ำครับผม
3 @R19974
งั้นก็น่าจะผิดตรงเงื่อนไข If rst!doc_name = Me.Tuser Then
doc_name คืออะไร เดาว่าต้องเป็น rst!Tuser

จริงๆ ถ้าจะตรวจสอบแบบนี้ใช้แค่ฟังก์ชั่น DLookup หรือ DCount ก็น่าจะได้แล้วครับ ประมาณนี้ก็พอ

    If DCount("Tuser", "Tlogin", "Tuser = '" & Me.Tuser & "'") > 0 Then
        MsgBox "ข้อมูลซ้ำ"
        Cancel = True
    End If

ปรับใช้ดูครับ
4 @R19976
อันนี้ใช้ได้ครับผม ขอบคุณท่านมากๆครับ
5 @R19977
ลืมถามครับ คือมันขึ้นมาเตือนจริงครับ แต่ถ้ากดตกลงมันก็ข้ามไปเลยครับ ไปกรอกช่องต่อไปได้ มันก็เก็บค่าซ้ำที่เตือนไปด้วย ทำยังไงไม่ให้มันข้ามได้ครับ ให้ลบข้อมูลซ้ำออกไปก่อนครับ
6 @R19979
เปลี่ยนจากเหตูการณ์ After Update เป็น Before Update แทน แล้วเขียนประมาณนี้ครับ

'Private Sub aName_BeforeUpdate(Cancel As Integer)
    If DCount("Tuser", "Tlogin", "Tuser = '" & Me.Tuser & "'") > 0 Then
        MsgBox "ข้อมูลซ้ำ"
        Cancel = True
        Me.Tuser.Undo
    End If
'End Sub
7 @R19985
ขอบคุณท่าน TTT มากๆเลยครับ โค๊ดสั้นกว่าเดิมแต่ใช้งานได้เลยครับผม
8 @R20002
ผมขอรบกวนอีกนิดครับ คือว่าจากโค๊ดนี้

'Private Sub aName_BeforeUpdate(Cancel As Integer)
    If DCount("Tuser", "Tlogin", "Tuser = '" & Me.Tuser & "'") > 0 Then
        MsgBox "ข้อมูลซ้ำ"
        Cancel = True
        Me.Tuser.Undo
    End If
'End Sub


ผมเอาไปใช้อีกฐานข้อมูลนึงตั้งชื่อเทเบิลใหม่ฟิลด์ใหม่ ผมงงว่าตรงไหนคือชื่อ เทเบิล ชื่อฟิลด์ และชื่อช่องที่ใส่ข้อมูลครับ

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