Để "tạ lỗi" với mọi người, kể từ hôm nay tôi sẽ post lên một loạt bài về cách điều khiển các sự kiện xảy ra khi thoa tác trên form hoặc khi thi hành một report.
Sự kiện là gì?
Sự kiện (event) là một hành động xác định xảy ra trên hoặc với một đối tượng nào đó. MS Access có thể đáp lại nhiều sự kiện: nhấn chuột, thay đổi dữ liệu, mở hoặc đóng form, ... Sự kiện thường là kết quả tạo ra bởi một hành động của người sử dụng.
Thủ tục là gì?
Thủ tục (procedure) là một đơn vị code của VB. Một thủ tục bao gồm một dãy các lệnh (statement) hoặc các phương thức (method) để thực thi một hành động hoặc tính toán một giá trị.
Thủ tục sự kiện là gì?
Thủ tục sự kiện (event procedure) là một thủ tục tự động thực thi để đáp lại một sự kiện được khởi xướng từ một hành động của người dùng hoặc từ code của chương trình.
VD: Thủ tục sự kiện sau đây sẽ thực thi một lệnh mở câu thông báo chào khi form được mở ra:
Private Sub Form_Load()
MsgBox "Xin chào các bạn."
End Sub
MỘT SỐ SỰ KIỆN THƯỜNG GẶP VÀ CÁCH ĐIỀU KHIỂN SỰ KIỆN
Các sự kiện xảy ra với đối tượng Form:
1. Sự kiện Open:
Sự kiện xảy ra khi form được mở, nhưng trước khi record đầu tiên được hiển thị.
(Ghi chú: ở đối tượng Report cũng có sự kiện Open, trong report sự kện Open xảy ra trước khi report được preview hoặc được in)
Từ khi gọi form cho đến khi form xuất hiện lần đầu trên màn hình, một loạt các sự kiện xảy ra, trong đó sự kiện Open là sự kiện được xảy ra đầu tiên. Các sự kiện này và thời điểm xảy ra của nó được thể hiện bằng chuỗi sau:
Open --> Load --> Resize --> Activate --> Current
Thuộc tính gắn với sự kiện Open có tên là OnOpen. (Các bạn lưu ý: với những thuộc tính bắt đầu bằng On có nghĩa là sự kiện đó đang diễn tiến,Before là trước khi sự kiện xảy ra, After là sau khi sự kiện xảy ra).
Thủ tục sự kiện gắn với sự kiện này là Form_Open. Sự kiện có một tham số có tên là Cancel kiểu Integer (thực chất nó chỉ nhận hai giá trị True và False). Tham số này các bạn có thể định lại giá trị cho nó.
Nếu định là True, sự kiện sẽ bị hoãn, nghĩa là sự kiện sẽ không hoàn tất, nhưng không xảy ra lỗi. Mặc nhiên là False.
VD: Bạn muốn rằng khi form A mở ra thì form B sẽ mở ra nếu người sử dụng đồng ý, bạn có thể code cho thủ tục sự kiện như sau:
Private Sub Form_Open(Cancel As Integer)
If MsgBox("Ban co muon form B mo ra dong th oi luon khong?", vbYesNo) = vbYes Then
DoCmd.OpenForm "form B"
Else
Cancel = True
End If
End Sub
Ghi chú: Bất kỳ một thủ tục sự kiện nào nó thông số là Cancel, thì sự kiện tương ứng đều có thể cho ngưng không cho hoàn tất. Trong trường hợp bạn sử dụng một macro hoặc một phương thức của DoCmd thì nếu hoãn một sự kiện, sẽ có một error trả về. Để tránh xuất hiện lỗi thì nế dùng macro, bạn có thể đặt trước macro đó một macro SetWarnings và gán cho thuộc tính WarningOn là No, dùng DoCmd trong code thì trước đó bạn đặt câu On Error Resume Next.
Còn tiếp ...
CÁC KHÁI NIỆM
Sự kiện là gì?
Sự kiện (event) là một hành động xác định xảy ra trên hoặc với một đối tượng nào đó. MS Access có thể đáp lại nhiều sự kiện: nhấn chuột, thay đổi dữ liệu, mở hoặc đóng form, ... Sự kiện thường là kết quả tạo ra bởi một hành động của người sử dụng.
Thủ tục là gì?
Thủ tục (procedure) là một đơn vị code của VB. Một thủ tục bao gồm một dãy các lệnh (statement) hoặc các phương thức (method) để thực thi một hành động hoặc tính toán một giá trị.
Thủ tục sự kiện là gì?
Thủ tục sự kiện (event procedure) là một thủ tục tự động thực thi để đáp lại một sự kiện được khởi xướng từ một hành động của người dùng hoặc từ code của chương trình.
VD: Thủ tục sự kiện sau đây sẽ thực thi một lệnh mở câu thông báo chào khi form được mở ra:
Private Sub Form_Load()
MsgBox "Xin chào các bạn."
End Sub
MỘT SỐ SỰ KIỆN THƯỜNG GẶP VÀ CÁCH ĐIỀU KHIỂN SỰ KIỆN
Các sự kiện xảy ra với đối tượng Form:
1. Sự kiện Open:
Sự kiện xảy ra khi form được mở, nhưng trước khi record đầu tiên được hiển thị.
(Ghi chú: ở đối tượng Report cũng có sự kiện Open, trong report sự kện Open xảy ra trước khi report được preview hoặc được in)
Từ khi gọi form cho đến khi form xuất hiện lần đầu trên màn hình, một loạt các sự kiện xảy ra, trong đó sự kiện Open là sự kiện được xảy ra đầu tiên. Các sự kiện này và thời điểm xảy ra của nó được thể hiện bằng chuỗi sau:
Open --> Load --> Resize --> Activate --> Current
Thuộc tính gắn với sự kiện Open có tên là OnOpen. (Các bạn lưu ý: với những thuộc tính bắt đầu bằng On có nghĩa là sự kiện đó đang diễn tiến,Before là trước khi sự kiện xảy ra, After là sau khi sự kiện xảy ra).
Thủ tục sự kiện gắn với sự kiện này là Form_Open. Sự kiện có một tham số có tên là Cancel kiểu Integer (thực chất nó chỉ nhận hai giá trị True và False). Tham số này các bạn có thể định lại giá trị cho nó.
Nếu định là True, sự kiện sẽ bị hoãn, nghĩa là sự kiện sẽ không hoàn tất, nhưng không xảy ra lỗi. Mặc nhiên là False.
VD: Bạn muốn rằng khi form A mở ra thì form B sẽ mở ra nếu người sử dụng đồng ý, bạn có thể code cho thủ tục sự kiện như sau:
Private Sub Form_Open(Cancel As Integer)
If MsgBox("Ban co muon form B mo ra dong th oi luon khong?", vbYesNo) = vbYes Then
DoCmd.OpenForm "form B"
Else
Cancel = True
End If
End Sub
Ghi chú: Bất kỳ một thủ tục sự kiện nào nó thông số là Cancel, thì sự kiện tương ứng đều có thể cho ngưng không cho hoàn tất. Trong trường hợp bạn sử dụng một macro hoặc một phương thức của DoCmd thì nếu hoãn một sự kiện, sẽ có một error trả về. Để tránh xuất hiện lỗi thì nế dùng macro, bạn có thể đặt trước macro đó một macro SetWarnings và gán cho thuộc tính WarningOn là No, dùng DoCmd trong code thì trước đó bạn đặt câu On Error Resume Next.
Còn tiếp ...
Sửa lần cuối: