-
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)
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