- Actions: chứa danh sỏch cỏc lệnh của mỗi nhúm.
BÀI 8 MODULE (LẬP TRèNH VBA) M bài: ITDBM07
M bài: ITDBM07.8
Mục tiờu thực hiện
Học xong bài này học viờn cú khả năng:
- Tạo và thực hiện được cỏc hàm tự tạo
- ắn m t thủ tục hoặc hàm với m t sự kiện của MS-Access
- Dựng nỳt lệnh để tổ chức giao diện chương trỡnh.
- Dựng module để tự đ ng húa thao tỏc
Nội dung
8.1 hỏi niệm về Module 8.2 Tạo m t hàm hoặc thủ tục
8.3 Đưa cỏc hành đ ng của hàm hoặc thủ tục vào cỏc sự kiện của MS-Access. 8.4 Cỏc cõu lệnh : khai bỏo hằng, biến, điều kiện, lập,
8.5 Thư viện cỏc hàm hoặc thủ tục cú sẵn của MS-Access.
Access khụng những là hệ quản trị CSDL rất mạnh- cụ thể cỏc bạn đó được tỡm hiểu rất kỹ ở cỏc bài trước. Hơn nữa, với những cụng cụ cú s n đi kốm như Forms, Report, Macros và đặc biệt là ngụn ngữ lập trỡnh VBA – Access sẽ cũn là một cụng cụ phỏt triển phần mềm rất mạnh, d sử dụng cho cỏc ứng dụng quản lý vừa và nhỏ.
Nội dung bài này sẽ trỡnh bày căn bản về ngụn ngữ lập trỡnh VBA (Visual Basic for Application)- một ngụn ngữ khỏ quen thuộc đối với những người sử dụng chuyờn sõu sản phẩm Microsoft Office. Đõy chớnh là cơ sở quan trọng để cỏc bạn tiếp cận cụ thể chuyờn ngành lập trỡnh CSDL sẽ được giới thiệu trong chương trỡnh tiếp theo.
Qua bài này, học viờn sẽ hiểu được mụi trường làm việc ngụn ngữ VBA; biết cỏch sử dụng cỏc cấu trỳc lệnh; viết và sử dụng tốt chương trỡnh con; đặc biệt dần làm quen việc lập trỡnh trờn cỏc đối tượng ActiveX- s n sàng tiếp cận cỏc cụng cụ lập trỡnh hướng đối tượng trực quan hiện đại như Visual Basic và Visual Basic .NET.
8.1. Mụi tr ờng lập trỡnh VBA (Module)
Bộ phần mềm tin học văn phũng Microsoft Office phải núi là nổi tiếng nhất thế giới trong lĩnh vực tin học văn phũng. Word cung cấp khả năng chế bản điện tử đẹp và hiện đại; Excel với khả năng bảng tớnh điện tử mạnh mẽ; FrontPage với khả năng tạo ra cỏc trang web sống động; Access với khả năng quản trị CSDL;… tất cả cỏc phần mềm đú đó tạo nờn sự phổ biến của bộ phần mềm này với hầu hết người dựng mỏy tớnh trờn toàn thế giới.
Khụng dừng ở mức ứng dụng cú s n, bộ phần mềm này cũn cú một ngụn ngữ lập trỡnh đi kốm VBA – Visual Basic for Application để giỳp người dựng cú thể tạo ra cỏc tuỳ biến mạnh hơn, thõn thiện hơn với trong cụng việc của mỡnh. Với Word, Excel bạn hoàn toàn cú thể tự tạo ra cỏc macro để tăng tốc độ sử dụng ứng dụng; hơn thế nữa VBA trờn Access đó thể hiện tớnh chuyờn nghiệp trong lập trỡnh, phần nào biến được một CSDL đơn giản trở thành những sản phẩm đúng gúi thương mại.
Trong đ
(1) Hệ thống thực đơn và thanh cụng cụ
Cũng như bất kỳ mụi trường làm việc nào đều cú hệ thống thực đơn và thanh cụng cụ đi kốm. Trờn đú cú chứa cỏc lệnh để gọi, thi hành hoặc thiết lập cỏc điều khiển cần thiết.
(2) Cửa sổ Project Explorer;
Cú rất nhiều cỏc thành phần cú thể lập trỡnh được bởi VBA như: Forms, Reports, Modules. Cửa sổ Project Explorer là cõy phõn cấp lớp cỏc đối tượng cú chứa mó lệnh VBA, đồng thời giỳp lập trỡnh viờn d dàng trong việc viết (coding) cũng như quản lý cỏc mó lệnh VBA đó viết.
(3) Cửa sổ viết lệnh;
Cửa sổ viết lệnh là nơi soạn thảo cỏc dũng lệnh VBA. Mỗi cửa sổ sẽ chứa tồn bộ mó lệnh cho một đối tượng như: Forms, Reports, Modules. Trong mỗi cửa sổ cú thể cú nhiều phần được viết lệnh, mỗi phần cú thể là nội dung một khai bỏo, một chương trỡnh con, nội dung một thủ tục đỏp ứng sự kiện. Và khỏi niệm module ở đõy là phần lập trỡnh trong Access được xõy dựng bằng cỏc hàm (function) cỏc thủ tục (sub) hay cũn gọi là Chương Trỡnh Con, và cỏc sự kiện của cỏc đối tượng sự kiện thực chất là cỏc thủ tục đỏp ứng cỏc thao tỏc, hành động mà người dựng hay cỏc ứng dụng khỏc tỏc động lờn đối tượng đú.
(4) Cửa sổ Intermediate
Cửa sổ Intermediate là nơi giỳp thi hành trực tiếp một cõu lệnh nào đú, rất hữu dụng trong việc gỡ lỗi phần mềm.
Chương trỡnh con là một đơn vị mó lệnh VBA, nú cú thể chứa tập hợp cỏc cõu lệnh nhằm thao tỏc, tớnh toỏn hoặc điều khiển mục đớch hoặc dữ liệu nào đú. Trong VBA cú 2 loại chương trỡnh con:
- Chương trỡnh con dạng thủ tục, được khai bỏo bởi từ khoỏ Sub; - Chương trỡnh con dạng hàm, được khai bỏo bởi từ khoỏ Function.
Về bản chất, 2 loại chương trỡnh con trờn đều như nhau: khai bỏo, tham số và truyền tham số. Tuy nhiờn, điểm khỏc nhau cơ bản là:
- Function luụn trả về một giỏ trị kiểu vụ hướng chuẩn, vớ dụ: hàm Date() - trả về giỏ trị ngày hiện tại kiểu Date. Trong Access đó s n cú rất nhiều cỏc hàm tớnh toỏn (tham khảo ở trang…), chỳng được gọi là cỏc build-in fuction. Hơn nữa, người dựng hoàn toàn cú thể tạo ra cỏc hàm để sử dụng cho cỏc mục đớch riờng loại hàm này gọi là user-define function;
- Cũn Sub thỡ khụng, nú chỉ thực hiện một số cỏc cụng việc. Tất nhiờn những cụng việc này hoàn toàn cú thể làm thay đổi dữ liệu theo mong muốn trong chương trỡnh. Cũng như Function, Access và VBA s n cú một thư viện cỏc thủ tục; hơn nữa người dựng cũng cú thể tự tạo thờm những thủ tục mới phục vụ việc xử lý dữ liệu theo mục đớch riờng. Đặc biệt, Access cũn định nghĩa thủ tục đỏp ứng sự kiện. Thủ tục này sẽ được tự động gọi ra khi sự kiện đỏp ứng bị ảnh hưởng. Chỳng ta sẽ trở lại nội dung này qua cỏc vớ dụ lập trỡnh VBA.
Tuỳ từng tớnh huống cụ thể sẽ lựa chọn sử dụng Function hoặc Sub.
8.2 T o ch ơng trỡnh con d ng hàm ho c thủ tục 8.2.1. Hàm 8.2.1. Hàm
Để tạo một chương trỡnh con, trước hết phải vào Tools -> Macro – Visual Basic App và ở đõy chỳng ta cú thể xõy dựng cỏc chương trỡnh con cho riờng mỡnh.
Cỳ phỏp
Function <tờn hàm>([<danh sỏch cỏc tham số>]) As <kiểu dữ liệu trả về>
<cỏc lệnh xử lý>
End Function
Trong đú:
- Function, End Function là cỏc từ khoỏ bắt buộc khai bỏo cấu trỳc một chương
trỡnh con dạng hàm;
- <tờn hàm> là tờn gọi hàm định khai bỏo. Tờn khụng được chứa dấu cỏch (space)
và cỏc ký tự đặc biệt;
- <danh sỏch cỏc tham số> - danh sỏch cỏc tham số cần thiết cho hàm. Cú hay khụng cú danh sỏch này tuỳ thuộc vào hàm cần định nghĩa;
- <kiểu trả về> - kiểu dữ liệu mà hàm sẽ trả lại. Phần này bắt buộc phải được khai bỏo với
mỗi hàm;
- <cỏc lệnh xử lý> - thõn chương trỡnh con. Trong đú cõu lệnh <tờn hàm> = <biểu thức>
phải xuất hiện ớt nhất một lần trong thủ tục. Cõu lệnh này cú tỏc dụng gỏn giỏ trị cho hàm.
Function, hàm sẽ cú tỏc dụng toàn cục. Tức là cú thể sử dụng bất kỳ nơi nào trờn tệp Access đú. Tất nhiờn, tất cả những gỡ khai bỏo là Public phải được khai bỏo trong phần
Decralations của một Module nào đú. Vớ dụ 1: hàm tớnh tổng 2 số
Function Tong2So(a, b As Double) As Double
Tong2So = a + b
End Function
Vớ dụ 2: hàm kiểm tra một số cú phải là nguyờn tố hay khụng?
Function laNguyenTo(so As Integer) As Boolean
Dim uoc As Integer laNguyenTo = True If so > 2 Then
For uoc = 2 To Int(Sqr(so)) If so Mod uoc = 0 Then laNguyenTo = False Exit For End If Next End If End Function Vớ dụ trờn cú sử dụng đến:
- hàm Int(number) – hàm lấy phần nguyờn của một số; - hàm Sqr(number) – hàm lấy căn bậc hai một số
Vớ dụ 3: hàm tỏch tờn trong xõu họ và tờn.
Đõy là một bài toỏn gặp phải rất nhiều trong thực tế. Cụ thể bài toỏn giải quyết vấn đề sau:
Nếu biết họ tờn là Nguyen Duc Man, hàm sẽ tỏch ra được tờn là Man. Tồn bộ mó lệnh
hàm như sau:
Function GetTen(hoten As String) As String Dim pos As Integer
pos = 1
If InStr(pos, Trim(hoten), " ") = 0 Then GetTen = hoten
Exit Function End If
While InStr(pos + 1, Trim(hoten), " ") > 0 pos = InStr(pos + 1, Trim(hoten), " ") Wend
GetTen = Mid(hoten, pos) End Function
8.2.2. Thủ tục
Cỳ phỏp
Sub <tờn thủ tục> ([<danh sỏch tham số>])
<cỏc lệnh>
End Sub
Trong đú:
- Sub, End Sub là từ khúa khai bỏo thủ tục
- <tờn thủ tục>: tờn của thủ tục, tương tự như tờn hàm
- <danh sỏch tham số> khai bỏo danh sỏch cỏc tham số vào ra của thủ tục
- <cỏc lệnh> thõn thủ tục, nơi thực hiện cỏc phộp toỏn xử lý ở đõy
Vớ dụ: Tỡm số lớn nhất trong 3 số a,b,c
Sub Max3So(a As Integer, b As Integer, c As Integer) Dim max As Integer
max = a
If max < b Then max = b If max < c Then max = c
MsgBox "Gia tri lon nhat cua trong 3 so la: " & max End Sub
Hàm/thủ tục MsgBox dựng để hiển thị h p thoại thụng bỏo
8.3. Đ a cỏc hàm ho c thủ tục vào cỏc sự kiện của Access
Để đưa cỏc hàm hay thủ tục vào cỏc sự kiện của Access, trước hết ta tạo ra cỏc hàm hay thủ tục trong cửa sổ lệnh (module) của Access, sau đú thiết kế một form hay report và gọi hàm hoặc thủ tục cho cỏc sự kiện của cỏc đối tượng trờn form hoặc report.
Vớ dụ: Thiết kế một form bao gồm một Textbox cú tờn txtHoTen và một nỳt lệnh cú tờn là
cmdTachTen (đặt tờn của đối tượng tại thuộc tớnh Name trong cửa sổ Properties của đối
tượng đú), cỏc bước thực hiện như sau:
B ớc 1: Vào module và tạo hàm GetTen(hoten string) như ở vớ dụ trong phần 8.2.1 B ớc 2: Thiết kế một màn hỡnh như sau: