Ví dụ: hàm Msgbox 1.4] Đơn thể: là nơi chứa các chương trình con, có 2 loại đơn thể 1.4.1 – Đơn thể dùng chung: những chương trình con được viết trong đơn thể này và được khai báo bằng
Trang 1Chương 6: MODULES
1) TỔNG QUAN VỀ VISUAL BASIC
1.1] Chương trình: là tập hợp các lệnh được sắp xếp theo một trình tự nhất định
nhằm giải quyết một bài toán hoặc một vấn đề
1.2] Thuật giải: là cách giải quyết một vấn đề bằng ngôn ngữ đời thường
Ví dụ: giải và biện luận phương trình bậc nhất Ax + B = 0
• Nhập A, B
• Xét A
A = 0 xét B ( B = 0 phương trình vô số nghiệm, B≠ 0 vô nghiệm)
A ≠ 0 phương trình có một nghiệm x = -B/A
• Xuất kết quả và kết thúc
1.3] Chương trình con: trong Visual Basic có hai loại chương trình con
1.3.1 – Thủ tục (sub): dùng để giải quyết một vấn đề nhưng không có giá trị trả
về Ví dụ: hành động Msgbox
1.3.2 – Hàm ( Fuction ): dùng để giải quyết một vấn đề tương tự thủ tục nhưng có
trị trả về Ví dụ: hàm Msgbox
1.4] Đơn thể: là nơi chứa các chương trình con, có 2 loại đơn thể
1.4.1 – Đơn thể dùng chung: những chương trình con được viết trong đơn thể này
và được khai báo bằng từ khóa Public thì có thể được dùng trong toàn bộ ứng dụng Để
mở đơn thể dùng chung: chọn đối tương Modules New
1.4.2 – Đơn thể của forms hay reports: những chương trình con bên trong chỉ
được sử dụng cho forms hay reports đó mà thôi Được khai báo bằng từ khóa Private Để
vào đơn thể: mở forms hay reports ở chế độ thiết kế view / code
1.5] Biến và kiểu dữ liệu:
1.5.1 – Kiểu dữ liệu:
• Số nguyên: byte (0 255), integer ( -32768 32767), long ( - 2 tỉ + 2 tỉ )
• Số thực: single, double
• Kiểu logic: boolean
• Kiểu chuổi: string
• Ngày tháng: date
• Variant: là kiểu có thể chứa được các kiểu khác, đặc biệt chứa được giá trị null
• Kiểu đối tượng: là kiểu đại diện cho forms, reports, control
1.5.2 – Khai báo biến:
Cú pháp: Public ( Dim ) < tên biến > [ as < kiểu dữ liệu >]
Giải thích:
• Public: dùng để khai báo biến toàn cục và được viết trong đơn thể dùng chung
• Dim: dùng trong khai báo biến cục bộ, tằm hoạt động chỉ trong chương trình được khai Nếu khai báo ở đầu đơn thể thì sẽ được dùng cho toàn bộ đơn thể
• Nếu bỏ qua phần khai báo kiểu thì biến đó mặc định là kiểu Variant
• Mỗi biến ứng với một kiểu dữ liệu, một Dim có thể cho nhiều biến
1.6] Các phép toán thường dùng:
Trang 21.6.1 – Phép gán: =
cú pháp: [set ( biến đối tượng)] < tên biến > = < trị hay biểu thức >
1.6.2 – Toán tử số: +, -, *, / (chia hết), \ (lấy nguyên), mod (lấy dư )
1.6.3 – Toán lũy thừa: ^
1.7] Các hàm thường dùng:
1.7.1 – Hàm nhập dữ liệu từ bàn phím:
Cú pháp: = inputbox (< chuỗi thông báo >, < tiêu đề >, < giá trị mặc định >)
Ví dụ: a = inputbox (“ nhap so a”, “ Giai PT”, 0)
1.7.2 – Hàm xuất thông báo:
cú pháp: =msgbox(< chuỗi thông báo>, <số 1 + số 2 + số 3>, < tiêu đề>) trả về
Giải thích:
• Số 1: biểu tượng thông báo ( bội số 16 thể hiện biểu tượng)
• Số 2: loại nút có trong thông báo (không có là nút OK, 1 hoặc 4 là 2 nút yes/ no)
• Số 3: đặt con trỏ tại nút nào mặc định (không có là nút đầu, bội số của 256 di chuyển)
• Trả về: trả về số 6 hoặc 7
• Không có ( ) hàm là thủ tục
Ví dụ: msgbox (“chao ban”, 48, “ lop 04A”)
1.7.3 – Các ghi chú
• Cài đặt việc kiểm tra biến tường minh (Option Explicit): vào màn hình đơn thể tools / option / đanh dấu check tại requuire varible declaration
• Để xuống dòng trong Msgbox ta dùng lệnh: & vbcrlf
• Để đổi chuỗi thường sang hoa: ucase (chuỗi)
• Để ghi chú nội dung trong đoạn code: ‘ câu nội dung
2) CẤU TRÚC ĐIỀU KHIỂN
2.1] Cấu trúc tuần tự: chương trình thi hành các dòng lệnh từ trên xuống dưới 2.2] Cấu trúc rẻ nhánh ( if )
1 If < ĐK > then ĐK: điều kiện
Khối lệnh End if
Nếu ĐK đúng thì thực hiện khối lệnh hay 1 lệnh
2 If < ĐK > then < 1 lệnh >
3 If < ĐK > then
Khối lệnh 1 Else
Khối lệnh 2 End if
Nếu ĐK đúng thì thực hiện khối lệnh
1, ngược lại thực hiện khối lệnh 2
Khối lệnh: có thể là biểu thức hay một
cấu trúc khác
4 If typeof < biến đối tượng > is <kiểu
đối tượng> then
Khối lệnh End if
Dùng cho biến đối tượng là form, report hay control Những biến đối tượng thuộc kiểu đối tượng sẽ được thi hành khối lệnh
Trang 32.3] Cấu trúc chọn lựa case ( select case ):
Select case < biểu thức >
Case < GT 1 >:
Khối lệnh 1 Case < GT 2 >:
Khối lệnh 2
………
Case < GT n >:
Khối lệnh n Case else
Khối lệnh n’
GT: giá trị ( thường là hằng số), có thể có nhiều giá trị trên 1 case và giá trị được biểu hiện từ đầu đến cuối ( 1 to
n ) Nếu biểu thức bằng với giá trị case nào thì khối lệnh đó được thực hiện, nếu biểu thực không bằng với giá trị
case nào thì khối lệnh của case else được thực hiện
Hàm đổi ngày thành thứ trong tuần: weekday( Date )
Trị trả về: 1 là chủ nhật
2 là thứ hai
………
7 là thứ bảy
2.4] Cấu trúc vòng lặp
For… next For < Biến đếm > = < GT đầu >
to < GT cuối > [ step < bước tăng>]
Khối lệnh [ exit for ] Next < biến đếm >
Khi biến đếm chưa lớn hơn GT cuối khối lệnh được thi hành Mặc định bước tăng là 1, sau 1
1 lặp biến đếm tăng theo bước tăng Exit For thoát vòng lặp vô điều kiện
Do while … loop Do while < ĐK >
Khối lệnh [ exit do ] Loop
Khi điều kiện đúng khối lệnh thi hành cho đến khi điều kiện sai thì dừng Exit do = exit for
Khối lệnh [ exit do ] Loop whlie < ĐK >
Khối lệnh được thi hành lần 1 rồi kiểm tra điều kiện Nếu
ĐK đúng thì thi hành tiếp và dừng lại khi ĐK sai
Duyệt đối tượng For each < biến đối tượng > in
<kiểu đối tượng>
If typeof < biến đối tượng > is
<kiểu đối tượng> then
Lệnh Next < biến đối tượng>
Dùng để duyệt các đối tượng trên tập hợp đối tượng Như lebel, textbox,…
2.5] Hàm và thủ tục
2.5.1 – Khai báo
a) Thủ tục:
Private (public) sub < tên thủ tục > (Danh sách tham số)
Phần lệnh
Exit sub
End sub
Trang 4b) Hàm:
Private (public) function < tên hàm > ( danh sách tham số ) as < kiểu trị trả về >
o Phần lệnh
o Tên hàm = ( giá trị / biểu thức )
o Exit function
End function
2.5.2 – Lệnh gọi
a) Thủ tục:
a.1 – Trong đơn thể và không có tham số: đặt dấu nháy trong thủ tục nhấn F5
a.2 – Gọi thủ tục từ một thủ tục khác: có hai cách
• call < tên thủ tục >(danh sách tham số) VD: call HoanVi(a,b)
• < tên thủ tục > (danh sách tham số) VD HoanVi (a,b)
b) Hàm:
a.1 – Thử hàm: Bấm Ctrl_G gõ theo cú pháp: ? < tên hàm > ( DSTS thực sự) enter VD: ?max2so (2, 5)5
a.2 – Gọi hàm: thường thì gọi hàm trong một biểu thức, gán giá trị trả về cho một biến, hay so sánh < tên biến> = < tên hàm > (DSTS)
2.5.3 – Tham số và ý nghĩa:
a) Tham số: có hai loại (tham số hình thức: dùng khi khai báo, và tham số thực sự: dùng khi gọi hàm)
b) Tham biến – tham trị:
b.1 – Tham biến: là loại biến số sẽ bị thay đổi nếu trong hàm hay thủ tục có sự thay đổi
Trước tham biến cần có câu lệnh byref Mặc định là tham biến
b.2 – Tham trị: Là loại biến số không bị thay đổi Trước tham trị cần có câu lệnh byval
public sub S1( a as byte, b as byte)
a = a * 10
b = b * 10
end sub
sub S2( byval a as byte, byval b as byte)
như sub s1
public sub S3( n1 as byte, n2 as byte)
n1 = 1 n2 = 5 call S1(n1, n2)\ S2(n1, n2) msgbox “n1: ” & n1 ( 10\ 1) msgbox “n2: ” & n2 ( 50 \ 5) end sub
2.5.4 – Các trường hợp đặc biệt
a) Tham số có số lượng tùy ý ( tham số mãng):
paramaray < tên biến >( chỉ số ) as Variant
Tham số mãng được dùng khi số lượng tham số tùy ý không biết trước nhưng có cùng kiểu dữ liệu Tham số này có kiểu là Variant
Vd: public Function Tong (paramaray so ( ) as variant ) as integer
b) Tham số tùy chọn ( optional argument ):
Khi khai báo các tham số này luôn được đặt sau cùng, trước tên tham số có từ khóa Optional, sau phần kiểu là giá trị mặc định khi tham số này không được truyền vào VD
sub ThongBao( tuoi as byte, optional Ho as string = “ Le”, optional Ten as string = “T”)
Trang 53)LẬP TRÌNH VỚI CÁC ĐỐI TƯỢNG TRONG ACCESS
3.1] Các khái niệm
3.1.1 – Đối tượng: là những thực thể độc lập trong ứng dụng
3.1.2 – Thuộc tính: là các tính chất trạng thái của đối tượng
3.1.3 – Phương thức: là các hành động đặc thù của một đối tượng.
3.1.4 – Thủ tục sự kiện ( Event Procedure): là một thủ tục đặc biệt được gán cho
một sự kiện Khi sự kiện xảy ra thì thủ tục điều kiện được thi hành Cách mở:
Cách 1: Tại tính chất của sự kiện click … rồi chọn code …
Cách 2: Tại tính chất của sự kiện chọn event procedure rồi click …
3.2] Các đối tượng thường dùng trong lập trình đối tượng
3.2.1 – Application: đại diện cho ứng dụng hiện hành đang làm việc
3.2.2 – Form hay report: là form hay report cụ thể bên trong ứng dụng.
3.2.3 – Control: là một control cụ thể bên trong form hay report nào đó.
3.2.3 – Docmd: đây là một đối tượng đặc biệt của ACCESS, nó chứa các phương
thức tương ứng với hầu hết các hành động trong Macro
3.3] Các tập hợp thường dùng:
3.3.1 – Forms: là tập hợp chứa các form đang được mở
3.3.2 – Report: là tập hợp chứa các report đang được mở
3.3.3 – Control: là tập hợp các control trong một form hay report hiện hành
3.4] Cách tham chiếu
Tham chiếu đến Cú pháp Ví dụ
1 thành phần ( TP ) trong tập
hợp ( TH )
< Tên TH > ! < Tên TP > Forms!BT1
1 thuộc tính của đối tượng <Tên ĐT>.<Tên TT> = <GT> Me.txtA.enabled = true
1 control trong subform <fomrs> ! <Tên Main> ! <Tên
sub> Forms!Fr1!Fr1_sub!txtDT
1 TT trong subform < tham chiếu đến control>
Form.<tên TT> Forms!Fr1!Fr1_sub!txtDT
enabled
Cách thi hành 1 phương thức < tên ĐT>.< phương thức>
[ danh sách tham số ] Docmd.gotocontrol, , acFirst
Cách sử dụng biểu thức điều
kiện trong hàm thống kê
“ tên field = ‘ ” & < tên biến >
& “ ‘ “ Đối với biến kiểu chuỗi
“ tên field = # ” & < tên biến >
& “ # “ Đối với biến ngày tháng
“ tên field = ” & < tên biến > Đối với biến kiểu số
3.5] Các thuộc tính và phương thức thường dùng:
3.5.1 – Đối tượng Application: có hai phương thức
• Application.CloseCurrentDatabare: thoát về Access ( đóng ứng dụng )
• Application.quit: thoát về Window (đóng Access)
3.5.2 – Đối tượng Form:
a) Thuộc tính:
• CurrentRecord: trả về số thứ tự mẫu tin hiện hành
Trang 6• NewRecord: trả về mẫu tin mới của ứng dụng
• Dirty (true / false): mẫu tin có bị sữa không
• Me: thuộc tính dùng để đại diện cho một form hay report chứa đoạn code đang thi hành
• Parent: đại diện cho đối tượng cha của đối tượng đang xét (dùng cho subform muốn tham chiếu ra Mainform)
b) Phương thức:
• Setfocus: dùng để chọn một form hiện hành
• Requery: dùng để tái truy vấn dữ liệu nguồn của form
• Recalc: dùng để tính toán lại control tính toán trên Form
3.5.3 – Control:
a) Thuộc tính: forecolor, …
b) Phương thức: setfocus, requery
3.5.4 – Docmd ( tài liệu ngoài)
4) Các loại thanh lệnh: có 3 loại
4.1] Các loại thanh lệnh
4.1.1 - Thanh thực đơn ( Menubar): thanh thực đơn, thực đơn, mục chọn, thực đơn con
(sub menu)
4.1.2 - Thanh công cụ ( toolbar):các nút công cụ (mục chọn)
4.1.3 - Thực đơn tắt ( short cut menu / popup): xuất hiện khi click phải gồm mục chọn
và các thực đơn con
4.2] Các thao tác với thanh lệnh
4.2.1- Tạo thanh lệnh: view / toolbar / customize
• Trang toolbar new đặt tên ok
• Xác định loại thanh lệnh: chọn tên thanh lệnhproperties tại type chọn (menubar, toolbar, popup)
4.2.2 – các thao tác khác
a) xóa thanh lệnh: chọn thanh lệnh click delete
b) đổi tên: chọn thanh lệnh rename
4.3] Tạo thực đơn mục chọn
4.3.1 – Tạo thực đơn:trang commands bên trái chọn new menu bên phải drag
mouse new menu vào thanh lệnh
4.3.2 – Tạo mục chọn
a) Dùng để mở các đối tượng: table, query, form, report, macro, …
Trang commands bên trái chọn nhóm đối tượng (all form, all report, …) bên phải chọn đối tượng và drag mouse vào thanh lệnh
b) Là các chức năng có sẵn của hệ thống:
Trang commands bên trái chọn nhóm chức năng ( file, edit, record, …) bên phải chọn chức năng và drag mouse vào thanh lệnh
c) Khi mục chọn dùng để thi hành một đoạn lệnh:
Điều kiện:
• Các đoạn lệnh phải được xây dựng thành một hàm
Trang 7• Hàm đó phải nằm trong đơn thể dùng chung modules
Thao tác:
• Trang commands bên trái chọn chức năng File bên phải chọn custom và drag mouse vào thanh lệnh
• Gọi hàm: chọn mục chọn click phải properties tại mục on action gọi hàm
theo cú pháp : = <tên hàm > ([tham số])
4.3.3 – Tạo thực đơn tắt
Trang toolbar click chọn shortcut menu xuất hiện thanh thực đơn nhanh tạo thực đơn hay mục chọn tương tự như các thanh trước
4.4] Kết thanh lệnh vào ứng dụng
4.4.1 – Kết thanh lệnh vào form / report : ở chế độ thiết kế trang order tại các thuộc
tính (menubar, toolbar, shortcut menubar) chọn tên thanh thực đơn
4.4.2 – Kết thanh lệnh vào ứng dụng: tools / startup
•Application title: tên ứng dụng
•Application icon: biểu tượng ứng dụng
•Menu bar: chọn tên thanh thực đơn ( thực đơn chính của ứng dụng )
5) TẠO USERNAME VÀ PASSWORD
5.1] Quyền hạn
a) CSDL: gồm hai bảng
NguoiDung: MAND, TENND, MATKHAU, MANHOM)
Nhom: MANHOM, TENNHOM, QUYENHAN
6) CÀI ĐẶT TIẾNG VIỆT TRONG ACC
6.1] Các yêu cầu cài đặt
- Yêu cầu bộ font phải có font VK San Senf
- Yêu cầu về thư việc đọc: VNCMB.dll
6.2] Đưa thư viện vào ứng dụng
Mở ứng dụng mở màn hình code tool / ref… / brow / chọn tên tập dll
Dùng lệnh: tạo tập tin dat và soạn nội dung regsvr 33 vncmd.dll /s
Lưu ý: thư viện đọc, tập tin và ứng dụng nên để trong một thư mục
6.3] Lệnh thay đổi và trả lại font
Thay đổi: setcaptionmenufont < tên font >, < kích cỡ > FW_normal
Trả lại: retorecaptionmenufont và retorewidownsfont
Lưu ý: Khi dùng bộ font VK San Senf thì hàm msgbox đổi thành vnmsgbox
6.4] cách chuyển mã Font trong window
•Chọn đoạn văn bản cần chuyển mã copy
•Mở unicode ở chế độ công cụ
• Tại mục nguồn: chọn bộ font hiện hành của đoạn văn bản
• Tại mục đích: chọn bộ font mới của đoạn văn bản
• Click chuyển mã
•Trở lại vùng soạn thảo paste chọn lại font phù hợp với bộ gõ
Trang 8Chương 7: Ghi Chú
1) CÁC GHI CHÚ VỀ THUỘC TÍNH
1.1) Một số thuộc tính
Listindex: chọn thứ tự dữ liệu trên list, combobox (-1 chưa chọn, 0 dòng 1, 1 dòng 2, …) Selected(n): cho biết dòng thứ n được chọn
Itemdata (n): cho giá trị dòng thứ n được chọn
2) GÕ RỐI VÀ XỬ LÝ TRONG CHƯƠNG TRÌNH
2.1] Các loại lỗi trong chương trình:
LỖI NGUYÊN NHÂN KHẮC PHỤC
Biên dịch
chương trình Xảy ra khi ta dùng các câu lệnh sai cú pháp.VD: cấu trúc If thiếu end if,
Kiểm tra lại cú pháp câu lệnh tại dòng báo lỗi trong code của chương trình
Thực thi
chương trình
Xảy ra trong lúc chương trình đang thi hành VD: lỗi chia cho 0, khi cập nhật dữ liệu mà
vi phạm các ràng buộc trên CSDL Logic chương
trình Không phát sinh lỗi nhưng kết quả chương trình cho giá trị sai, có thể do thuật toán sai
hoặc Cấu trúc chương trình viết sai
2.2] Gõ rối chương trình
Để chạy từng bước trong chương trình F8, Để tạo điểm dừngF9 ( click chuột tại dòng dừng tại thanh thướt)
Để hỏi giá trị của biến hay biểu thức: CTRL_G? <tên biến> enter
Chèn hiển thị Watches và hiển thị giá trị: view / watch window click phải tại vùng trống và chọn thêm, xoá sữa
2.3] Xử lý lỗi trong chương trình
2.3.1 – Dùng đối tượng Err : ta dùng đối tượng Err với các thuộc tính
Err.number: trả về mã số lỗi Err.decription: trả về câu thông báo lỗi
2.3.2 – Sử dụng câu lệnh On Error
Dạng – cú pháp Ý nghĩa Ví dụ
On Error Resume Next ( dùng
khi ta không quan tâm đến lỗi)
sau khi đặt bãy lỗi này thì các lệnh phía sau nếu có lênh gay ra lỗi thì chương trình sẽ bỏ qua lệnh đó và thi hành những lệnh tiếp theo
On Error Goto < nhãn lỗi >
(1)
< phần lệnh >
(2)
Exit sub / exit function
(3)
< Nhãn lỗi >: (4)
< lệnh xử lý lỗi > (5)
Dùng để bắt lỗi ngoài ý muốn,
sau khi đã sử lý lỗi bằng tay Để
Sau dòng 1 mà các câu lệnh
bên dưới có gay ra lỗi thì chương trình sẽ không thi hành tiếp và nhảy đến nơi có đặt nhãn lỗi rồi thi hành các lệnh bên dười nhãn lỗi
Dòng 3: dùng để thoát
chương trình con khi câu lệnh không gay lỗi ( không thi hành phần sử lý nhãn lỗi
On Error Goto Loighi
Docmd.runcommand accmdsaverecord End sub
Loighi:
Msgbox “ khong hop le”
Trang 9bắt lỗi ta đưa mã lỗi và câu thông báo vào một table