Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (6.22 MB, 240 trang )
Microsoft Access
Load
Form
Open
Form
Report
Resize
Form
Unload
Form
Khi một mẫu biểu được mở và những
mẩu tin được hiển thị trong mẫu biểu.
Sự kiện này xảy ra trước sự kiện
Current nhưng theo sau sự kiện Open
Khi mở một mẫu biểu hoặc báo biểu,
nhưng trước khi hiển thị mẫu tin đầu
tiên
Khi cở lớn của mẫu biểu thay đổi hoặc
khi mở mẫu biểu lần đầu tiên
Khi đóng mẫu biểu và những mẫu tin
của nó không được nạp vào mẫu biểu,
nhưng trước khi mẫu biểu bị loại khỏi
màn hình
Không
Có
Không
Có
14.4.2 Sự kiện về Focus
Sự kiện
Activate
Xảy ra khi
Khi mẫu biểu hay báo biểu trở thành một
cửa sổ hoạt động
Deactivate Khi đóng mẫu biểu hay báo biểu, hoặc khi
một cửa sổ của MS Access trở thành không
hoạt động, nhưng truớc khi một cửa sổ khác
của MS Access trở thành hoạt động.
Enter
Trước khi một ô điều khiển nhận focus,
hoặc từ một ô điều khiển khác trong cùng
mẫu biểu chuyển sang hoặc khi mở mẫu
biểu.
Exit
Trước khi ô điều khiển mất focus và dời
sang một ô điều khiển khác trong cùng mẫu
biểu.
Sự kiện này xảy ra trước sự kiện LostFocus.
GotFocus Khi một ô điều khiển hoặc một mẫu biểu
không có ô điều khiển hoạt động hay cho
phép chọn nào nhận được Focus.
Mẫu biểu chỉ có thể nhận Focus nếu tất cả
những ô điều khiển được hiển thị trên mẫu
biểu đều không cho phép chọn hoặc không
có ô điều khiển nào trong mẫu biểu.
LostFocus Khi ô điều khiển hoặc mẫu biểu mất Focus
Mẫu biểu chỉ có thể nhận Focus nếu tất cả
Được
phép
Cancel
Không
Không
Không
Có
Không
Không
210
Microsoft Access
những ô điều khiển được hiển thị trên mẫu
biểu đều không cho phép chọn hoặc không
có ô điều khiển nào trong mẫu biểu.
14.4.3 Sự kiện về Data
Sự kiện
AfterDelConfirm
Xảy ra khi
Sau khi người sử dụng xác nhận hoặc
hủy bỏ tác vụ xóa mẩu tin.
AfterInsert
Khi một mẩu tin mới được thêm vào
bảng dữ liệu
AfterUpdate
Sau khi một ô điều khiển hoặc mẩu
tin được cập nhật với dữ liệu mới.
Sự kiện này xảy ra khi ô điều khiển
mất focus hoặc khi người sử dụng
chọn menu Records, Save Record
Sự kiện này xảy ra đối với cả những
mẩu tin hiện hữu và những mẩu tin
mới được thêm vào bảng dữ liệu.
BeforeDelConfirm Trước khi người sử dụng xác nhận tác
vụ xóa dữ liệu. Người sử dụng thường
xác nhận hoặc hủy bỏ tác vụ xóa mẩu
tin bằng cách chọn OK hoặc Cancel
trong khung đối thoại Delete Confirm.
BeforeInsert
Khi người sử dụng bấm ký tự đầu tiên
vào một mẩu tin mới hoặc khi người
sử dụng đặt để giá trị cho một ô điều
khiển trong một mẩu tin mới, nhưng
trước khi mẩu tin được thêm vào cơ
sở dữ liệu.
BeforeUpdate
Trước khi ô điều khiển hoặc mẩu tin
được cập nhật với dữ liệu mới.
Sự kiện này xảy ra đối với những mẩu
tin hiện hữu và cả những mẩu tin mới
khi ô điều khiển hoặc mẩu tin mất
focus hoặc khi người sử dụng chọn
menu Records – Save Record.
Change
Khi nội dung của một ô điều khiển
Textbox hoặc của một ô điều khiển
Combo Box thay đổi, chẳng hạn như,
Được
phép
Cancel
Không
Không
Không
Có
Có
Có
Không
211
Microsoft Access
Current
Delete
NotInList
Updated
khi người sử dụng bấm ký tự đầu tiên
vào ô điều khiển Textbox hoặc sửa
đổi tính chất Text của ô điều khiển
Textbox bằng cách dùng Macro hoặc
lệnh ACCESS BASIC.
Khi bạn mở mẫu biểu lần đầu tiên
hoặc khi focus rời khỏi một mẩu tin
và chuyển sang mẩu tin khác.
Sự kiện Current cũng xảy ra khi bạn
Refresh lại dữ liệu hoặc Requery dữ
liệu cơ sở của mẫu biểu. Chẳng hạn
như, khi bạn chọn menu Records –
Refresh, sử dụng hành động
ShowAllRecords hoặc sử dụng hành
động hay phương thức Requery.
Khi bạn yêu cầu xóa mẩu tin nhưng
trước khi xác nhận tác vụ.
Khi bạn bấm vào Combo Box một giá
trị mà giá trị đó chưa có trong danh
sách đã định tại Combo Box.
Khi dữ liệu thuộc một đối tượng OLE
đã bị sửa đổi.
Không
Có
Không
Không
14.4.4 Sự kiện về mouse
Sự kiện
Click
DblClick
MouseDown
Xảy ra khi
Khi người sử dụng ấn nút mouse bên trái
và buông ra ngay (click) khi dấu hiệu
mouse chỉ tại một ô điều khiển hoặc
vùng trắng trong mẫu biểu.
Khi người sử dụng click đôi nút mouse
bên trái tại một ô điều khiển hoặc một
trắng trong mẫu biểu.
Khi người sử dụng ấn nút mouse trong
lúc chỉ điểm đang ở trên mẫu biểu hoặc
một ô điều khiển.
Việc hủy bỏ sự kiện MouseDown giúp
bạn tránh được sự hiển thị menu tắt của
mẫu biểu hoặc của ô điều khiển khi bạn
ấn nút mouse bên phải. Bạn có thể hủy
Được
phép
Cancel
Không
Có
Có
212
Microsoft Access
MouseMove
MouseUp
bỏ sự kiện này bằng cách quy định 1
macro chứa hành động CancelEvent tại
mục tính chất OnMouseDown của ô điều
khiển hoặc mẫu biểu.
Khi người sử dụng dời chỉ điểm mouse
Không
bên trên một mẫu biểu hoặc ô điều
khiển.
Khi người sử dụng buông nút mouse
Không
(sau khi đã ấn nút mouse) lúc chỉ điểm
đang ở trên một mẫu biểu hoặc ô điều
khiển.
14.4.5 Sự kiện về bàn phím
Sự kiện
KeyDown
KeyPress
Xảy ra khi
Được
phép
Cancel
Không
Khi người sử dụng ấn một phím bất kỳ trên
bàn phím lúc ô điều khiển hoặc mẫu biểu
nhận được focus, hoặc khi gởi một phím đến
mẫu biểu hoặc một điều khiển bằng hành
động hay hiệu lệnh SendKeys.
Nếu phím bấm được giữ (không buông ra)
thì sự kiện KeyDown sẽ lập lại nhiều lần.
Mặc dù không thể hủy bỏ sự kiện KeyDown
nhưng vẫn có thể tránh không cho đối tượng
nhận 1 phím bấm nào cả bằng cách quy định
đối mục Keycode của thủ tục xử lý sự kiện
tại tính chất KeyDown của đối tượng đó là 0.
→ Thủ tục xử lý sự kiện KeyDown có dạng:
Sub Form_KeyDown(Keycode As Integer,
Shift As Integer)
…
End Sub
Hoặc
Sub Ôđiềukhiển_KeyDown(Keycode As
Integer, Shift As Integer)
…
End Sub
Khi người sử dụng bấm một phím hoặc tổ
Có
hợp phím để biểu thị một ký tự ASCII lúc ô
(Macro)
điều khiển hoặc mẫu biểu nhận được focus,
213
Microsoft Access
KeyUp
hoặc khi gởi một phím đến mẫu biểu hoặc
một ô điều khiển bằng hành động hay hiệu
lệnh SendKey.
Nếu phím bấm được giữ (không buông ra)
thì sự kiện KeyPress sẽ lập lại nhiều lần.
Có thể hủy bỏ sự kiện này bằng cách quy
định 1 macro chứa hành động CancelEvent
tại mục tính chất sự kiện OnKeyPress của
mẫu biểu hoặc ô điều khiển. Cũng có thể
tránh không cho đối tượng nhận 1 phím nào
cả bằng cách quy định đối mục KeyAscii của
thủ tục xử lý sự kiện KeyPress là 0.
→ Thủ tục xử lý sự kiện KeyPress có dạng:
Sub Form_KeyPress (KeyAscii As Integer)
…
End Sub
Hoặc
Sub Ôđiềukhiển_KeyPress (KeyAscii As
Integer)
…
End Sub
Khi người sử dụng buông 1 phím đã bấm lúc Không
ô điều khiển hoặc mẫu biểu nhận được focus
hoặc khi gởi 1 phím đến mẫu biểu hoặc 1 ô
điều khiển bằng hành động hay hiệu lệnh
SendKey.
Mặc dù không thể hủy bỏ sự kiện KeyUp
nhưng vẫn có thể tránh không cho đối tượng
nhận 1 phím bấm nào cả bằng cách quy định
đối mục Keycode của thủ tục xử lý sự kiện
tại tính chất KeyUp của đối tượng đó là 0.
→ Thủ tục xử lý sự kiện KeyUp có dạng:
Sub Form_KeyUp (Keycode As Integer,
Shift As Integer)
…
End Sub
Hoặc
Sub Ôđiềukhiển_KeyUp (Keycode As
Integer, Shift As Integer)
…
End Sub
214
Microsoft Access
14.4.6 Sự kiện về in ấn
Sự kiện
Format
Print
Retreat
Xảy ra khi
Được
phép
Cancel
Khi MS ACCESS xác định dữ liệu nào thuộc về Có
thành phần của báo biểu và trước khi MS
ACCESS định dạng thành phần đó để xem
trước trên màn hình hoặc in ra.
Khi dữ liệu thuộc một thành phần của báo biểu Có
được định dạng, nhưng trước khi in thành phần
đó.
Khi MS ACCESS quay trở lại thành phần báo
Không
biểu đã định dạng trước đó trong quá trình định
dạng báo biểu.
14.4.7 Sự kiện về sai lầm (error) và ấn định thời gian
Sự kiện
Error
Timer
Xảy ra khi
Được
phép
Cancel
Có
Khi một sai lầm trong thời gian thi hành xảy
ra do một hành động của người sử dụng. Sự
kiện Error xảy ra đối với những sai lầm trong
thời gian thi hành tạo nên bởi Microsoft Jet
Database Engine, chứ không phải do
ACCESS BASIC.
Khi một khoảng thời gian ấn định đã trôi qua Không
sau khi sự kiện Timer xảy ra lần cuối cùng
trước đó, khoảng thời gian này được xác định
bởi mục tính chất TimerInterval của mẫu biểu.
Bạn có thể làm cho dữ liệu được đồng bộ hóa
trong môi trường có nhiều người sử dụng
bằng cách “làm mới” lại dữ liệu (Refresh
Data) hoặc tái truy vấn (Requery) dữ liệu sau
mỗi thời gian ấn định trước.
14.4.8 Xử lý error khi thi hành chương trình
Khi hệ thống ứng dụng bắt đầu cài đặt sử dụng, có thể xảy ra các
sai lầm mà người dùng gặp phải do những nguyên nhân bên ngoài tác
động mà không thể dự đoán trước như: tập tin cần thiết vô tình bị xóa
215
Microsoft Access
do lầm lẫn, không còn đủ chỗ trống trên đĩa để ghi, ổ đĩa không có
đĩa … Những nguyên nhân này sẽ ảnh hưởng đến chương trình, tuy
nhiên MS Access có thể phát hiện được khi hệ thống ứng dụng đang
hoạt động. Để xử lý các sai lầm này phải viết thêm các lệnh điều
khiển trong các thủ tục, còn gọi là lệnh để bẫy lỗi.
Mục đích của lệnh bẫy lỗi là khi sai lầm xảy ra trong lúc thi hành
chương trình sẽ ngăn không cho hệ thống MS Access xử lý sai lầm
đó mà thay thế bằng việc thi hành các lệnh xử lý viết thêm trong thủ
tục. Tùy thuộc sai lầm xảy ra ở đâu, có thể dùng một trong hai cách
sau đây:
Tình huống xảy ra sai
lầm
Khi sử dụng giao diện
MS Access hoặc MS Jet
Database Engine
Trong chương trình
Access Basic
Cách xử lý
Thêm tập lệnh xử lý lỗi vào thủ tục sự
kiện Error của mẫu biểu hay báo biểu.
Thêm lệnh ON ERROR và tập lệnh xử
lý lỗi vào thủ tục.
14.4.8.1 Dùng thủ tục xử lý sự kiện Error
Thủ tục được qui định tại mục tính chất OnError của mẫu biểu
hoặc báo biểu, khi sai lầm xảy ra thì thủ tục xử lý tại OnError sẽ thi
hành.
Ví dụ:
Trong mẫu biểu dùng để nhập vào bảng dữ liệu Hoa_don, có
hai ô điều khiển nhập vào field SoHD và MaKH đòi hỏi phải nhập
đầy đủ thông tin (field SoHD là khóa của bảng dữ liệu Hoa_don và
field MaKH có định nghĩa quan hệ phụ thuộc tồn tại với bảng dữ
liệu Khach_hang). Dưới đây là thủ tục xử lý tại mục tính chất
OnError của mẫu biểu:
Sub Form_Error ( DataErr As Integer, Response As Integer)
Dim TB As String
NewLine As String
Const Err_Join = 3101
‘ lỗi khi liên kết các bảng bị vi phạm
Const Err_NullKey = 3058 ‘ lỗi khi khóa của bảng có giá trị Null
NewLine = Chr(13) & Chr(10)
Select Case DataErr
Case Err_Join :
TB = “ Mã khách hàng trong hóa đơn không có “
TB = TB & NewLine
216
Microsoft Access
TB = TB & “ Hãy nhập lại Mã khách hàng “
TB = TB & NewLine
TB = TB & “ hoặc hủy bỏ bằng cách nhấn Esc “
MsgBox TB
Response = DATA_ERRCONTINUE
Case Err_NullKey :
TB = “ Hóa đơn chưa có số hóa đơn hoặc bị trùng“
TB = TB & NewLine
TB = TB & “ Hãy nhập lại số hóa đơn “
TB = TB & NewLine
TB = TB & “ hoặc hủy bỏ bằng cách nhấn Esc “
MsgBox TB
SoHD.SetFocus
Response = DATA_ERRCONTINUE
End Select
End Sub
14.4.8.2 Dùng lệnh On Error
Để xử lý lỗi lúc thi hành chương trình Access Basic bằng cách
thêm lệnh On Error và tập lệnh xử lý sai lầm vào chương trình đó.
Cú pháp lệnh như sau:
On Error Goto nhãn_1
……
nhãn_1:
……
Resume nhãn_2
-
Khi xảy ra sai lầm chương trình sẽ chuyển đến dòng lệnh có
nhãn_1 và thực hiện tập lệnh xử lý lỗi tại đó.
- Lệnh Resume nhãn_2 sẽ cho thi hành tiếp chương trình bắt đầu
tại dòng lệnh có nhãn_2
Ví dụ:
Trong mẫu biểu nhập vào bảng dữ liệu Nhanvien có nút lệnh
Xem cho phép mở một mẫu biểu khác tên là QTCT khi người sử
dụng click vào. Nếu mẫu biểu QTCT không tồn tại sẽ xảy ra sai
lầm. Thủ tục sau đây gắn tại mục tính chất OnClick của nút Xem:
217
Microsoft Access
Sub Xem_Click()
On Error Goto Err_Click
Dim frm As String
frm = “QTCT”
DoCmd.OpenForm frm
Exit_Xem :
Exit Sub
Err_Click :
MsgBox “Không có form này”
Resume Exit_Xem
End Sub
218
Microsoft Access
BÀI TẬP:
1. Tạo tập tin CSDL để quản lý kinh doanh các loại nước giải khát đặt
tên QLKD.MDB trong đó tạo các table sau:
CUA_HANG (MACH, TENCH, DIACHI, CHIETKHAU)
NUOCGIAIKHAT (NGK, TENNGK, LOAI, GIABAN)
HD_GIAOHANG (SOHD, NGAYGIAO, MACH)
CT_GIAOHANG (SOHD, NGK, SOKET)
Ghi chú: các field có gạch dưới là khóa của table.
Ý nghĩa của các table:
-
Table CUA_HANG: lưu danh sách các cửa hàng mua nước giải
khát. Mỗi cửa hàng có các thông tin: MACH (mã cửa hàng),
TENCH (tên cửa hàng), DIACHI (địa chỉ), CHIETKHAU (tỷ lệ
chiết khấu cho cửa hàng).
-
Table NUOCGIAIKHAT: lưu danh sách các sản phẩm giải khát,
gồm: NGK (mã số nước giải khát), TENNGK (tên sản phẩm nước
giải khát), LOAI (loại chai), GIABAN (giá bán 1 chai).
-
Table HD_GIAOHANG: lưu các hóa đơn giao nước giải khát cho
các cửa hàng, gồm SOHD (mã số hóa đơn giao hàng),
NGAYGIAO (ngày giao hàng), MACH (mã cửa hàng mua nước
giải khát).
-
Table CT_GIAOHANG: lưu nội dung chi tiết của hóa đơn giao
hàng, gồm: SOHD (mã số hóa đơn giao hàng), NGK (mã số nước
giải khát), SOKET (số lượng kết hàng, mỗi kết chứa 30 chai).
2. Tạo các table và thiết lập mối liên kết giữa các table. Dựa vào dữ
liệu mẫu, hãy chọn kiểu dữ liệu phù hợp cho các field trong table.
Qui định các tính chất Format, Input Mask cần thiết.
-
-
Tạo combo box trong table HD_GIAOHANG tại field MACH
tham chiếu đến field MACH trong table CUA_HANG (combo
box hiện 2 cột MACH và TENCH).
Tạo combo box trong table CT_GIAOHANG tại field NGK tham
chiếu đến field NGK trong table NUOCGIAIKHAT (combo box
hiện 2 cột NGK và TENNGK).
Cài đặt các ràng buộc: CHIETKHAU từ 0 đến 30%, NGAYGIAO
nhỏ hơn hay bằng ngày hiện hành, GIABAN từ 2000 trở lên,
SOKET phải là số dương.
Nhập dữ liệu mẫu vào các table:
219
Microsoft Access
220