Lỗi Run-time error '2501'

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

hoathanh815

Trung cấp
12/12/06
123
2
18
Viet Nam
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?
 
Khóa học Quản trị dòng tiền
K

ketoanaccess

Guest
31/12/07
14
0
0
saigon
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

Trung cấp
12/12/06
123
2
18
Viet Nam
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

Guest
31/12/07
14
0
0
saigon
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

Guest
17/12/05
8
1
0
44
kkk
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:

Xem nhiều

Webketoan Zalo OA