Lỗi Run-time error '2501'

  • Thread starter hoathanh815
  • Ngày gửi
H

hoathanh815

Thành viên thân thiết
12/12/06
123
2
18
Viet Nam
#1
Mình tạo 1 nút lệnh "Xoá" với cấu trúc như sau:
Private Sub CMDXOA_Click()
Dim DEM As Integer
DEM = DCount("*", "KEKHAI_THANG", "MADV=FORMS!DON_VI!MADV")
If DEM > 0 Then
If MsgBox("DA CO DU LIEU " & vbNewLine & "BAN CO MUON XOA ?", 36, "THONG BAO") = 6 Then
DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE * FROM KEKHAI_THANG WHERE MADV=FORMS!DON_VI!MADV"
DoCmd.RunCommand acCmddeleteRecord
DoCmd.SetWarnings True
End If
ElseIf DEM = 0 Then
If MsgBox("KHONG CO DU LIEU " & vbNewLine & "BAN CO MUON XOA ?", 36, "THONG BAO") = 6 Then
DoCmd.SetWarnings False
DoCmd.RunCommand acCmddeleteRecord
DoCmd.SetWarnings True
End If
End If
LSTDV.Requery
SANG_MO True
End Sub

Khi click nút xóa thì không xoá được, nó cứ báo lỗi Run-time error '2501' The RunComand action was canceled.
Vậy là sao, các bạn có thể giúp mình được không?
 
K

ketoanaccess

Thành viên sơ cấp
31/12/07
14
0
0
saigon
#2
Có lẽ dòng lệnh:
DoCmd.RunCommand acCmddeleteRecord
là thừa, nên bỏ đi, vì đã xóa bằng SQL rồi.

Nhóm lệnh

ElseIf DEM = 0 Then
If MsgBox("KHONG CO DU LIEU " & vbNewLine & "BAN CO MUON XOA ?", 36, "THONG BAO") = 6 Then
DoCmd.SetWarnings False
DoCmd.RunCommand acCmddeleteRecord
DoCmd.SetWarnings True
End If

có lẽ cũng là thừa vì trường hợp này tìm không thấy mẫu tin nào hết thì không có gì phải xử lý, hỏi có muốn xóa để làm gì?
 
H

hoathanh815

Thành viên thân thiết
12/12/06
123
2
18
Viet Nam
#3
Lỗi Run-time error '2501;

Mình đã bỏ dòng lệnh như bạn nói thì không báo gì nhưng nó cứ "trân" mình ra, chẳng có động thái gì hết. Cũng cảm ơn bạn có quan tâm đến câu hỏi của mình
 
K

ketoanaccess

Thành viên sơ cấp
31/12/07
14
0
0
saigon
#4
Nếu nó không báo gì thì có thể là nó đã xóa rồi, trường hợp này bấm nút lần nữa xem có thông báo không có dữ liệu hay không (nếu vẫn còn giữ ElseIf...) hoặc mở bảng gốc ra xem mẫu tin muốn xóa có còn không.
Nếu kiểm lại thấy mẫu tin vẫn còn, tức là chưa xóa, thì xem lại các tên gọi trong đường dẫn vô ô MADV có đúng không.

Tôi đã làm thử và thấy đúng. Nếu cần gởi mail tôi sẽ gởi lại thì dụ cụ thể.
 
H

hochoi1

Thành viên sơ cấp
17/12/05
8
1
0
38
kkk
#7
Bị sai dòng lệnh này:
1. DEM = DCount("*", "KEKHAI_THANG", "MADV=FORMS!DON_VI!MADV")

2. DoCmd.RunSQL "DELETE * FROM KEKHAI_THANG WHERE MADV=FORMS!DON_VI!MADV"

*Sửa lại đúng như sau:
1. DEM = DCount("thay vào đây tên trường cần", "KEKHAI_THANG", "MADV='" & FORMS!DON_VI!MADV & "'")
2. DoCmd.RunSQL "DELETE * FROM KEKHAI_THANG WHERE MADV='" & FORMS!DON_VI!MADV & "'"
+ chú ý: dấu nháy đơn nếu là dữ liệu kiểu Text, nếu dữ liệu kiểu Number thì không cần đặt giá trị tìm vào trong nháy đơn
 
Sửa lần cuối:

Thành viên trực tuyến

  • homeclassic.vn1
  • thuy-xinh
  • vuphac
  • daongocnam0603
  • dungpi
  • luuhaimien
  • huong238
  • banthogo
  • tamvu90ba
  • seogobranding1302
  • xediengiatot

Xem nhiều