• Error function
  • Error function

    mrsiro > 09-10-18, 12:05 PM

    Chào mọi người, mình muốn hỏi làm thế nào để khi gặp 1 err number mà mình chỉ định thì bỏ qua. Ví dụ:

    Mã:
    on error goto err

    Thoat:
    Exit function
    Err:
      If err = 100 then
        tiếp tục làm việc ko hiển thị thông báo lổi.
      Else
        MsgBox "Tên Function:" & Err.Number & vbNewLine & Err.Description
        Resume thoat
      end if


    Vậy ở cái đoạn tiếp tục làm việc thì viết gì vô đó để bỏ qua khi gặp lỗi có number là 100.
  • RE: Error function

    duynamvnn1208 > 09-10-18, 02:44 PM

    Thoát lỗi có thể sử dụng On Error GoTo 0 nhé bạn
  • RE: Error function

    ongke0711 > 09-10-18, 03:15 PM

    - Thường thì nên dùng Select Case Err.Number để bẫy nhiều lỗi tốt hơn dùng If.
    - Để xử lý tiếp đoan code kế tiếp khi gặp lỗi thì dùng: Resume Next

    Vd: 

    On Error Goto ERR_HANDLER
    ...
    Code.. 
    ...

    ERR_HANDLER_EXIT:
           Exit Sub

    ERR_HANDLER:
       Select Case Err.Number
           Case 100
                 Resume Next
           Case 3021   'Trùng mã
                 Msgbox "Nhập trùng mã."
                 Code xử lý
                 Exit Sub
           Case ....
                 .......
           Case Else
                 MsgBox "Error " & Err.Number & vbCr & _
                    " (" & Err.Description & ") phat sinh trong thu tuc "Luu"."
                Err.Clear
                Resume ERR_HANDLER_EXIT
       End Select
  • RE: Error function

    tranthanhan1962 > 09-10-18, 08:17 PM

    Thực ra có rất nhiều lỗi không thể lường trước. Nếu không qua tâm đến các mã lỗi của access có thể dùng một code đơn giản với mã lỗi tào lao cũng được để thực hiện việc gặp lỗi bỏ qua (khó quá bỏ qua  018 )
    Mã:
    On Error goto Biloi
    các lệnh thực hiện công việc
    Biloi:
  • RE: Error function

    mrsiro > 10-10-18, 07:21 PM

    Cho mình hỏi bắt lỗi trong phần err hay hơn hay bắt lỗi trong đoạn code chính hay hơn.
    Ví dụ trong case 3021, thì bắt lỗi theo kiểu trong đoạn code chính Dcount ("manv")>0 chằng hạn, hay nên bắt lỗi ở phần Err.
  • RE: Error function

    ongke0711 > 10-10-18, 11:26 PM

    (10-10-18, 07:21 PM)mrsiro Đã viết: Cho mình hỏi bắt lỗi trong phần err hay hơn hay bắt lỗi trong đoạn code chính hay hơn.
    Ví dụ trong case 3021, thì bắt lỗi theo kiểu trong đoạn code chính Dcount ("manv")>0 chằng hạn, hay nên bắt lỗi ở phần Err.

    Bẫy lỗi có nhiều kiểu:
    - Bẫy lỗi bằng cách viết code để làm sao cái lỗi đó không phát sinh nữa.
    - Có nhưng trường hợp code để xử lý lỗi nằm luôn trong phần ErrHandler.
    - Nhưng lỗi không thể khắc phục bằng code thì mới dùng tới bẫy trong On Error...

    Trường hợp lỗi 3021: "No current Record" như bạn đề cập thì phải khắc phục ngay trong đoạn code phát sinh lỗi đó luôn chứ không dùng ErrHandler.  
    Vd: các hàm DCount, DLookup...nếu không tìm thấy record nào thì sẽ trả về giá trị Null -> khi đó sẽ phát sinh nhiều lỗi như: Invalid Use of Null,...Để bẫy cái lỗi này ban có thể dùng: 
         If Nz(Dcount(....),0)= 0 Then
          Msgbox "Không có dữ liệu"
          Exit Sub
       Else
           'Code xử lý      
       End If