HoangManh > 02-05-17, 07:29 AM
tranthanhan1962 > 02-05-17, 09:28 AM
HoangManh > 02-05-17, 09:55 AM
(02-05-17, 09:28 AM)tranthanhan1962 Đã viết: warning! OK bạn tạo một textbox có giá trị defaul value =0. Kèm với button update là lệnh textbox.Value = textbox.Value +1. Đặt If trường hợp textbox.Value = 0 thì sửa, Nếu textbox.Value > 0 thì bật cảnh báo. Cách này không hay bằng tạo bẩy khi update 1 control trên record thì khóa trỏ chuột trên dòng và buột phải bấm nút lưu trước khi làm chuyện khác (cũng tạo textbox làm tham số) hoặc mỗi lần update bất kỳ control nào cũng sẽ xử lý lệnh lưu (cách này khỏi phải tạo nút lưu nhưng tốn thời gian)
tranthanhan1962 > 02-05-17, 11:11 AM
Private Sub Form_Error(DataErr As Integer, Response As Integer)
Select Case DataErr
Case 2113
MsgBox "Only numbers are acceptable in this box", vbCritical, "Call 1-800-123-4567"
Response = acDataErrContinue
Case 2237
MsgBox "You can only choose from the dropdown box"
Response = acDataErrContinue
Case 3022
MsgBox "You entered a value that exists already in another record"
Response = acDataErrContinue
SSN.Value = SSN.OldValue
Case 3314
MsgBox "The DOH is required, so you cannot leave this field empty"
Response = acDataErrContinue
Case Else
Response = acDataErrDisplay
End Select
ActiveControl.Undo
End Sub
HoangManh > 02-05-17, 12:04 PM
(02-05-17, 11:11 AM)tranthanhan1962 Đã viết: À vậy là tắt warning chứ không phải là bắt. Không phải lúc nào cũng có thể bỏ được warning hệ thống của access đâu bạn. Nếu là warning của query/SQL thì có thể vào option bỏ dấu check của action query. Ngoài ra đối với những bẫy lỗi không bỏ được cảnh báo có thể xử lý chuyển thông báo tiếng anh sang tiếng việt để ứng dụng có thể Việt hóa hoàn chỉnh.
Đây là ví dụ của bẩy lỗi: Số hiệu của lỗi có thể tìm thấy trong help của warning.
Mã:Private Sub Form_Error(DataErr As Integer, Response As Integer)
Select Case DataErr
Case 2113
MsgBox "Only numbers are acceptable in this box", vbCritical, "Call 1-800-123-4567"
Response = acDataErrContinue
Case 2237
MsgBox "You can only choose from the dropdown box"
Response = acDataErrContinue
Case 3022
MsgBox "You entered a value that exists already in another record"
Response = acDataErrContinue
SSN.Value = SSN.OldValue
Case 3314
MsgBox "The DOH is required, so you cannot leave this field empty"
Response = acDataErrContinue
Case Else
Response = acDataErrDisplay
End Select
ActiveControl.Undo
End Sub
tranthanhan1962 > 02-05-17, 12:57 PM
(02-05-17, 12:04 PM)HoangManh Đã viết:OK! đó là thủ tục quản lý lỗi mà! Ở đây khi bạn xử lý một hành động (event) thì giải quyết thủ tục sub.(02-05-17, 11:11 AM)tranthanhan1962 Đã viết: À vậy là tắt warning chứ không phải là bắt. Không phải lúc nào cũng có thể bỏ được warning hệ thống của access đâu bạn. Nếu là warning của query/SQL thì có thể vào option bỏ dấu check của action query. Ngoài ra đối với những bẫy lỗi không bỏ được cảnh báo có thể xử lý chuyển thông báo tiếng anh sang tiếng việt để ứng dụng có thể Việt hóa hoàn chỉnh.
Đây là ví dụ của bẩy lỗi: Số hiệu của lỗi có thể tìm thấy trong help của warning.
Mã:Private Sub Form_Error(DataErr As Integer, Response As Integer)
Select Case DataErr
Case 2113
MsgBox "Only numbers are acceptable in this box", vbCritical, "Call 1-800-123-4567"
Response = acDataErrContinue
Case 2237
MsgBox "You can only choose from the dropdown box"
Response = acDataErrContinue
Case 3022
MsgBox "You entered a value that exists already in another record"
Response = acDataErrContinue
SSN.Value = SSN.OldValue
Case 3314
MsgBox "The DOH is required, so you cannot leave this field empty"
Response = acDataErrContinue
Case Else
Response = acDataErrDisplay
End Select
ActiveControl.Undo
End Sub
Em xin lỗi. Nhưng anh có thể chỉ rõ hơn khi trong một fution mình muốn gọi thử tục bắt lỗi thì chỉ càn call From erro thôi ạ
HoangManh > 02-05-17, 01:31 PM
(02-05-17, 12:57 PM)tranthanhan1962 Đã viết:(02-05-17, 12:04 PM)HoangManh Đã viết:OK! đó là thủ tục quản lý lỗi mà! Ở đây khi bạn xử lý một hành động (event) thì giải quyết thủ tục sub.(02-05-17, 11:11 AM)tranthanhan1962 Đã viết: À vậy là tắt warning chứ không phải là bắt. Không phải lúc nào cũng có thể bỏ được warning hệ thống của access đâu bạn. Nếu là warning của query/SQL thì có thể vào option bỏ dấu check của action query. Ngoài ra đối với những bẫy lỗi không bỏ được cảnh báo có thể xử lý chuyển thông báo tiếng anh sang tiếng việt để ứng dụng có thể Việt hóa hoàn chỉnh.
Đây là ví dụ của bẩy lỗi: Số hiệu của lỗi có thể tìm thấy trong help của warning.
Mã:Private Sub Form_Error(DataErr As Integer, Response As Integer)
Select Case DataErr
Case 2113
MsgBox "Only numbers are acceptable in this box", vbCritical, "Call 1-800-123-4567"
Response = acDataErrContinue
Case 2237
MsgBox "You can only choose from the dropdown box"
Response = acDataErrContinue
Case 3022
MsgBox "You entered a value that exists already in another record"
Response = acDataErrContinue
SSN.Value = SSN.OldValue
Case 3314
MsgBox "The DOH is required, so you cannot leave this field empty"
Response = acDataErrContinue
Case Else
Response = acDataErrDisplay
End Select
ActiveControl.Undo
End Sub
Em xin lỗi. Nhưng anh có thể chỉ rõ hơn khi trong một fution mình muốn gọi thử tục bắt lỗi thì chỉ càn call From erro thôi ạ
Thủ tục (sub) gồm một tập các dòng lệnh dùng để thực hiện một tác vụ cụ thể. Thủ tục không trả về giá trị nào mà dùng để thực hiện một hoặc nhiều yêu cầu thực thi nào đó cho người xử dụng.
Hàm (function) gồm một tập các dòng lệnh dùng để thực hiện một tác vụ cụ thể nào đó và luôn luôn trả về một giá trị xác định.
Tất nhiên trong VBA không có một yêu cầu rạch ròi như thế. Có thể dùng hàm gọi thủ tục hoặc dùng thủ tục để gọi hàm. Sự linh động phối hợp giữa các hàm và thủ tục tạo nên sự thiên biến vạn hóa cho lập trình gia.
Ví dụ:
Trong thủ tục update một texbox bạn có thể dùng hàm để thay đổi giá trị của một textbox khác (hàm đó có thể là của access hoặc bạn tự xây dựng) hoặc trong một hàm khi thực thi bạn tạo bẫy lỗi để thực hiện một even nào đó (ví dụ khi giá trị hàm là một số âm thì sẽ gọi thủ tục ẩn nút clock form chẳn hạn)
tranthanhan1962 > 02-05-17, 03:02 PM