Chào mừng đến với Diễn đàn Dân Kế Toán - Kế toán tổng hợp thực tế.
Kết quả 1 đến 5 của 5
  1. #1
    Ngày tham gia
    Aug 2015
    Bài viết
    0

    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 :



    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 !

  2. #2
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: 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

  3. #3
    Ngày tham gia
    Nov 2015
    Bài viết
    3
    Ðề: Sửa dùm mình đoạn Code VB này với !




    Trích dẫn Gửi bởi khanh1202
    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é.

  4. #4
    Ngày tham gia
    Apr 2016
    Bài viết
    10
    Ðề: Sửa dùm mình đoạn Code VB này với !




    Trích dẫn Gửi bởi glasseggs
    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 :



    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

  5. #5
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: 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 :


    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


    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.

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •