กระทู้เก่าบอร์ด อ.Yeadram
1,481 8
URL.หัวข้อ /
URL
ตรวจข้อมูลซ้ำแล้ว Run-time error 3061
ผมใช้ Access 2007
ตรวจข้อมูลซ้ำแล้ว แล้ว error แบบนี้ครับ
Table
- Tlogin ฟิลด์ Tuser
Code ในช่องพิมพ์
รบกวนท่านด้วยครับ
ตรวจข้อมูลซ้ำแล้ว แล้ว 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
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
ปรับใช้ดูครับ
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
'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
ผมเอาไปใช้อีกฐานข้อมูลนึงตั้งชื่อเทเบิลใหม่ฟิลด์ใหม่ ผมงงว่าตรงไหนคือชื่อ เทเบิล ชื่อฟิลด์ และชื่อช่องที่ใส่ข้อมูลครับ
รบกวนด้วยครับผม
Time: 0.4757s
Set rst = CurrentDb.OpenRecordset("SELECT Tuser.Tuser FROM Tlogin")
เป็น
Set rst = CurrentDb.OpenRecordset("SELECT Tlogin.Tuser FROM Tlogin")