Da DAI HOC QUOC GIA TP HO CHi MINH
TRUONG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
aa TRUNG TAM TIN HOC COs, + 565 _
NGUYEN THIEN TAM (Bién soan)
GIAO TRINH
ecess
gem 003
———— NHÀ XUẤT BẢN ĐẠI HỌC QUỐC GIA ÍRƯờng DHDL-KTENE TP HỒ CHÍ MINH
THY VIEN
Trang 2TK 01 TH(V)
Trang 3
Trong thời đại ngày nay, máy tính đã có mặt trong mọt
lĩnh uục xã hội, đặc biệt nó là một cơng cụ hỗ trợ không thể
thiếu trong công tác quản lý Với lĩnh uực xử lý thơng tin úà
các số liệu thì yêu cầu hàng đầu là : Nhanh chóng —
Chính xúc - Lưu trữ gon va tinh Bao m4t cao
Hiện nay có rất nhiều phân mềm cơ sở đữ liệu khúc
nhau, để giúp cho các bạn có thể lựa chọn uùà sử dụng tốt một phân mềm, chúng tôi xin giới thiệu phân mềm quản trị
cơ sở dữ liệu quan hệ — “Microsoft Access 2003” — mét phan mềm kha manh, dé sit dụng uà có nhiều ưu điểm so uới
Microsoft Access 97, 2000 trước đó Trong giáo trình này,
chúng tơi sẽ cung cấp cho các bạn một số hiến thức cơ bản
uê khái niệm cơ sở dữ liệu quan hệ uà một số kỹ năng trong
Microsoft Access để giúp các bạn có thể xây dựng nhanh cúc ứng dụng nhỏ, nhằm phục uụ công tác quản lý của cóc bạn
được tốt hơn Giáo trình này gồm có ba tập:
$ Tp 1: gơm có năm chương (1 - 5), giới thiệu cho các bạn biết uễ khái niệm uề bảng, quan hệ các bảng, các
đối tượng có trong tập tin cơ sở dữ liệu Access, sit dung cơng cụ trình thơng mình để tạo nhanh các đốt tượng
Trang 4biết thêm uê cách sử dụng cóc hành động trong tập lệnh, cách tạo lập các báo biểu theo nhiều dạng khác
nhau :
® Tập 3: gồm hai chương (9-10), giới thiệu ngôn ngữ lap trình Visual Basic for Applications (VBA), dé cé thé két
các đối tượng trong tập tin cơ sở dữ liệu Access lại
thành một ứng dụng thột sự, làm cho ứng dụng có thể sỞ dụng trên môi trường nhiều người dùng
Dù đã cố gắng biên soạn kỹ, uới mong muốn hỗ trợ các
bạn tiếp cận một công cụ phần mềm tiên tiến, song chốc rằng cuốn sách này không tránh khỏi những sơ sót Chúng tơi mong nhận được nhiều ý kiến đóng góp của các bạn
Cuối cùng xin chúc cúc bạn thành công trong uiệc xây _ dựng các ứng dụng tin học trong công tác quản lý
Trang 5
Chương
NGON NGU VISUAL BASIC FOR
| APPLICATIONS
Trong chương này sẽ hướng dẫn bạn cách sử dụng ngôn ngữ
Visual Basic for Applications (VBA) để điều khiển các biến cố trên
các biểu mẫu hoặc các báo cáo, và cách tạo ra một hàm tùy biến của riêng mình Ngồi ra cũng giới thiệu đến với bạn những khái niệm cơ bản của ngôn ngữ lập trinh Visual Basic for Applications -
VISUAL BASIC FOR APPLICATIONS LÀ GÌ ?
Visual Basic for Applications là ngơn ngữ lập trình cho Miscrosoft Office và các ứng dụng có liên kết với nó Bạn sử
dụng nó y như cách sử dụng tập lệnh để có thể liên kết các
đối tượng trong ứng dụng của bạn lại với nhau nhằm tạo
thành một hệ thống chương trình mạch lạc Điểm khác biệt là
Visual Basic for Applications cung cấp nhiều sức mạnh và mềm dẻo hơn là tập lệnh
Với Microsoft Access, bạn có thể thực hiện nhiều công: việc khác nhau bằng tập lệnh hoặc ngôn ngữ Visual Basic for
Applications Do đó vấn để là khi nào chúng ta sẽ chọn tập
lệnh hoặc sẽ chọn Visual Basic for Applications ? Sự chọn lựa này sẽ tùy thuộc vào công việc của chúng ta là muốn làm cái
Trang 6ll KHI NAO SU DUNG TAP LENH VA VISUAL BASIC FOR APPLICATIONS
Ban có thé str dung Visual Basic for Applications thay thé
tập lệnh khi bạn thực hiện các công việc sau
Để cho ứng dụng của bạn dễ dàng bảo trì hơn : Bởi vì tập
lệnh là một đối tượng hoàn toàn tách rời riêng lẻ với các biểu mẫu và các báo cáo sử dụng nó, một ứng dụng
chứa một số lớn các tập lệnh trong các biến cố của các
biểu mẫu và các báo cáo sẽ gây cho bạn khó khăn khi
bảo trì Ngược lại, khi bạn sử dụng Visual Basíc for Applications để xử lý các biến cố, các đoạn lệnh này sẽ
được xây dựng ngay bên trong các biểu mẫu và các báo
cáo tại đúng các biến cố đó Nếu bạn có di chuyển các
biểu mẫu hoặc báo cáo sang một tập tin cơ sở dữ liệu Access khác thì các đoạn lệnh này cũng sẽ được mang đi theo cùng
Tạo ra các hàm của riêng mình : Sử dụng Visual Basic for
Applications bạn cũng có thể tạo ra các hàm của riêng
mình dùng để thực hiện các phép tính vượt quá khả năng
của một biểu thức hoặc thay thế một biểu thức quá phức tạp mà bạn đã viết trong ứng dụng của mình Thí dụ, tạo một hàm tính tiền thu lãi cho vay của một hợp đồng dựa theo một số giá trị như số tiền vay, lãi suất vay, ngày vay, và ngày đến trả nợ
Che đi các thông báo lỗi : Khi có một sự cố ngoài ý muốn
xảy ra trong khi ứng dụng của bạn đang vận hành thì Microsoft Access sẽ hiển thị một thông báo lỗi, thông báo
này sẽ làm cho người sử dụng khó hiểu, đặc biệt khi họ
chưa quen sử dụng Microsoft Access Sử dụng Visual
Basic for Applications, bạn có thể phát hiện các lỗi này
khi nó xảy ra và sẽ hiển thị các thông báo lỗi của riêng
Trang 7
Chương 9 : Ngôn ngữ Visual Basic for Applications 3 làm một cái gì khác Chúng ta nén si dung Visual Basic
for Applications dé diéu khiển các lỗi theo ý mình
e Tạo hoặc sửa đổi các đối tượng : Hầu hết, chúng ta có
- thể tạo hoặc sửa đổi các đối tượng bằng cách trực tiếp
mở đối tượng ra ở chế độ thiết kế Trong một vài trường hợp đặc biệt chúng ta phải sử dụng Visual Basic for Applications để thực hiện việc thay đổi thuộc tính của các
đối tượng trên biểu mẫu hoặc báo cáo ngay khi nó đang
được chạy Thí dụ: Trên một biểu mẫu thể hiện các
phịng hiện có trong một khách sạn dưới dạng các nút lệnh (nghĩa là nếu hiện tại khách sạn có 5 phịng thì trên
biểu mẫu có 5 nút lệnh) Tuy nhiên nếu số phịng có thể
tăng hoặc giảm trong bảng danh mục phịng thì các nút
lệnh trên biểu mẫu cũng sẽ thay đổi theo Công việc này
chỉ thực hiện được bằng ngôn nau Visual Basic for
Applications ma thdi
se Thực hiện các hành động cấp hệ thống: Bạn có thể sử
dụng tập lệnh RunApp để có thể kích hoạt một ứng dụng khác chạy trên môi trường Windows hoặc MS-DOS ngay bên trong ứng dụng Microsoft Access, nhưng bạn không
thể sử dụng tập lệnh này để làm nhiều việc khác bên
ngoài Microsoft Access Sử dụng Visual Basic for Applications, bạn có thể kiểm tra xem một tập tin có tổn tại trong hệ thống của bạn không, sử dụng việc trao đổi di liéu déng (DDE — Dynamic Data Exchange) dé lién lac với các ứng dụng khác trên Windows thí dụ như là Microsoft Excel, và gọi đến các hàm trong thư viện liên két déng cla Windows (DLL — Dynamic Link Libraries)
« Truy cập vào các bản ghi (record): Chúng ta sử dụng
Visual Basic for Applications để có thể truy cập vào từng
dòng trong một bảng ghi và thể thực hiện các hành động thêm, sửa, xóa mà khơng cần sử dựng công cụ truy vấn
e _ Gởi các tham số động: Chúng ta có thể gởi vào các tham
Trang 8một hành động yêu cầu phải có Bên trong các hành
động của tập lệnh, chúng ta cũng có thể sử dụng các
tham số, tuy nhiên chúng ta không thể thay đổi giá trị của
các tham số này khi chúng thực hiện
Sau khi xem qua các lý do để có thể sử dụng Visual
Basic for Applications ở trên, có lẽ bạn sẽ lo lắng không còn
lý do nào nữa để bạn có thể sử dụng tập lệnh Tuy nhiên tập
lệnh vẫn còn được sử dụng trong nhiều ứng dụng bởi vì tập
lệnh cho phép chúng ta dễ dàng thực hiện các công việc như :
mở và đóng biểu mẫu, che và hiện thanh cơng cụ, chúng ta
cịn có thể sử dụng tập lệnh nhanh và dễ dàng là nhờ các
tham số của tập lệnh đã thể hiện rõ ràng bên dưới mà không
cần phải nhớ một cách chính xác sác tham số đó Ngồi ra
chúng ta có thể sử dụng tập lệnh đé thực hiện công việc khởi
tạo các phím nhấn chung (một tập lệnh đặc biệt có tên là
AutoKeys) ,
TẠO MỘT THỦ TỤC BIẾN CO (EVENT PROCEDURE) ĐẦU TIÊN
Thủ tục là các đoạn lệnh mà bạn đã viết bằng ngôn ngữ
Visuai Basic for Applications Bên trong một thủ tục sẽ chứa đựng một dãy các câu lệnh của Visual Basic for Applications
dùng để thực hiện một hành động hoặc tính tốn một giá trị
nào đó Một thủ tục biến cố là một thủ tục sẽ được chạy để
đáp lại cho một biến cố Chúng ta sẽ lấy một thí dụ đơn giản về thủ tục biến cố Trên biểu mẫu này có một hộp văn bản
Trang 9
Chương 9 : Ngôn ngữ Visual Basic for Applications an)
- Khi bạn nhấn vào nút này -
aS Hello : Form
Hình IX.1 : Mâản hình khi mới được mở ra
Thủ tục biến cố sẽ thực hiện và hiển thị câu chào trong hộp văn bản
ha coo a el Hello : Form
Hình IX.2 : Màn hình lúc xuất hiện câu chào khi người sử dụng đã nhấn vào nút lệnh [Say Hello}
Bởi vì tạo ra một thủ tục biến cố là một phần trong công
việc thiết kế biểu mẫu hoặc báo cáo Do đó bước đầu tiên là
chúng ta phải tạo ra biểu mẫu và sắp xếp các điều khiển (control) trên biểu mẫu này (bước này gọi là thiết kế phần
trình bày — layout của biểu mẫu) Trong trường hợp này chúng
ta tạo một biểu mẫu khơng có các bảng hoặc truy vấn làm dữ
Trang 10(textbox) va mét nut lệnh (command button) Đoạn lệnh của
chúng ta sẽ tham chiếu đến các điều khiển này thông qua
thuộc tính tên (name) của điều khiển, vì thế chúng ta nên ghi
rõ ràng thuộc tính tên của các điều khiển không nên để tên
mặc định do Microsoft Access tao ra nhu Text0 va
Command1 Để dễ sử dụng và rõ ràng chúng ta đặt tên cho
hộp văn bản la Txt_Message va nút lệnh là Cmd_Hello
Với tên của điều khiển rõ ràng sẽ giúp cho chúng ta dễ nhớ và dễ hiểu các điều khiển hơn
SB een
Hình IX.3 : Xem biểu mẫu ở chế độ thiết kế
Sau khi đã tạo xong biểu mẫu và các điều khiển trên đó,
thay đổi một số thuộc tính của các điều khiển, chúng ta sẽ viết thủ tục biến cố đầu tiên trong cửa sổ soạn thảo mã lệnh
(module window)
Thực hiện các hành động sau :
- Trong màn hình thiết kế, nhấn chuột phải trên nút lệnh
Cmd_Hello Trên thực đơn tắt chọn chức năng Build
Event Microsoft Access hiển thị hộp thoại chọn bộ thiết
Trang 11
Chương 9 : Ngôn ngữ Visual Basic for Applications 7 - Trong danh sách các loại thiết kế, chọn Code Builder và nhấn nút OK để xây dựng thủ tục biến cố Microsoft
Access mở ra cửa sổ soạn thảo mã lệnh và tạo một
- khuôn mẫu cho thủ tục biến cố mặc định của đối tượng mà bạn đã chọn trong màn hình thiết kế, trong trường
hợp này là thủ tục biến cố Click Khuôn mẫu cho thủ tục
biến cố Click của nút Cmd_Hello được thể hiện minh hoa bén dudi
Cửa sổ soạn thảo mã lệnh
POM ly (8i im _
boolean Compare Database Option Explicit
Private Sub Cmd_Hel lo Cl ick {) End Sub
Hình IX.4 : Cửa sổ soạn thảo bộ mã lệnh
- Đưa vào các đoạn lệnh cần thiết vào giữa hai câu lệnh
Sub và End Sub Chúng ta sẽ đưa vào một lệnh gán
chuỗi văn bản cần thể hiện vào trong hộp văn bản
Txt_Message = "Hello the World !"
Trang 12Sau khi bạn lưu lại, Microsoft Access sẽ tạo ra một lệnh
tại biến cố On Click của nút lệnh Cmd_Hello có tên là [Event
Procedure]
Từ bây giờ nút lệnh Cmd_Hello đã có một
thủ tục biến cố được kết vào nó
Hình IX.5 : Tạo thủ tục biến cố cho nút lệnh
Sau khi bạn đã viết xong một thủ tục biến cố đầu tiên, lúc
bây giờ bạn đã có thể chạy nó được rồi Để làm điều này, bạn phải mở biểu mẫu sang chế độ hiển thị (Form View) và khi đó
nhấn vào nút lệnh Say Hello để cho thủ tục biến cố được thực
Trang 13
Chuong 9 : Ngén ng@ Visual Basic for Applications 9
IV LÀM VIỆC VỚI BỘ MÃ LỆNH CỦA BIỂU MẪU HOẶC BÁO CÁO
IV.1 Tạo mới hoặc sửa đổi thủ tục biến cố
Theo thí dụ trên chỉ cho chúng ta cách tạo ra một thủ tục
biến cố nhanh, đơn giản bằng cách chọn lệnh Build Event
trong thực đơn tắt ngay tại điều khiển đó Ngồi ra Microsoft
Access còn cung cấp cho chúng ta nhiều cách để xây dựng hoặc sửa đổi các thủ tục biến cố Sau đây là một vài cách: « Mở biểu mẫu hoặc báo cáo và cửa sổ soạn thảo mã lệnh
cùng một lúc:
Trong cửa sổ cơ sở dữ liệu, chọn biểu mẫu hoặc báo cáo
và sau đó nhấn vào biểu tượng mã lệnh (Code) 8:
trong thanh công cụ Database
e Tạo hay mở bất kỳ thủ tục biến cố nào:
Mở biểu mẫu hay báo cáo ra ở chế độ thiết kế
Cho hiển thị bảng thuộc tính bằng cách nhấn chuột phải tại các vị trí của biểu mẫu hay báo cáo (tại các
điều khiển, phân đoạn) hoặc chọn View > Properties
trên thực đơn
Trong bảng thuộc tính chọn trang Event
Chọn biến cố nào đó cho thủ tục biến cố mà chúng ta
muốn tạo hay sửa đổi trong danh sách các biến cố
Trang 14Chương 9 : Ngôn ngữ Visual Basic for Applications 10
Khi nhấn vào để tạo mới hay sửa đổi thủ tục biến cố
N00) 1010211441 0N) g NI
Hình IX.6 : Mở cửa sổ soạn thảo bộ mã lệnh để xem hoặc sửa đổi
các câu lệnh
Nếu như biến cố này đã có một thủ tục biến cố rồi thì Microsoft Access sẽ mở cửa sổ soạn thảo mã lệnh ra và cho
hiển thị nội dung hiện có của thủ tục biến cố này Ngược lại, nếu biến cố này rỗng (chưa có gì) thì Microsoft Access hiển thị
hộp thoại chọn bộ thiết kế (Choose Builder) Khi đó nếu muốn xây dựng thủ tục biến cố thì chúng ta chon Code Builder va
khi đó cửa sổ soạn thảo mã lệnh sẽ xuất hiện IV.2 Viết các lệnh bên trong thủ tục biến cố
Viết các lệnh trong cửa sổ soạn thảo mã lệnh thì hoàn toàn cũng giống như bất kỳ một phần mềm soạn thảo văn bản đơn giản nào (NotePad, Nc) Vẫn có hiển thị con nháy cho chúng ta biết vị trí hiện hành của chữ mà chúng ta sẽ gõ vào, vẫn có thể sao chép, di chuyển, xóa các câu lệnh Tuy nhiên
khi bạn mới sử dụng cửa sổ soạn thảo mã lệnh, bạn sẽ có
Trang 15Chương 9 : Ngôn ngữ Visual Basic for Applications 11
Câu lệnh được xây dựng một cách tự động: Khi bạn gõ vào
một chút ít thành phần câu lệnh Visual Basic for
Applications, Microsoft Access sẽ tự động dò tìm và đưa ra - danh sách các chọn lựa thích hợp cho các thành phần còn lại của câu lệnh mà chúng ta dang gõ Thí dụ khi chúng ta
đang sử dụng một điều khiển trên biểu mẫu có kiểu là văn
bản (textbox) thì khi đó Microsoft Access sẽ hiển thị ra
một danh sách các thuộc tính và biến cố mà điều khiến đó
có
Access nhận ra
= Txi Message vị BeforeUpdate
—— Khi bạn gõ vào tên của một đối tượng và Microsoft
Option Compare Database -
Option Explicit Txt_Message End Sub - g°l g# AfterUpdate e& AllowAutoCorrect @& Application = eG AsianLineBreak -” ‘ga! AutoLabel e&! AutoTab
Private Sub Txt Message_BeforeUpdate (Canc
một danh sách xuất hiện chứa các phương ~~ thức và thuộc tính của đối tượng
Hình IX.7 : Cửa sổ soạn thảo bộ mã lệnh hỗ trợ xây dựng các lệnh
Trang 16Để cho cậu lệnh được đầy đủ chúng ta có thể chọn vào
một trong thành phần trong danh sách này hoặc tiếp tục gõ
tiếp câu lệnh Danh sách này sẽ mất đi khi ta nhấn phím ESC » Xem thơng tin nhanh: Khi bạn gõ vào tên một thủ tục hoặc
một phương thức, một lời mách (tip) sẽ tự động hiển thị
danh sách tham số (nếu có) cần thiết của một thủ tục hoặc cú pháp của một thủ tục
Ì ™, db? - form Hello (Code) Form +] [escse
Option Compare Database Option Explicit
Private Sub Form_Close()
End MsgBox(Prompt [Buttons As VoMsgBoxStyle = vbOkKOnhy, [726], [HelpFiid, (Contexay 1] As VoMsgBoxResult
Ly
we Ee |
Hình IX.8 : Cửa sổ soạn thảo bộ mã lệnh hỗ trợ tra cứu nhanh cú pháp của một lệnh/hàm
© Tự động kiểm tra cú pháp: Khi bạn di chuyển con nháy
sang một dòng mới, Visual Basic for Applications tự động
kiểm tra cú pháp của dòng lệnh hiện hành và sẽ hiển thị thơng báo lỗi nếu tìm thấy
© - Kỹ thuật kéo thả: Nếu bạn muốn di chuyển các dòng lệnh
từ một vị trí này sang một vị trí khác trong một cửa sổ soạn thảo mã lệnh hoặc qua lại giữa các bộ mã lệnh
(moduie), bạn không cần thiết phải thực hiện động tác sao
chép và dán ra Chỉ cần chọn các đoạn lệnh cần muốn di chuyển sau đó nắm kéo sang vị trí mới
© Khơi phục các hành động: Biểu tượng Undo Eg để có
khơi phục lại các hành động mà chúng ta đã thực hiện trong khi soạn thảo bộ mã lệnh Với nút lệnh này bạn có
Trang 17
Chương 9 : Ngôn ngữ Visual Basic for Applications 13
IV.3 Di chuyển qua lại giữa các thủ tục
Khi chúng ta đang viết các lệnh trong một thủ tục, chúng ta có thể di chuyển qua lại các thủ tục bên trong một cửa sổ soạn thảo mã lệnh bằng cách nhấn các tổ hợp phím Ctri+Page Down va Ctrl+Page Up Hon thế nữa, chúng ta có thể chọn đối tượng và các thủ tục hoặc biến cố trên các hộp đối tượng và hộp thủ tục
- Hộp đối tượng: Hiển thị tên của đối tượng được chọn Chọn mũi tên bên phải của hộp đối tượng để xem danh sách tất cả các đối tượng có liên quan đến biểu mẫu, sau đó chọn một đối tượng trong danh sách này
- — Hộp thủ tục: Hiển thị tên của thủ tục hiện hành tương
ứng với đối tượng bên hộp đối tượng Tương tự như hộp đối tượng, chúng ta có thể chọn một biến cố để tạo thủ tục biến cố cho đối tượng tương ứng Trong danh sách
các thủ tục này nếu biến cố nào đậm thì tại đó bạn đã tạo thủ tực biến cố rồi
db1 Form_Hello (Code) _ [Cmad_neno = Click Ỷ |
Option Compare Datanase nan Option Explicit Enter
Exit Private Sub Cmd_Hello_C1lilcotFocus
Txt_Hessage = "HelL1O HỘP Ai
End Sub KeyPress KeyUp LostFocus MouseDown _—_ MouseMove 7“ MouseUp
V_—~ Chọn các nút để xem một hoặc nhiều thủ tục tại
một thời điểm
Hình IX 9 : Cửa sổ soạn thảo bộ mã lệnh cho phép xem cùng lúc
Trang 18Với cửa sổ soạn thảo mã lệnh, chúng ta có thể xem một
thủ tục hoặc tất cả các thủ tục trong một biểu mẫu bằng các
nút Procedure View hay Full Module View bên dưới cửa sổ
Soạn thảo mã lệnh
IV.4 Sử dụng các điểm đánh dấu (Bookmark)
Khi làm việc với một ứng dụng lớn, thật dễ dàng để mất
đi các vị trí quan trọng cần xem khi chúng ta di chuyển qua lại
giữa các cửa sổ soạn thảo bộ mã lệnh hoặc thủ tục
Để giữ lại các vị trí trong các thủ tục mà chúng ta đã đi
qua nhằm sau này cần quay lại nhanh thì chúng ta cần phải tạo ra các điểm đánh dấu (bookmark) Để tạo điểm đánh dấu
cho dòng hiện tại chúng ta vao thyc don Edit > Bookmarks >
Toggle Bookmark Một khối hình chữ nhật màu xanh sẽ xuất hiện phía bên phải dòng lệnh hiện hành Muốn bỏ dấu điểm
đánh dấu này chúng thực hiện lại y như bước trên
[— Tao diém đánh dấu tại một dòng lệnh để di chuyển qua lại
nhanh hơn nh Thu_vien Fran es) l es
_- (Genera ‘=| [Closeonject
Function CloseObject (strContainerName As String) ~Ỉ
‘close open database objects
Dim dbs As Database, ctr 4s Container Dim intX ds Integer |
| Set dbs = CurrentDb
Set ctr = dbs Containers (strContainerNare}
Hình IX.10 : Của sổ soạn thảo bộ mã lệnh hiển thị các dòng lệnh
Trang 19
Chương 9 : Ngôn ngữ Visual Basic for Applications 15
Để di chuyển nhanh qua lại giữa các điểm đánh dấu đã
tạo chúng ta thực hiện:
_ Edit > Bookmark — Next/Previous Bookmark
_ Khi không muốn sử dụng các điểm đánh dấu nữa thi
chúng ta có thể xóa tất cả các điểm đánh dấu đã tạo trước
đó:
Edit —› Bookmark —› Clear All Bookmarks
TẠO HÀM ĐẦU TIÊN
Nếu chúng ta có thưởng sử dụng một biểu thức tính tốn
giống nhau cho nhiều biểu mẫu hay báo cáo Và biểu thức
này tương đối phức tạp thì chúng ta nên xảy dựng một hàm chung để tại một vị trí nào đó mà bất kỳ biểu mẫu hoặc báo
cáo đều có thể sử dụng chung được Khi viết một hâm chung
này có các điểm thuận lợi như sau :
e - Chắc rằng mỗi lần tính toán giá trị của các biểu mẫu
giống nhau hoàn tồn khơng bị sai lệch
e - Nếu cần thay đổi nào đó thì có thể quay lại sửa tại một
điểm mà thôi
e Khi thực hiện các phép tính phức tạp hoặc các điều kiện ràng buộc phức tạp thì chúng ta có thể sử dụng các cấu trúc điều khiển If, Select Case mot cach
thuận tiện
e _ Có ghi chú rõ ràng trong cơng việc mình đã làm bằng
ký tự nháy đơn (9
Chúng ta chọn một thí dụ đơn giản là viết một hàm kiểm tra xem một biểu mẫu hiện tại có đang được hiển thị hay là
Trang 20V.1 Tạo mới một hàm
Trong cửa sổ cơ sở dữ liệu chọn đối tượng làm việc là bộ mã lệnh (modules) chọn nút New để tạo mới một bộ mã lệnh
chuẩn (standar module)
e Trong cửa sổ soạn thảo mã lệnh Chọn thực đơn:
Insert — Procedure
° Ghi vào tên của hàm muốn tạo mới, chọn nút OK,
Tên hàm muốn tạo mới
ladd Procedure Loại hàm hoặc thủ tục
Hình IX.11 : Cửa sổ cho phép ghi tên hàm/thủ tục được tạo mới e - Thực hiện các phép tính tốn trong hàm thông qua các
Trang 21
Chương 9 : Ngôn ngữ Visual Basic for Applications 17
:*; db1 - Thu_vien (Code) ee x iBIxƒ
~ Ì(General) 2| jlsLoaded hs xỊ
Function IsLoaded(strFrmName As String) As Boolean 2l
‘Kiem tra xem mot bieu mau co hiến thi khong
‘Const conFormDesign = 0
Dim intX As Integer IsLoaded = False
For intX = 0 To Forms.Count - 1
If Forms (intX) FormNeme = strFrmName Then ue If Forms(ints).CurrentView <> conFormbesign Then ˆ
IsLoaded = True Exit Function - End If End If Next End Function
=F fees Hình IX.12 : Cửa sổ soạn thảo bộ mã lệnh
V.2 Biên dịch thủ tục hoặc hàm
V.3
Sau khi viết xong các đoạn lệnh tính toán trong hàm, chúng ta cần biên dịch lại để Microsoft Access có thể phát
hiện ra các sai sót ngồi ý muốn trong khi viết Chúng ta có
thể thực hiện một trong các chức nang sau: Debug > Compile
Microsoft Access sé bién dich tất cả các thủ tục trong tập tin cơ sở dữ liệu của Access Công việc này sẽ mất một vài
phút nếu bên trong tập tin cơ sở dữ liệu của Access có khá
nhiều các bộ mã lệnh Nếu trong quá trình biên dịch xảy ra lỗi
thì hệ thống dừng lại và sẽ thông báo lỗi cho chúng ta biết
dòng lệnh nào chứa lỗi và để chúng ta sửa chữa Sử dụng các hàm
Trang 22e _ Trong các thủ tục hoặc các hàm khác
e Nhu la một biểu thức tính tốn được định nghĩa trong một
truy vấn, một điều khiển trên biểu mẫu hoặc bao cao e Như là một điều kiện cho truy vấn hoặc tập lệnh
Thí dụ sau đây chúng ta sử dụng hàm IsLoaded để kiểm tra xem một biểu mẫu có mở ra chưa, với tên biểu mẫu sẽ do
người sử dụng đưa vào thông qua một điều khiển hộp văn bản trên một biểu mẫu
Nhập tên biểu mẫu muốn kiểm tra
: = Kiem_tra: Form
r Panis
Chon nut để kiểm tra biểu mẫu có mở chưa
Hình IX.13 : Màn hình dùng kiểm tra một biểu mẫu đã mô hay chưa,
có sử dụng đến hàm IlsLoaded
Trước tiên chúng ta phải xây dựng các điều khiển trên
biểu mẫu và đặt tên cho chúng rõ ràng, dễ hiểu Hộp văn bản để nhập tên biểu mẫu muốn kiểm tra có tên là Txt_Frmname, nút lệnh để thực hiện việc kiểm tra có tên là Cmd_Check
Trong biến cố Click của nút lệnh Cmd _Check chúng ta sẽ
_ gọi đến hàm IsLoaded, tuy nhiên để sử dụng hàm IsLoaded
thì chúng ta sẽ đưa vào cho hàm này một tham số chính là tên
Trang 23
Chương 9 : Ngôn ngữ Visual Basic for Applications 19
VI
khiển Txt_Frmname dùng làm tham số cho hàm IsLoaded như
sau:
eens) ae
¿¿|Cmd_Check wỊ: |JCnek Private Sub Cmd_Check_Click{)
Dim s_rlt As String
If IsLoaded(Txt_Frmname) Then
s rlt = "Bieu mau hien dang co mo”
Else
s_rit = "Bieu mau chua duoc mo” End If
MsgBox 3 _ rit, vbExc lamation
End Sub
[Ed Hình IX.14 : Cửa sổ soạn thảo bộ mã lệnh hiển thị các câu lệnh dùng
trong thủ tục biến cố Click của nút Cmd_ Check
CÁC NGUYÊN TẮC CƠ BẢN TRONG NGÔN NGỮ VISUAL BASIC FOR APPLICATIONS
Trong một ứng dụng đơn giản, bạn cần sử dụng Visual
Basic for Applications để tạo ra các thủ tục biến cố và các
hàm đơn giản Tuy nhiên nếu các ứng dụng của bạn trở nên
lớn hơn và rắc rối hơn thì khi đó bạn phải biết vận dụng ngôn
ngữ Visual Basic for Applications một cách có hiệu quả Trong
phần này sẽ giúp bạn các qui tắc cơ bản cho việc viết các
doan lénh Visual Basic for Applications trong Microsoft Access
VI.1 Các khái bộ mã lệnh chuẩn (Standard Module) va bo ma
lệnh lớp (Class Module)
Chúng ta lưu trữ các đoạn lệnh Visual Basic for
Applications trong cơ sở dữ liệu Microsoft Access Bộ mã lệnh
Trang 24
Cơ sở dữ liệu của chúng ta có thể chứa hai loại bộ mã
lệnh :
- Bộ mã lệnh chuẩn: Chúng ta sử dụng bộ mã lệnh chuẩn
để chứa các đoạn lệnh mà bạn có thể muốn chạy tại bất
kỳ vị trí nào trong ứng dụng của bạn Chúng ta có thể gọi là các thủ tục toàn cuc (public procedure) trong các bộ
mã lệnh chuẩn
Để tạo ra một bộ mã lệnh chuẩn mới, chúng ta có thể
thực hiện
Chọn thực đơn: Insert — Module Hoặc trên cơ sở dữ
liệu chúng ta chọn đối tượng làm việc Modules sau đó nhấn nút vào New
Danh sách các bộ mã lệnh chuẩn
tha db1-: Database (Access file In
fp |lsLoaded vf :
Function IsLoaded (str¥FrmNane = 1
‘Kiem tra xem mot bieu me
Const conFormbesign = 0 -
Dim intX As Integer zy
iv TsLoaded = False
Pater Khi eee ee T
Hình IX.15 : Cửa sổ hiển thị các bộ mã lệnh chuẩn
- Bộ mã lệnh lớp: Chúng ta sử dụng bộ mã lệnh lớp để có
thể tạo các đối tượng mới của riêng mình Các thủ tục và
hàm mà chúng ta định nghĩa trong một bộ mã lệnh lớp sẽ
trở thành các phương thức của đối tượng Các thuộc tính
Trang 25
Chương 9 : Ngôn ngữ Visual Basic for Applications 21
Property Let, Property Set sẽ trở thành các thuộc tính của
đối tượng
Để tạo mới một bộ mã lệnh lớp, chúng ta có thể thực hiện
Chọn thực đơn: Insert —> Class Module
Mỗi biểu mẫu và báo cáo trong cơ sở đữ liệu của chúng
ta có thể chứa đựng các bộ mã lệnh liên kết với nó Các bộ mã lệnh này cũng là các bộ mã lệnh lớp, nhưng chúng ta không thể lưu chúng tách rời ra khỏi các báo cáo hoặc các biểu mẫu mà chúng thuộc vào bên trong đó Bộ mã lệnh lớp có liên quan với một biểu mẫu thì được sử dụng một cách hữu hiệu nhất bởi vì chúng ta có thể sử dụng nó để tạo ra nhiều trường hợp đặc biệt của một biểu mẫu
Thông thường, chúng ta sử dụng bộ mã lệnh của biểu
mẫu hoặc báo cáo để chứa các thủ tục biến cố có liên quan
đến biểu mẫu hoặc báo cáo đó Mỗi bộ mã lệnh cũng có thể
chứa các thủ tục khác mà thuộc vào bên trong biểu mẫu hoặc
báo cáo
Bộ mã lệnh của báo cáo hoặc của biểu mẫu là một phần của báo cáo hoặc biểu mẫu Do đó, khi sao chép biểu mẫu hoặc báo cáo sang một tập tin cơ sở dữ liệu Access khác thì tự động bộ mã lệnh sẽ đi theo cùng với nó Khi chúng ta xóa đi một biểu mẫu hoặc báo cáo thì các bộ mã lệnh bên trong
nó cũng hiển nhiên bị xóa theo
VI.2 Các thành phần trong bộ mã lệnh
Một bộ mã lệnh có thể chứa đựng những thành phần sau:
- — 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 do người dùng định nghĩa
- — Thủ tục biến cố: Là các thủ tục tại các biến cố của biểu crs _— INGA mer eres áo cáo hoặc các biến cố của các điều khiển
TRƯƠNG 98 ung đc thực hiện khi biến cố đó xảy ra, ví dụ như
| | TH MIỄN! ụng nhấn chuột (click) trên nút lệnh Các
Trang 26thủ tục biến cố này sẽ được cất giữ ngay trong biểu mẫu
hoặc báo cáo tương ứng
- _ Thủ tục chung (general procedure) : Là các thủ tục mà
không trực tiếp liên quan đến một đối tượng hoặc một
biến cố nào cả Chúng ta có thể tạo các thủ tục chung này bên trong một bộ mã lệnh chuẩn hoặc bộ mã lệnh lớp Các thủ tục chung này có thể là một thủ tục, hoặc
một hàm VI.3 Thủ tục biến cố
Khi Microsoft Access nhận thấy có một biến cố xảy ra trên biểu mẫu, báo cáo, hoặc điều khiển, nó sẽ tự động thi hành các thủ tục biến cố đã tạo cho đối tượng và biến cố đó Nếu chúng ta muốn thực hiện một số các hành động nào đó để đáp lại một biến cố đặc biệt nào thì chúng ta phải đưa vào các đoạn lệnh cần thiết vào trong một thủ tục biến cố
Khi chúng ta tạo một thủ tực biến cố, Microsoft Access sẽ
tự động tạo cho chúng ta khuôn mẫu lệnh cho biến cố và đưa
nó vào trong bộ mã lệnh của biểu mẫu hoặc báo cáo Tên của một thủ tục biến cố dùng cho biểu mẫu hoặc báo cáo
được kết hợp bằng từ “Form” hoặc “Report, dấu “_” và tên của biến cố đó Thí dụ như nếu khi đóng một biểu mẫu lại chúng ta cần xử lý một số hành động nào đó thì các hành động này sẽ đưa vào trong biến cố đóng biểu mẫu, chúng ta có thể sử dụng thủ tục biến cố Close của biểu mẫu khi đó tên thủ tục biến cố Form_Close
Đối với một thủ tục biến cố của điều khiển cũng qui định như thế Thí dụ, nếu chúng ta có một nút lệnh tên là Cmd_Close dùng để đóng biểu mẫu lại Khi người dùng nhấn vào nó thì tự động nó sẽ đóng biểu mẫu lại, chúng ta sẽ sử dụng thủ tục biến cố Click của nút lệnh này khi đó thủ tục
biến cố có tên Cmd_Close_Click Nếu tên các điều khiển
Trang 27
Chương 9 : Ngôn ngữ Visual Basic for Applications 23
VI.4
thì khi tạo ra các thủ tục biến cố thì Microsoft Access sẽ thay
thế các ký tự đó bằng ký tự “_”
Lưu ý: Trong trường hợp sau khi đã viết xong các đoạn lệnh trong một thủ tục biến cố của một điều khiển và đã thực hiện
kiểm tra đúng, nhưng sau đó nếu vì một lý do nào đó mà
chúng ta quay lại sửa đổi tên của điều khiển thì cẩn thận thủ
tục biến cố đó khơng cịn đúng cho điều khiển nữa Tuy nhiên các lệnh bên trong biến cố vẫn còn được lưu trong bộ mnã lệnh
của biểu mẫu, để cho đúng chúng ta phải di chuyển các đoạn
lệnh vào đúng thủ tục biến cố của tên điều khiển mới thay
đổi
Tóm lại, trong Microsoft Access có hai dạng thủ tục biến
cố:
<FornvReport>_<Tên biến cố>
<Tên điều khiển>_<Tên biến cố>
Thủ tục chung
Microsoft Access sẽ tự động thi hành các thủ tục biến cố
khi một biến cố đó xảy ra Ngược lại một thủ tục dùng chung
chỉ được thi hành khi nào chúng ta gọi đến nó Thí dụ hàm là một thủ tục chung
Lý do mà chúng ta tạo ra các thủ tục chung là để 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 Một lý do khác nữa là
_ chúng ta muốn nhiều thủ tục biến cố khác nhau có thể cùng
dùng chung một hành động Một chiến lược lập trình tốt là đặt
tất cả các đoạn lệnh chung trong một thủ tục chung khi đó các thủ tục biến cố chỉ việc gọi đến nó khi muốn sử dụng
Điều này sẽ tránh được các đoạn lệnh trùng lặp lại và giúp
cho chúng ta — những người lập trình dễ bảo trì hơn
Chúng ta có thể tạo thủ tục chung trong các bộ mã lệnh
Trang 28trí nào trong ứng dụng thì chúng ta phải đặt nó tại vị trí bộ mã
lệnh chuẩn Nếu một thủ tục chung chỉ được sử dụng trong
duy nhất một biểu mẫu hoặc báo cáo thì chúng ta nên đặt nó ngay trong bộ mã lệnh của biểu mẫu hoặc báo cáo
VI.5 Tên mặc định và tầm ảnh hưởng của các loại thủ tục
Function Tén ham (Cac tham s6) As Kiểu di
Các lệnh
End Function
“Mitta | `” TênthỈiehỏáehm — | Có ảnh hưởng
Biến cố của | Private Sub Form_Tên biến cố() Tại biến cố của biểu
biểu mẫu Các lệnh mẫu
End Sub
Biến cố của | Private Sub Tân diều khiển_Tên biến cố() Tại biến cố của điều
End Sub
Bộ mã lệnh | Sub Tên thủ tục(Các tham số) Phụ thuộc vào kiểu của ứng Các lệnh của thủ tục hay
dụng hoặc hàm là Public hay
biểu mẫu End Sub Private mà nó có
ảnh hưởng toàn cục hay cục bộ
VỊ.6 Tạo và gọi các thủ tục
Trong phần này sẽ giải thích cú pháp giúp chúng ta tạo ra các hàm hoặc thủ tục và gọi thực hiện chúng trong ứng dụng
Khái niệm thủ tục trong Microsoft Access có thể là một thủ tục
con (Sub procedure) hoặc một thủ tục hàm (Function procedure)
s Thủ tục con: thực hiện các hành động nhưng không trả
về một giá trị nào đó và khơng thể dùng trong các biểu
Trang 29
Chương 9 : Ngôn ngữ Visual Basic for Applications 25 thức Thủ tục con có thể nhận các tham số vào Một thủ
tục biến cố là thủ tục con được gắn vào với các biểu mẫu
hoặc báo cáo
« ˆ Thủ tục hàm: trả về một giá trị, chẳng hạn như kết quả
của một phép tính Vì chúng sẽ trả về các giá trị, do đó
thủ tục hàm có thể sử dụng trong các biểu thức Giống
như thủ tục con, thủ tục hàm cũng có thể nhận tham số vào Thí dụ chúng ta có thể viết một hàm trả về ngày cuối của một tháng khi gởi vào một ngày bất kỳ
« = Cú pháp khai báo thủ tục:
[Public | Private] [Static] Sub Tên Thủ tục ([Tham số]! <Lệnh thực hiện>
End Sub trong đó:
+ Lệnh thực hiện: dãy các câu lệnh Visual Basic for Applications mà chúng ta muốn thí hành khi thủ tục
hoặc hàm đượ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 dùng tính toán bên trong
e Cú pháp khai báo các tham số trong thủ tục/hàm
[ByVal | ByRef] <tén bién> As kiểu di [= giá trị mặc định] Từ khóa Dùng mô tả ByVal Tham số được truyền theo giá trị
ByRef Tham số được truyền theo địa chỉ (Mặc định)
Tên biến Tên biến truyền vào thủ tục
Kiểu dl Kiểu dữ liệu của biến có thể là : Số, chuỗi, ngày
Giá trị mặc định Là một giá trị cụ thể được gán vào tham số trong trường hợp tham số gởi vào khơng có giá trị
se _ Cú pháp gọi một thủ tục
Trang 30hoặc Call Tên thủ tục ( tham s61, tham s62, .)
Thí đụ: Tạo một thủ tục phát ra nhiều tiếng beep, tham số nhận vào sẽ là số lần muốn phát ra tiếng beep
Sub MultiBeep (intBeeps as Integer)
Dim intX As Integer, IngY As Long For intX = 1 To intBeeps
Beep
For IngY = 1 To 1000 Next IngY
Next IntX End Sub
Để gọi đến thủ tục trên chúng ta sẽ dùng câu lệnh sau:
-MultiBeep 3 hoặc MuitiBeep intBeeps:=3
Khi đó thủ tục MultiBeep sẽ được thực hiện và nhận vào tham số một giá trị số 3 (3 lần Beep)
Lưu ý: Chúng ta không nên đặt dấu ngoặc đơn vào danh
sách các tham số khi gọi nó
© Cú pháp khai báo ham
[Public | Private] [Static] Function Tén Ham ([Tham số]) As <Gid trj tra về>
<Lệnh thực hiện>
Tên hàm = Giá trị trả về
End Function trong đó:
+ Giá trị trả về: giá trị dữ liệu mà hàm sẽ trả về sau khi đã
tính tốn bên trong :
Thi du:
Trang 31
Chương 9 : Ngôn ngữ Visual Basic for Applications 27 Function Canh Huyen (dblA As Double, dbiB As Double) As Double
+ Canh huyen c = căn bậc 2 (a^2 + b^2)
Canh_Huyen = Sqr(dbiA^2 + dbiB^2) End Function
Để sử dụng đến hàm trên, chúng ta sẽ dùng câu lệnh sau:
_ đbồl!C = Canh_Huyen(5, 7)
Khi đó giá trị trả về của hàm Canh_Huyen sẽ được đưa vào biến dbliC
Lưu ý: Khi sử dụng hàm chúng ta cần chú ý:
«Ổ Danh sách các tham số truyền cho hàm phải nằm trong cặp dấu ngoặc đơn
« Thơng thường thì câu lệnh cuối cùng 1 trong thủ tục hàm phải là câu lệnh mô tả giá trị dữ liệu trả về của hàm
« Khi gọi đến một hàm thì phải có một giá trị chứa đựng giá trị dữ liệu trả về của hàm
VI.7 Sử dụng danh sách tham số biến đổi
Thông thường thì khi sử dụng tham số cho thủ tục thì
chúng ta phải bắt buộc đưa vào đầy đủ tham số đã khai báo nếu thiếu thì hệ thống sẽ thông báo lỗi và không thực hiện Thí dụ, khi gọi đến hàm tính cạnh huyền thì chúng ta sẽ đưa
vào hai tham số là giá trị của hai cạnh Tuy nhiên đối với Visual Basic for Applications cung cấp cho chúng ta hai cách
để có thể sử dụng danh sách tham số thay đổi
- Tham số có thể bỏ qua (Optional Argument)
Chúng ta sử dụng từ khóa Optional khai báo phía
Trang 32ta không đưa vào tham số thì Microsoft Access Sẽ tự động
lấy một giá trị mặc định cho tham số đó Thí dụ nếu tham
số là kiểu dữ liệu số thì giá trị mặc định sẽ là không, khi là chuỗi thì sẽ là chuỗi rỗng tuy nhiên chúng ta vẫn có thể thay đổi giá trị mặc định này được
Thí dụ: Thủ tục nhận vào mã số lỗi và chuỗi lỗi và
sau đó thể hiện bằng lệnh MsgBox, tuy nhiên với tham số
mã lỗi có thể bỏ trống khi gọi Giá trị mặc nhiên khi bỏ
trống của tham số mã lỗi là 100
Sub DisplayError (strText As String, Optional intNum As integer
= 100)
if intNum =100 Then Msgbox strText Else
Msgbox intNum & “2? & strText
End If End Sub
Khi đó chúng ta có thể gọi thủ tục theo hai cách sau đây : DisplayError “invalid Entry” hodc
DisplayError “Invalid Entry”, 190
- $6 lugng tham số tùy ý
Để sử dụng số lượng tham số tùy ý có kiểu là Variant
(kiểu biến) chúng ta phải sử dụng từ khóa ParamArray Mục
đích khi sử dụng cách này là chúng ta chưa xác định được sẽ
gởi vào bao nhiêu tham số cho thủ tục khi gọi đến nó Bên
Trang 33
Chương 9 : Ngôn ngữ Visual Basic for Applications 29
truyền vào trong thủ tục, hàm này chỉ sử dựng cho các tham
số có kiểu Variant
Thí dụ : Viết một thủ tục hàm tính tổng của một danh
sách các con số gởi vào mà không thể xác định trước sẽ là bao nhiêu số
Function Total_Nums{ParamArray varNums As Variant) As Double
Dim dbfTotal As Double, var As Variant
For Each var in varNums dbiTotal = dbiTotal + var Next var
Total_Nums = dbiTotal
End Function
Khi đó chúng ta có thể gọi thủ tục hàm như sau :
dbiSum = Total_Nums (5, 6, 7) dbiSum = Total_Nums (5, 6, 7, 8, 9)
VI.8 Sử dụng biến
Trong quá trình xử lý tính tốn bên trong Visual Basic for Applications, chương trình cần phải sử dụng một số các biến
trung gian để lưu trữ các giá trị tính tốn Các giá trị dữ liệu
mà biến lưu trữ cũng giống như các giá trị dữ liệu mà các
bảng lưu trữ tuy nhiên giá trị của các biến này sẽ bị mất đi khi
ứng dụng của chúng ta chấm dứt hoạt động Microsoft Access -
cho phép chúng ta hai cơ chế khi sử dụng biến: khai báo biến
và không khai báo biến trước khi sử dụng Thông thường để cho chương trình tường minh, chúng ta nên khai báo các biến
Trang 34VI.9 Qui ước cách đặt tên các thành phần trong Visual Basic
for Applications
Trong quá trình viết các đoạn lệnh trong ngôn ngữ Visual
Basic for Applications chúng ta sẽ khai báo, đặt tên cho các
thành phần: thủ tục con, thủ tục hàm, biến, hằng chúng ta
phải tuân theo các qui định sau đây: - _ Bắt đầu phải là một ký tự
- - Không được chứa khoảng trắng hoặc các ký tự đặc biệt:
“, “@, “a” “$”, oun
- Độ đài tối đa là 255 ký tự
- Không chứa các từ khóa của ngôn ngữ Visual Basic for Applications (If, Do )
VI.10 Sử dụng đối tượng Docmd (Do Command)
Trong khi sử dụng ngôn ngữ Visual Basic for Applications chúng ta có thể thực hiện các hành động tương ứng trong công cụ tập lệnh bằng cách sử dụng các phương thức của đối tượng Doemad
Cú pháp chung:
Docmd.tén phương thức [Các tham số]
trong đó :
+ Tên phương thức: danh sách các phương thức tương ứng với các hành động trong tập lệnh
+ Các tham số: các tham số tương ứng của một phương thức
Thí dụ: để có thể đóng biểu mẫu Sinh viên chúng ta sẽ chọn phương thức Close của đối tượng Docmd
Trang 35
Chương 9 : Ngôn ngữ Visual Basic for Applications 31
Khi đó acForm là hằng số chỉ định loại đối tượng là biểu mẫu muốn đóng và chuỗi “Sinh vien” là tên của biểu mẫu sinh
viên Dấu phẩy “,” để ngăn cách các tham số trong trường hợp phương thức có nhiều tham số
Chúng ta có thể sử dụng hầu hết các phương thức của
đối tượng Docmd để thực hiện các hành động bên trong tập
lệnh Tuy nhiên có bảy (7) hành động bên dưới mà đối tượng Docmd không thể thực hiện được Nhưng Visual Basic for
Applications cũng cung cấp các hàm hoặc thủ tục tương đương
Hành động (Action) Visual Basic for Applications tương
đương MsgBox Hàm hoặc thủ tục Msgbox RunApp Ham Shell’
RunCode Lệnh gọi đến một hàm
SendKeys Lệnh SendKeys
SetValue Lệnh gán giá trị trực tiếp
StopAllMacros Stop hoặc End
StopMacro Exit Sub hoặc Exit Function
VII CÁC CẤU TRÚC ĐIỀU KHIỂN CHƯƠNG TRÌNH
Các cấu trúc điều khiển là các cấu trúc mà cho phép người lập trình có thể điều khiển thứ tự vận hành của các câu
lệnh bên trong chương trình khi chúng được thực hiện Bình
thường nếu khơng sử dụng các cấu trúc điều khiển thì chương
trình sẽ được thi hành tử trên xuống dưới theo thứ tự tuần tự
mà chúng ta đã viết Visual Basic for Appiications cũng là
Trang 36VII.1 Cấu trúc Nếu thì
Cấu trúc này cho phép chúng ta kiểm tra một điều kiện
đúng hay sai khi đó sẽ thực hiện các hành động tương ứng
Đối với cấu trúc If có các phát biểu như sau:
e = H <đều kiện> Then <lệnh>
Ý nghĩa: Nếu điều kiện đúng thì một lệnh sẽ được thực
hiện
hoặc /
e <đểu kiện> Then
<các lệnh>
End tf
Ý nghĩa: Nếu điều kiện đúng thì các lệnh sẽ được thực
hiện
Thông thường các điều kiện là các biểu thức so sánh
chứa các toán tử so sánh >, <, =, >=, <= va cdc giá trị cần so sánh, khi đó nó sẽ trả về một giá trị logic là đúng
hoặc sai Visual Basic for Applications cũng có thể hiểu
được giá trị 0 là sai và khác không là đúng
Hoặc
e lf<điều kiện> Then
<các lệnh 1> Else
<các lệnh 2> End ff
Ý nghĩa: Nếu điều kiện đúng thì các lệnh thứ nhất sẽ thực hiện, còn ngược lại nếu điều kiện sai thì các lệnh thứ
Trang 37
Chương 9 : Ngôn ngữ Visual Basic for Applications 33
Hoặc
e H <diểu kiện1> Then
<các lệnh 1> Else
lÝ <điều kiện2> Then <các lệnh 2> Else
End If
End If
Ý nghĩa: Nếu điều kiện thứ nhất đúng thì các lệnh thứ nhất sẽ thực hiện các lệnh thứ nhất, ngược lại nếu điều
kiện thứ nhất sai và điều kiện thứ hai đúng thì sẽ thực
hiện các lệnh thứ hai cho đến khi nếu tất cả các điều kiện đưa ra đều sai hết thì các lệnh thứ n sẽ được thực
hiện
Hoặc
© IWfType0f <tên biến> ls kiểu dữ liệu Then <các lệnh> : End If
Ý nghĩa : Nếu loại đữ liệu của một biến là kiểu gì thì các
lệnh sẽ được thực hiện
Các thí dụ:
Hai thí dụ sau đây là tương đương nhau Hàm Now trả về
ngày hiện hành của hệ thống Trong thí dụ này kiểm tra giá trị
của biến anyDate có nhỏ hơn ngày hiện hành không, nếu
đúng thì thay đổi giá trị của biến đó là ngày hiện hành
Trang 38Hoặc
W anyDate < Now Then
anyDate = Now
-End If
Khi thực hiện từ hai lệnh trở lên thì chúng ta phải bắt
buộc sử dụng cú pháp !f End If Như thí dụ trên nhưng nếu có thêm lệnh in ra cửa sổ bẫy lỗi
W anyDate < Now Then
anyDate = Now
Debug.Print anyDate ‘in giá trị anyDate ra cửa sổ Debug
End ff :
Thí dụ kiểm tra một số intNum là chắn hoặc lẻ
if (intNum Mod 2) = 0 Then Msgbox “Số chấn” Else
Msgbox “Số lẻ”
End If
Thí dụ kiểm tra một số intNum là âm, dương hay bang
Trang 39
Chương 9 : Ngôn ngữ Visual Basic for Applications 35 VII.2 Cấu trúc chọn lựa
Chúng ta hiểu rằng cấu trúc chọn lựa này cũng giống như cấu trúc If Elself, nghĩa là khí đó sẽ có nhiều trường hợp hon cau tric If
e Select Case biểu thức
Case gid tri 1
<lénh 1> [ Case giá trị 2 <lệnh 2> Case Else <lệnh n> ] End Select trong đó: các giá trị có thể là
- _ Exp1 To Exp2: Chỉ miền giá trị từ giá trị 1 đến giá trị 2
- Is <các toán tử so sánh > <biểu thức>
Thí dụ: Xét một số nguyên nằm trong miền giá trị nào
Select Case intNum
Case 1 To 5 * số nằm trong miền giá trị [1 5] MsgBox “Between 1 and 5"
Case6,7,8 — “là các số 6,7, 8
MsgBox "Between 6 and 8"
Case Is > 8 * số lớn hơn 8
MsgBox "Greater than 8" Case Else *“ số nhỏ hơn 0
MsgBox "Less than 0"
End Select
VII.3 Cấu trúc lặp
Khi một công việc được làm đi làm lại nhiều lần thì khi đó
Trang 40hiện này có thể xác định trước được hay là không Visual Basic for Applications chia vòng lặp ra làm hai loại:
+ Số lần lặp không xác định trước:
e Do Loop
Do [{While | Until} <diéu kién lặp>]
<Các lệnh> [Exit Do] Loop Hoặc — Do < Các lệnh> {Exit Do]
Loop [{While | Until} <didu kién lap >] |
Hoặc
While <điều kiện lặp> < Các lệnh>
Wend
trong đó: -:
- Điều kiện lặp: là một biểu thức so sánh đúng hoặc sai để cho vòng lặp tiếp tục thực hiện hay ngưng
- _ Các lệnh: Các lệnh bên trong sẽ được lặp
- Exit Do: Thoat khỏi vòng mà không phải kiểm tra
điều kiện lặp khi đó là đúng hoặc sai
Diễn giải rõ hơn:
- Đo While <điều kiện lặp> hoặc While <điều kiện
lặp> hoặc Loop While <điều kiện lặp> : Y nghia la