Tham khảo tài liệu ''giáo trình phân tích nguyên lý ứng dụng những kỹ năng để xử lý lỗi bằng lệnh on error goto p1'', công nghệ thông tin, quản trị web phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
.c ? a / b Sẽ nhận thông báo lỗi: Vì b = 5.2 Bẫy lỗi Mục 5.1 trình bày kỹ để xử lý lỗi soạn thảo chương trình Các thao tác thực lúc xây dựng phần mềm (VBA IDE), người lập trình xử lý Khi phần mềm đóng gói để chuyển đến người dùng gặp lỗi, hiển thị hộp tthoại thông báo lỗi (Error Dialog) cho biết lý vắn tắt lỗi Sau bạn nhấn OK, chương trình ngừng hoạt động, bị Để xử lý lỗi tình này, có phương pháp bẫy lỗi mà đưa để tham khảo; hy vọng bạn chọn lựa tình phù hợp để sủ dụng phương pháp đảm bảo chương trình viết chạy theo mục đích Sử dụng lệnh On Error Resume Next Khi từ chỗ trở đi, chương trình gặp lỗi, bỏ qua (ignore) hồn tồn Điểm tiện chỗ giúp chương trình EXE ta tránh gặp lỗi khỏi đột ngột phân tích Nhưng bất lợi khách hàng cho hay họ gặp trường hợp lạ, không giải thích (vì lỗi bị bỏ qua mà khơng để ý), ta bí ln, không để gỡ lỗi Do đó, lúc gỡ lỗi ta khơng nên dùng nó, trước giao cho khách hàng bạn nên cân nhắc kỹ có nên sử dụng đoạn mã lệnh hay khơng Ví dụ sử dụng On Error Resume Next để bỏ qua lỗi: Trang 154 w k to bu y N O W ! PD h a n g e Vi e d o m o o c u -tr a c k XC lic N y bu to k lic C m w w w d o ® w w w Giáo trình phân tích ngun lý ứng dụng kỹ Giáo trình Microsoft Access 2000 Copyright Nguyễn Sơn Hải để xử lý lỗi lệnh On error goto F- er O W w C h a n g e Vi e ! XC er PD F- c u -tr a c k c ! O W N to k lic c u -tr a c k Function A_chia_B(a, b As Double) As Double On Error Resume Next A_chia_B = Null A_chia_B = a / b End Function Trong chương trình trên, b = 0, lệnh A_chia_B = a / b gặp phải lỗi Do có lời khai báo On Error Resume Next nên lệnh lỗi bỏ qua (không thực hiện) Tức giá trị hàm Null Sử dụng câu lệnh On Error Goto Khi thủ tục đặt câu lệnh này, gặp phải lỗi đó, VBA chuyển thẳng việc thực đến định Thông thường lệnh xử lý tính lỗi Sau ví dụ sử dụng phưưong pháp On Error Goto để bẫy lỗi: Function A_chia_B(a, b As Double) As Double On Error GoTo Loi A_chia_B = a / b Msgbox “ Ok! “ Loi: If Err.Number = 11 Then MsgBox "Lỗi chia cho !" End If End Function Trong chương trình trên, trường hợp b = câu lệnh A_chia_B = a / b gây lỗi Theo khai báo On Error Goto Loi ban đầu, VBA bỏ qua tất lệnh sau lệnh lỗi chuyển thẳng tới lệnh sau nhãn Loi: Ở lệnh kiểm tra lỗi Nếu Mã lỗi = 11 Ỉ kết luận thông báo lỗi tiếng Việt Lỗi chia cho 0! Phương pháp dùng phổ biến trình xây dựng để phát lỗi, phần mềm đóng gói gửi đến khách hàng Mỗi gặp lỗi thông báo nguyên nhân gây lỗi tiếng Việt (chẳng hạn) mà không ảnh hưởng đến hoạt động khác phần mềm Trang 155 d o o c m C m w o d o w w w w w C lic k to bu Copyright Nguyễn Sơn Hải w y N ® h a n g e Vi e bu y Giáo trình Microsoft Access 2000 XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c ! O W N Copyright Nguyễn Sơn Hải to k lic c u -tr a c k Trong phương pháp này, người lập trình nên khai thác tối đa đối tượng Err - đối tượng mang thông tin lỗi xảy ra, cụ thể: Hành động Kết Err.Description Mô tả tên lỗi Err.Number Đưa mã lỗi Err.Number Xoá bỏ giá trị đối tượng Err Một số ví dụ Phần trình bày số ví dụ sử dụng Form, số đối tượng điều khiển (Control), khai báo, cấu trúc lệnh kỹ thuật liên quan để giải số toán thực tế đơn giản Bài toán 1: Nhập vào số nguyên kiểm tra số chẵn hay số lẻ? Thiết kế form sau: Thiết lập thuộc tính cho đối tượng sau: Form Caption: Default view: Scroll bar: Record selector: Kiểm tra số chẵn - lẻ Single Form Neither No Trang 156 d o o c m C m w o d o w w w w w C lic k to bu Giáo trình Microsoft Access 2000 w y N y ® h a n g e Vi e bu XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c ! O W N Copyright Nguyễn Sơn Hải to k lic c u -tr a c k Navigation Buttons: No Diving line: No Ô nhập số cần kiểm tra Name: Text0 Nút Kiểm tra chẵn lẻ Name: cmdChanLe Caption: Kiểm tra chẵn lẻ Nút Đóng Name: cmdClose Caption: Đóng Và mã lệnh cho form sau: ' -'Lệnh cho nút Kiểm tra chẵn lẻ ' Private Sub cmdChanLe_Click() If Text0 Mod = Then MsgBox Text0 + " Là số chẵn !" Else MsgBox Text0 + " Là số lẻ !" End If End Sub ' -'Lệnh cho nút Đóng ' Private Sub cmdClose_Click() DoCmd.Close End Sub Bài tốn 2: Nhập vào số ngun tính USC BCS số Thiết kế form sau: Trang 157 d o o c m C m w o d o w w w w w C lic k to bu Giáo trình Microsoft Access 2000 w y N y ® h a n g e Vi e bu XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c ! O W N Copyright Nguyễn Sơn Hải to k lic c u -tr a c k Thiết lập thuộc tính cho đối tượng sau: Form Caption: Default view: Scroll bar: Record selector: Navigation Buttons: Diving line: Tìm USC BSC Single Form Neither No No No Ô nhập số cần kiểm tra Ô A: B: USC: BSC: Thuộc tính Name txtA txtB txtUSC txtBSC Nút Tính tốn Name: cmdTinhToan Caption: Tính tốn Nút Đóng Name: cmdClose Caption: Đóng Trang 158 d o o c m C m w o d o w w w w w C lic k to bu Giáo trình Microsoft Access 2000 w y N y ® h a n g e Vi e bu XC er O W F- w PD h a n g e Vi e ! XC er PD F- c u -tr a c k c ... định Thông thường lệnh xử lý tính lỗi Sau ví dụ sử dụng phưưong pháp On Error Goto để bẫy lỗi: Function A_chia_B(a, b As Double) As Double On Error GoTo Loi A_chia_B = a /... MsgBox "Lỗi chia cho !" End If End Function Trong chương trình trên, trường hợp b = câu lệnh A_chia_B = a / b gây lỗi Theo khai báo On Error Goto Loi ban đầu, VBA bỏ qua tất lệnh sau lệnh lỗi chuyển... Do có lời khai báo On Error Resume Next nên lệnh lỗi bỏ qua (không thực hiện) Tức giá trị hàm Null Sử dụng câu lệnh On Error Goto Khi thủ tục đặt câu lệnh này, gặp phải lỗi đó, VBA chuyển