Thủ Thuật Access
[Hỏi] Error function - Phiên bản có thể in

+- Thủ Thuật Access (http://thuthuataccess.com/forum)
+-- Diễn đàn: Access Cơ Bản (http://thuthuataccess.com/forum/forum-5.html)
+--- Diễn đàn: Forms (http://thuthuataccess.com/forum/forum-8.html)
+--- Chủ đề: [Hỏi] Error function (/thread-10720.html)



Error function - mrsiro - 09-10-18

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

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


RE: Error function - ongke0711 - 09-10-18

- 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

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

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

(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