1. Trang chủ >
  2. Công Nghệ Thông Tin >
  3. Tin học văn phòng >

4 XỬ LÝ DỮ LIỆU THÔNG QUA SỰ KIỆN

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





Không





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







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















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





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









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ổ



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





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



Xem Thêm
Tải bản đầy đủ (.pdf) (240 trang)

×