Sửa dùm mình đoạn Code VB này với !

glasseggs

New Member
Hội viên mới
Ví dụ nhé khi mình đang nhập dở 1 bản ghi trên Form,hoặc bản ghi đó trùng dữ liệu thì khi mình tắt phần mềm đi sẽ xuất hiện thông báo sau :

loisave.jpg


Lỗi này có mã là : 2169
Và đoạn Code để bắt lỗi như sau, nhưng đoạn code đó không đúng vì nhấn OK hay Cancer nó cũng tắt phần mềm luôn :

strMsg = "Private Sub Form_Error(DataErr As Integer, Response As Integer)
Const Luu = 2169 ' Loi Khong The Luu Du Lieu
Dim strMsg As String
Select Case DataErr
Case Luu
Response = acDataErrContinue
If MsgBox("BAN KHÔNG THÊ LUU DU LIÊU VAO LÚC NÀY. CUSTOMER RELATION MANAGEMENT SYSTEM DÃ PHÁT HIÊN LÔI KHI LUU DU LIÊU.NÊU BAN DÓNG UNG DUNG NGAY BÂY GIO, DU LIÊU BAN VUA LÀM SE KHÔNG DUOC LUU. BAN CÓ CHAC CHAN MUÔN DONG UNG DUNG KHÔNG ?", vbOKCancel) = vbCancel Then
Cancel = True
End If
End Select
End Sub"

Và chỉ luôn hộ mình làm thế nào cho câu thông báo trong MsgBox xuống dòng như thế này nhé :

BAN KHÔNG THÊ LUU DU LIÊU VAO LÚC NÀY.
CUSTOMER RELATION MANAGEMENT SYSTEM DÃ PHÁT HIÊN LÔI KHI LUU DU LIÊU.
NÊU BAN DÓNG UNG DUNG NGAY BÂY GIO, DU LIÊU BAN VUA LÀM SE KHÔNG DUOC LUU. BAN CÓ CHAC CHAN MUÔN DONG UNG DUNG KHÔNG ?


Thanks mọi người !
 
Ðề: Sửa dùm mình đoạn Code VB này với !

Function ......()
On Error GoTo err_
.....
....

Exit Function (hoặc Exit Sub tùy bạn đang dùng hàm gì)
err_:
If err.Number = 2169 Then
MsgBox "BAN KHÔNG THÊ LUU DU LIÊU VAO LÚC NÀY." & Chr(13) & "CUSTOMER RELATION MANAGEMENT SYSTEM DÃ PHÁT HIÊN LÔI KHI LUU DU LIÊU." & Chr(13) & "NÊU BAN DÓNG UNG DUNG NGAY BÂY GIO, DU LIÊU BAN VUA LÀM SE KHÔNG DUOC LUU. BAN CÓ CHAC CHAN MUÔN DONG UNG DUNG KHÔNG ?", vbOKOnly
Else
MsgBox err.Number & "-" & err.Description, vbCritical
End If

End Function
 
Sửa lần cuối:
Ðề: Sửa dùm mình đoạn Code VB này với !

Function ......()
On Error GoTo err_
.....
....

Exit Function (hoặc Exit Sub tùy bạn đang dùng hàm gì)
err_:
If err.Number = 2169 Then
MsgBox "BAN KHÔNG THÊ LUU DU LIÊU VAO LÚC NÀY." & Chr(13) & "CUSTOMER RELATION MANAGEMENT SYSTEM DÃ PHÁT HIÊN LÔI KHI LUU DU LIÊU." & Chr(13) & "NÊU BAN DÓNG UNG DUNG NGAY BÂY GIO, DU LIÊU BAN VUA LÀM SE KHÔNG DUOC LUU. BAN CÓ CHAC CHAN MUÔN DONG UNG DUNG KHÔNG ?", vbOKOnly
Else
MsgBox err.Number & "-" & err.Description, vbCritical
End If

End Function

Bạn ơi lỗi này xảy ra khi nhấn Close tắt hoặc nhấn Alt- F4 nên không cần cái đoạn sau Else đâu.Vì nó chỉ có 1 lỗi đó thôi.Ma như đoạn code của bạn copy vào của mình thì phát sinh lỗi.Nó chỉ có 1 nút nhấn Ok,nhấn thì nó thoát phần mềm rồi còn đâu.Theo như câu thông báo trên thì phải có Yes/ No chứ .
Bạn sửa trên đoạn mã Change ....Case cho mình nhé.
 
Ðề: Sửa dùm mình đoạn Code VB này với !

Ví dụ nhé khi mình đang nhập dở 1 bản ghi trên Form,hoặc bản ghi đó trùng dữ liệu thì khi mình tắt phần mềm đi sẽ xuất hiện thông báo sau :

loisave.jpg


Lỗi này có mã là : 2169
Và đoạn Code để bắt lỗi như sau, nhưng đoạn code đó không đúng vì nhấn OK hay Cancer nó cũng tắt phần mềm luôn :

strMsg = "Private Sub Form_Error(DataErr As Integer, Response As Integer)
Const Luu = 2169 ' Loi Khong The Luu Du Lieu
Dim strMsg As String
Select Case DataErr
Case Luu
Response = acDataErrContinue
If MsgBox("BAN KHÔNG THÊ LUU DU LIÊU VAO LÚC NÀY. CUSTOMER RELATION MANAGEMENT SYSTEM DÃ PHÁT HIÊN LÔI KHI LUU DU LIÊU.NÊU BAN DÓNG UNG DUNG NGAY BÂY GIO, DU LIÊU BAN VUA LÀM SE KHÔNG DUOC LUU. BAN CÓ CHAC CHAN MUÔN DONG UNG DUNG KHÔNG ?", vbOKCancel) = vbCancel Then
Cancel = True
End If
End Select
End Sub"

Và chỉ luôn hộ mình làm thế nào cho câu thông báo trong MsgBox xuống dòng như thế này nhé :

BAN KHÔNG THÊ LUU DU LIÊU VAO LÚC NÀY.
CUSTOMER RELATION MANAGEMENT SYSTEM DÃ PHÁT HIÊN LÔI KHI LUU DU LIÊU.
NÊU BAN DÓNG UNG DUNG NGAY BÂY GIO, DU LIÊU BAN VUA LÀM SE KHÔNG DUOC LUU. BAN CÓ CHAC CHAN MUÔN DONG UNG DUNG KHÔNG ?


Thanks mọi người !

Trước tiên cần lưu ý, Form_Error không có parameter Cancel nên Cancel = True là không đúng. Access sẽ báo lỗi dùng biến chưa khai báo.

Khả năng theo đoạn code này bạn muốn rằng khi người sử dụng nhấn nút Close mà việc nhập liệu có lỗi nên không thể update vào table, thì xuất hiện thông báo. Nếu chọn Cancel thì sẽ hủy việc đóng form. Còn không thì sẽ không lưu thay đổi và đóng form.

Nếu đúng như thế thì cách bạn viết chưa đúng.

Bạn nên tạo một biến dùng chung cho module (nghĩa là khai báo ở vùng Declaration của Form Module), ví dụ Dim hasError As Boolean chẳng hạn

Cái sự kiện bạn bắt bao gồm 2 cái:

1. là Form_Unload: sự kiện này xảy ra trước Close. Do vậy nếu Cancel=True ở đây đồng nghĩa với việc hủy Close.

Private Sub Form_Unload(Cancel As Integer)
If hasError Then
If MsgBox("Van muon dong lai?", vbYesNo) = vbNo Then
Cancel = True
Else
DoCmd.RunCommand acCmdUndo
End If
End If
End Sub

2. là Form_Error

Private Sub Form_Error(DataErr As Integer, Response As Integer)
Respponse = acDataErrContinue
hasError = True
Select Case DataErr
Case 2169
MsgBox "Co loi khi luu du lieu."
Case Else
MsgBox "Err No." & DataErr & vbCrLf & "Err Mess: " & Error(DataErr)
End Select
 
Ðề: Sửa dùm mình đoạn Code VB này với !

Bạn Phatnq2002 ơi.
Hôm nay mình mới có thể thử đoạn Code của bạn ,và kết quả là không được.
1.Thứ nhất ở sự kiện 1 :
Đoạn code này không có tác dụng gì ở nút Yes/No,vì nhấn yes thì nó undo thật nhưng không đóng phần mềm,nhấn No thì chả có gì xảy ra.Và kết quả là câu thông báo xác nhận bằng tiếng Anh vẫn hiển thị .Và thậm chí là phát sinh thêm lỗi như hình ảnh em up sau đây :
Nếu trùng dữ liệu thì nó lỗi sau :
loidongungdung.jpg


Nếu có bản ghi mình không cho để Null mà để Null thì nó lỗi sau :
Như trong hình là tên DN chưa nhập
loidongungdungkhichuanh.png


2.Thứ 2 :
Em nghĩ ở sự kiện Form Error không cần nữa vì khi dữ liệu bị lỗi ở đâu em đã bắt lỗi thông báo rồi,nên cho thêm cái này hơi thừa.Nếu như em làm code như trên thì khi lỗi sẽ xuất hiện đến 4 câu thông báo lỗi liền.Lỗi thứ 1 như hình,lỗi thứ 2 thiếu tên doanh nghiệp,lỗi thứ 3 thông báo tiếng Anh của phần mềm khi đóng ứng dụng,và thứ 4 là thông báo từ đoạn code Form_Unload.
 

CẨM NANG KẾ TOÁN TRƯỞNG


Liên hệ: 090.6969.247

KÊNH YOUTUBE DKT

Cách làm file Excel quản lý lãi vay

Đăng ký kênh nhé cả nhà

SÁCH QUYẾT TOÁN THUẾ


Liên hệ: 090.6969.247

Top