• Click chuột vào nút Single Step
• Click chuột vào nút Run để kích hoạt các điều khiển cho phát sinh các biến cố đã được gán với macro thì xuất hiện hộp thoại:
Hình 2.41: Hộp thoại khi chạy từng bước Macro
• Trên hộp thoại ta cĩ thể xem lại các hành động, tham số, điều kiện, kết quả của từng hành động cĩ đúng ý muốn khơng. Sau đĩ, cĩ thể chọn:
- Step: vẫn thực hiện việc chạy từng bước và cho phép thực hiện hành động kế tiếp trong macro.
- Stop All Macro: Dừng ngay Macro khơng tiếp tục thực hiện các hành động kế tiếp.
- Continue: Chạy Macro bình thường khơng chạy từng bước nữa.
2.8. SỬ DỤNG BIẾN CỐ (EVENT) TRONG FORM, REPORT ,CONTROL ĐỂ CHẠY MACRO
2.8.1. KHÁI NIỆM VỀ BIẾN CỐ:
Biến cố là những sự kiện xảy ra trên Form hay Report như click chuột, nhấn phím, di chuyển chuột,…
2.8.2. Ý NGHĨA CỦA CÁC BIẾN CỐ:
• Before Update : biến cố xảy ra trước khi đối tượng được cập nhật. • After Update : biến cố xảy ra sau khi đối tượng được cập nhật. • On Click : biến cố xảy ra khi click chuột tại đối tượng. • On Dbl Click : biến cố xảy ra khi click chuột tại đối tượng. • On Mouse Down : biến cố xảy ra khi nhấn giữ chuột tại đối tượng.
• On Mouse Up : biến cố xảy ra khi nhả chuột tại đối tượng.
• On Mouse Move : biến cố xảy ra khi di chuyển chuột qua đối tượng. • On Key Press : biến cố xảy ra khi nhấn một phím tại đối tượng. • On Key Down : biến cố xảy ra khi nhấn giữ một phím tại đối tượng. • On Key Up : biến cố xảy ra khi nhả phím tại đối tượng.
• On Enter : biến cố xảy ra khi con trỏ (Cursor) vào đối tượng. • On Exit : biến cố xảy ra khi con trỏ (Cursor) ra khỏi đối tượng.
2.8.3. CÁCH GÁN MACRO VÀO BIẾN CỐ CỦA ĐỐI TƯỢNG
Để gọi một macro thi hành khi cĩ biến cố nào đĩ xảy ra trên đối tượng ta cĩ thể sử dụng một trong hai cách sau:
Cách 1: Được sử dụng nếu macro cần gán vào biến cố của đối tượng đã được tạo sẵn.
• Vào phiếu Event trong hộp thoại thuộc tính đối tượng. • Chọn tên macro trong biến cố cần gán.
• Cách gán được minh họa ở hình 2.28.
Cách 2: Được sử dụng nếu macro cần gán vào biến cố của đối tượng chưa tồn tại.
Hình 2.42: Hộp thoại Choose Builder xuất hiện khi click chuột vào nút …sau biến cố
• Click chuột vào dấu … sau biến cố
• Chọn mục Macro builder trong hộp thoại Choose Builder • Xây dựng macro cần gán trong màn hình thiết kế Macro
Hình 2.43: Màn hình thiết kế Macro xuất hiện khi chọn mục Macro Builder
2.9.1. MACRO AUTOEXEC:
• Tự động thi hành mỗi khi mở Cơ sở dữ liệu chứa nĩ. • Cĩ tên bắt buộc là AUTOEXEC.
2.9.2. SỬ DỤNG HỘP THOẠI STARTUP:
• Click chuột vào nút Office để vào Menu chính của Access sau đĩ chọn Access Options
Hình 2.45: Menu chính khi click chuột vào nút Office
Hình 2.46: Màn hình làm việc với Sự lựa chọn Current DataBase
• Các thơng số trên hộp thoại Startup:
Application Title: Tiêu đề của ứng dụng khi mở tập tin CSDL xuất hiện trên thanh trạng thái (dùng thay thế tiêu đề Microsoft Access).
Application Icon: chọn tập tin biểu tượng cho ứng dụng. Display Form: Chọn tên Form muốn hiển thị khi mở CSDL.
Display Navigation Pane: hiển thị hay ẩn cửa sổ định hướng
Navigation Pane.
Ta cĩ thể sử dụng VBA để thực hiện các cơng việc sau: Dễ dàng bảo trì các ứng dụng.
Tạo ra các hàm của riêng mình.
Che đi các thơng báo lỗi của hệ thống. Tạo hoặc hiệu chỉnh các đối tượng. Thực hiện các hành động cấp hệ thống. Truy cập dễ dàng vào các mẫu tin. Gởi các tham số động.
3.2. CÁC THÀNH PHẦN TRONG MỘT MODULE 3.2.1. GIỚI THIỆU VỀ MODULE 3.2.1. GIỚI THIỆU VỀ MODULE
a) MODULE CHUNG
Dùng để chứa các thủ tục và hàm chung do người thiết kế tự lập trình bằng ngơn ngữ VBA để bổ sung cho file cơ sở dữ liệu mà ta cĩ thể chạy ở bất kỳ vị trí nào trong ứng dụng.
b) MODULE RIÊNG CỦA ĐỐI TƯỢNG FORM, REPORT
Dùng để chứa các thủ tục xử lý sự kiện liên kết với Form hay Report. Ta khơng thể lưu riêng module loại này mà chúng gắn liền với Form hoặc Report. Khi ta sao chép Form hay Report từ tập tin CSDL này sang tập tin CSDL khác thì các Module này cũng được chép sang cùng với nĩ và nếu ta xĩa Form hoặc Report thì chúng cũng bị xĩa theo.
3.2.2. CÁCH MỞ CỬA SỔ MODULE ĐỂ VIẾT MÃ LỆNH a) MỞ MODULE CHUNG a) MỞ MODULE CHUNG
Hình 3.1: Chọn muc Module để tạo mới Module
Xuất hiện màn hình soạn thảo
Hình 3.2: Cửa sổ soạn thảo mã lệnh
b) MỞ MODULE RIÊNG CỦA FORM HOẶC REPORT
Hình 3.4: Cửa sổ soạn thảo mã lệnh của Form
3.2.3. CÁC THÀNH PHẦN TRONG MỘT MODULE a) CÁC KHAI BÁO a) CÁC KHAI BÁO
Là các câu lệnh dùng định nghĩa các biến, hằng, loại dữ liệu người dùng.
b) THỦ TỤC XỬ LÝ SỰ KIỆN (EVENT PROCEDURE)
Là các thủ tục nằm tại các Module của Form hoặc Report. Chúng sẽ được thực hiện khi các sự kiện của Form hoặc Report hoặc của các điều khiển xảy ra.
c) THỦ TỤC CHUNG (GENERAL PROCEDURE)
Là các thủ tục khơng trực tiếp liên quan đến một đối tượng hoặc biến cố nào cả. Ta cĩ thể tạo chúng trên Module chung hoặc Module của Form, Report. Thủ tục chung chỉ được thi hành khi nào ta gọi đến nĩ.
a) Ý NGHĨA
Khi Access nhận thấy cĩ một sự kiện (biến cố) xảy ra trên Form, Report hoặc Control nĩ sẽ tự động thi hành thủ tục biến cố đã tạo cho đối tượng và biến cố đĩ. Do đĩ, để thực hiện một số hành động nào đĩ để đáp lại một biến cố đặc biệt ta phải đưa các hành động đĩ vào một thủ tục biến cố
b) TÊN CỦA THỦ TỤC XỬ LÝ SỰ KIỆN
<Form / Report>_<Tên biến cố> <Tên Control>_<Tên biến cố>
Thí dụ:
- Thủ tục biến cố cho sự kiện Mở Form cĩ tên là Form_Open
- Thủ tục biến cố cho sự kiện Click chuột vào nút tên cmdThem là
cmdThem_Click.
c) TẠO THỦ TỤC BIẾN CỐ
Tạo thủ tục biến cố cho nút lệnh cmd_chao khi click chuột nút lệnh sẽ hiển thị lời chào “Xin chao tat ca cac ban hoc vien”.
Hình 3.5: Form chứa nút cmd_chao mà ta cần tạo thủ tục biến cố
- Cách 1:
Bước 1: Mở bảng thuộc tính của đối tượng cần tạo thủ tục biến cố.
Hình 3.7: Chuẩn bị viết thủ tục biến cố cho nút cmd_chao
- Cách 2
Bước 1: Bấm chuột phải vào nút cmd_Hello và chọn Build Event
Hình 3.8: Chọn lệnh Build Event trong menu đối tượng
Bước 2: Xuất hiện hộp thoại Choose Builder, chọn Code Builder
Hình 3.9: Hộp thoại Choose Builder
- Cách 3
Trong cửa sổ soạn thảo mã lệnh, ta chọn Đối tượng cần tạo biến cố ở Combo Box bên trái
Hình 3.10: Chọn đối tượng cần viết thủ tục biến cố
Và chọn tên Biến cố ở Combo Box bên phải.
Hình 3.11: Chọn biến cố
3.2.5. THỦ TỤC CHUNG (PROCEDURE) a) Ý NGHĨA a) Ý NGHĨA
- Ta tạo thủ tục chung nhằm mục đích tạo ra các chức năng của riêng mình nhằm tự động tính tốn một số cơng việc thường xuyên cần thực hiện.
- Muốn các thủ tục này được sử dụng chung cho tồn bộ chương trình ứng dụng. - Tránh các đoạn lệnh trùng lắp và giúp người lập trình dễ bảo trì chương trình
ứng dụng.
b) PHÂN LOẠI
Bao gồm Thủ tục Hàm (Function) và Thủ tục Con (Sub)
• Thủ tục hàm: cho phép trả về một giá trị. Do đĩ, thủ tục hàm được sử dụng trong các biểu thức. Cĩ thể nhận tham số vào.
• Thủ tục con: cho phép thực hiện các hành động nhưng khơng trả về một giá
trị và do đĩ thủ tục con khơng được dùng trong biểu thức. Cĩ thể nhận tham số vào.
c) CÚ PHÁP KHAI BÁO VÀ GỌI THỦ TỤC CON Cú pháp khai báo:
[Public | Private] [Static] Sub Tên thủ tục ([Tham số])
của 2 số đĩ.
Hình 3.12: Thủ tục con để tìm USCLN của 2 số x và y
Gọi thủ tục con: ta cĩ thể gọi thủ tục con bằng một trong 2 cách sau: Cách 1: Call <tên thủ tục con>(<danh sách tham số>)
Ví dụ: Call USCLN(6,9)
Cách 2: <tên thủ tục con> <danh sách tham số> Ví dụ: USCLN 6,9
Lưu ý: ta khơng được đặt cặp dấu ngoặc đơn vào danh sách các tham số khi
gọi nĩ (trừ cú pháp gọi thủ tục con bằng lệnh Call).
d) CÚ PHÁP KHAI BÁO VÀ GỌI THỦ TỤC HÀM Cú pháp khai báo:
[Public | Private] [Static] Function <Tên Hàm> ([<Tham số>]) As <Kiểu giá trị
trả về>
<Khối lệnh>
<Tên Hàm> = <Giá trị trả về> End Sub
- Khối lệnh: là dãy các câu lệnh VBA mà ta muốn thi hành khi thủ tục được
gọi.
- Tham số: danh sách các tham số gởi vào để cĩ giá trị cần cho thủ tục để tính tốn bên trong.
- Giá trị trả về: là giá trị mà hàm trả về sau khi tính tốn bên trong thủ tục
hàm.
Cú pháp gọi thủ tục hàm:
<Tên biến nhận giá trị trả về> = <Tên thủ tục hàm> (<tham số 1>,< tham số 2>,…)
Thí dụ: Viết thủ tục hàm truyền vào 2 tham trị x và y. Tính và trả về USCLN
của 2 số đĩ.
Hình 3.13: Hàm tìm USCLN của 2 số x và y
Sau đĩ ta cĩ thể gán biến US nhận lấy kết quả của hàm Uscln như sau: US=Uscln(9,6)
Hoặc in kết quả của hàm ra hộp thoại Msgbox Msgbox Uscln(9,6)
Lưu ý:
- Danh sách các tham số truyền cho thủ tục hàm phải nằm trong cặp dấu ngoặc đơn.
- Thơng thường câu lệnh cuối cùng trong thủ tục hàm phải là câu lệnh gán <Tên hàm = <Giá trị trả về của hàm>.
- Khi gọi đến một hàm phải cĩ một biến hoặc điều khiển nhận giá trị trả về từ hàm.
e) CÚ PHÁP KHAI BÁO CÁC THAM SỐ TRONG THỦ TỤC (CON/HÀM) [Byval | ByRef] <Tên tham số> As <Kiểu dữ liệu> [=<Giá trị mặc định>]
Trong cửa sổ soạn thảo lệnh (View Code), ta chọn Insert / Procedure…
Hình 3.14: Chọn lệnh Insert/Procedure để tạo thủ tục cho Module
Xuất hiện hộp thoại
Hình 3.15: Hộp thoại khai báo tạo thủ tục
Gõ tên thủ tục vào ơ Name, chọn loại thủ tục là Sub hay Function ở mục Type và chọn phạm vi áp dụng Public hay Private ở mục Scope
All Local variables as Statics: tồn bộ các biến trong thủ tục là biến tĩnh
g) BIÊN DỊCH THỦ TỤC
Chọn lệnh Debug / Compile… để biên dịch tất cả các thủ tục trong tập tin CSDL. Nếu cĩ lỗi sẽ dừng lại cho ta sửa.
h) CHẠY THỬ
- Chọn lệnh View/Immediate Window (Ctrl+G)
- Trong cửa sổ Immediate ta gõ tên thủ tục con và tham số (nếu cĩ) rồi bấm Enter. Nếu là thủ tục hàm thì ta thêm dấu ? ở phía trước tên thủ tục hàm .
3.2.7. KHAI BÁO BIẾN a) Ý NGHĨA a) Ý NGHĨA
- Là đối tượng trung gian dùng để lưu trữ các giá trị tính tốn khi chạy chương trình.
- Giá trị của các biến sẽ mất đi khi chương trình ứng dụng chấm dứt hoạt động. - Microsoft Access cĩ hai cơ chế khi sử dụng biến: tường minh (khai báo) và
khơng tường minh (khơng khai báo biến) trước khi sử dụng.
b) CÚ PHÁP
Dim <Tên biến>[As <Kiểu dữ liệu>]
- Tên biến: là tên do ta tự đặt theo quy ước đặt tên mà Microsoft Access đã quy ước. Tên biến khơng phân biệt chữ hoa hoặc chữ thường. Ta khơng nên đặt tên biến quá dài mà nên đặt tên biến ngắn gọn mang tính gợi nhớ. Thơng thường tên biến gồm 2 phần: phần đầu nĩi lên kiểu dữ liệu của biến, phần cuối là tên gợi nhĩ của biến.
Thí dụ: khai báo biến kiểu chuỗi dùng để chứa tên một biểu mẫu và biến N kiểu số nguyên:
Dim strFrmName As String Dim intN As Integer
- Kiểu dữ liệu: là một trong các kiểu dữ liệu cơ bản. Nếu ta bỏ qua phần khai báo kiểu dữ liệu thì biến sẽ cĩ kiểu dữ liệu thay đổi (Variant).
c) KHAI BÁO BIẾN TƯỜNG MINH VÀ KHƠNG TƯỜNG MINH
Để bắt buộc người lập trình phải khai báo biến tường minh trước khi sử dụng ta dùng câu lệnh câu lệnh Option Explicit ở đầu Module. Ngược lại nếu khơng cĩ câu lệnh này thì coi như ta khai báo biến khơng tường minh. Việc khai báo biến tường minh giúp ta tránh được việc sử dụng sai tên các biến vì khi biên dịch Access sẽ thơng báo lỗi khi phát hiện ra các biến cĩ sử dụng nhưng chưa khai báo để ta cĩ thể sửa đổi.
d) TẦM ẢNH HƯỞNG CỦA BIẾN
- Khi ta khai báo biến trong một thủ tục thì chỉ cĩ các câu lệnh bên trong thủ tục mới đọc hoặc tác động làm thay đổi giá trị của biến đĩ. Ta nĩi tầm ảnh hưởng của biến mang tính cục bộ trong thủ tục đĩ. Nếu ta muốn cĩ tầm ảnh hưởng là tất cả thủ tục trong một Module hoặc tất cả các Module của ứng dụng thì ta phải khai báo nĩ ở đầu Module kết hợp với các từ khĩa Public hoặc Private. Tĩm lại tầm ảnh hưởng của biến phụ thuộc vào vị trí khai báo biến và các từ khĩa. - Bảng tầm ảnh hưởng theo tứ khĩa:
Tầm ảnh hưởng Private Public
Cấp thủ tục
Các biến cĩ tính cục bộ ngay trong thủ tục khai báo biến.
Khơng thể khai báo biến tồn cục trong thủ tục.
Cấp Module
Các biến cĩ tính cục bộ ngay tại Module được khai báo
Các biến cĩ thể sử dụng cho tất cả các Module chung trong ứng dụng
e) CÁC BIẾN SỬ DỤNG TRONG MỘT THỦ TỤC
Các biến cấp thủ tục chỉ được nhận ra ở tại thủ tục mà chúng khai báo. Chúng được xem như một dạng biến cục bộ. Ta cĩ thể khai báo nĩ bằng các lệnh Dim hoặc Static.
Thí dụ: khai báo biến cục bộ X cĩ kiểu số nguyên
Dim intX As Integer hoặc
Static intX As Integer
Lưu ý: các biến cục bộ được khai báo bằng từ khĩa Dim chỉ tồn tại khi thủ tục
đang thực hiện. Cịn những biến cục bộ được khai báo bằng từ khĩa Static sẽ tồn tại trong tồn bộ thời gian ứng dụng đang thực hiện.
f) CÁC BIẾN SỬ DỤNG TRONG CÙNG MỘT MODULE
Để khai báo biến sử dụng chung cho cùng một Module ta đặt chúng ở đầu Module và dùng từ khĩa Dim hoặc Private.
Thí dụ: khai báo biến X cĩ kiểu nguyên dùng chung cho một Module
Option Compare Database Option Explicit
Dim intX As Integer hoặc
Private intX As Integer
g) CÁC BIẾN SỬ DỤNG CHUNG CHO TẤT CẢ CÁC MODULE
Để khai báo biến sử dụng chung cho tất cả các Module ta đặt chúng ở đầu Module và dùng từ khĩa Public.
được mở.
- Thời gian sống của những biến cục bộ trong các thủ tục chỉ bằng với thời gian mà thủ tục đĩ được chạy. Nĩ được khởi tạo khi chạy thủ tục và được giải phĩng khi chạy xong thủ tục. Nếu muốn lưu giữ lại thì ta cĩ thể dùng từ khĩa Static.
3.2.8. KHAI BÁO HẰNG a) Ý NGHĨA a) Ý NGHĨA
- Bên trong đoạn lệnh của ta cĩ thể chứa các giá trị khơng thay đổi và các giá trị này xuất hiện nhiều nơi trong thủ tục, hoặc phụ thuộc vào các số nào đĩ rất khĩ nhớ. Trong trường hợp này ta cĩ thể cải tiến cho các đoạn lệnh trở nên dễ đọc và dễ bảo trì hơn bằng cách sử dụng các hằng số.
- Một hằng là một tên đầy đủ dùng thay thế cho một chuỗi hay một số mà giá trị của nĩ khơng thay đổi trong suốt thời gian ứng dụng vận hành.
- Ta khơng thể sửa đổi hoặc gán giá trị mới vào cho một hằng.
- Hằng cĩ từ một trong hai nguồn: thứ nhất là do hệ thống định nghĩa, thứ hai do