Visual Basic là ngôn ngữ lập trình cho Access, chúng ta sử dụng nó như cách sử dụng tập lệnh
để có thể lien kết các đối tượng trong ứng dụng với nhau nhằm tạo một hệ thống chương trình
mạch lạc. Điểm khác biệt là Visual Basic cung cấp nhiều sức mạnh và mềm dẻo hơn tập lệnh.
139 trang |
Chia sẻ: zimbreakhd07 | Lượt xem: 1570 | Lượt tải: 1
Bạn đang xem trước 20 trang nội dung tài liệu Giáo trình Access - Chương 8: Modules - Lập trình, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
GIÁO TRÌNH ACCESS – CHƯƠNG 8:
MODULES _LẬP TRÌNH
I. BỘ MÃ LỆNH (MODULES)
1) Visual Basic là gì ?
Visual Basic là ngôn ngữ lập trình cho Access,
chúng ta sử dụng nó như cách sử dụng tập lệnh
để có thể lien kết các đối tượng trong ứng dụng
với nhau nhằm tạo một hệ thống chương trình
mạch lạc. Điểm khác biệt là Visual Basic cung
cấp nhiều sức mạnh và mềm dẻo hơn tập lệnh.
2) Khi nào sử dụng tập lệnh và Visual Basic :
Bạn có thể sử dụng Visual Basic thay thế cho 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ì vì
tập lệnh là một đối tượng hoàn toàn tách
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ức đựng một số
lớn các tập lệnh trong 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 Basic thì 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 di chuyển các biểu mẫu hay các báo cáo
sang một tập tin CSDL khac trong Access
thì các đoạn lệnh này cũng sẽ mang theo
cùng.
Tạo ra các hàm của riêng mình : Sử dụng
VB bạn có thể tạo ra các hàm của riêng
mình dung để thực hiện các phép tính vượt
quá khả năng của một biểu thức hay thay thế
một biểu thức quá phức tạp mà bạn đạ viết
bên trong ứng dụng.
Che đậy 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 và 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 Access. Sử dụng VB, bạn có
thể phát hiện các lỗi này khi nó xảy ra và sẽ
hiển thị thông báo lỗi của riêng mình bằng
tiếng Việt hay có thể buộc ứng dụng làm
một việc khác.
Tạo hay sửa các đối tượng : Chúng ta
thường tạo hay sửa các đối tượng bằng cách
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 VB để thực hiện.
Thực hiện các hàm 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 Windows hay
MS-Dos ngay bên trong ứng dụng 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 Access.
Sử dụng VB 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 dữ liệu động
(DDE-Dynamic Data Exchange) để liên lạc
với các ứng dụng khác trên Windows nhu
Excel.
Truy cập các bản ghi (records) : Chúng ta sử
dụng VB để có thể truy cập vào từng dòng
trong một bản ghi và thực hiện các hành
động thêm, xóa, sửa mà không cần sử dụng
công cụ truy vấn.
3) Cách tạo :
Phần khai báo
Hộp đối tượng
Hộp thủ tục
Chọn mục Modules Nhấn nút NewHiện hộp
thoại :
Câu lệnh chia thành 3 loại : Lệnh khai báo, lệnh
gán và lệnh xử lý.
Nút xem toàn bộ thủ tục
Phần thủ tục
Nút xem thủ tục
Thông thường mỗi dòng là một lệnh. Nhưng ta
có thể viết nhiều lệnh trên một dòng bằng cách
phân cách chúng bằng dấu “;” hay một lệnh có
thể viết trên nhiều dòng bằng cách sử dụng ký
tự nối câu lệnh”_’ở cuối mỗi dòng.
Thủ tục là một dãy các câu lệnh để thực hiện
một nhiệm vụ hay tính toán một giá trị nào đó.
Một tập hợp các lệnh khai báo, các thủ tục
được lưu trữ chung trong một đơn vị gọi là bộ
mã lệnh hay Modules. Có hai loại bộ mã lệnh :
Bộ mã lệnh chuẩn (Standard Modules) và bộ
mã lệnh lớp (Class modules). Mỗi thủ tục trong
Modules có khả năng là một hàm, thủ tục biến
cố hay một chương trình con.
Bộ mã lệnh chuẩn :
Thủ tục trong bộ mã lệnh chuẩn là chương trình
con hay hàm.
Thủ tục trong bộ mã lệnh chuẩn không gắn liền
với bất kỳ một đối tượng nào.
Thủ tục trong bộ mã lệnh chuẩn được gọi bởi
thủ tục của bộ mã lệnh bất kỳ nào trong tập tin
CSDL.
Để tạo một bộ mã lệnh chuẩn, trong cửa sổ
CSDL, ta chọn loại đối tượng Modules nhắp
nút New. Khi xuất hiện cửa sổ Modules ta gõ
lệnh khai báo trong phần khai báo và tạo các
chương trình con hay hàm rồi đóng cửa sổ
Hộp thủ
tục chứa
tên thủ
tục
Hộp đối
tượng
chứa các
đối
tượng
modules. Khi hộp thoại yêu cầu chọn lựa lưu
hay không xuất hiện, ta chọn đồng ý và đặt tên
cho bộ mã lệnh chuẩnClick OK.
Bộ mã lệnh lớp :
Bộ mã lệnh lớp là chương trình con, hàm hay
thủ tục biến cố.
Thủ tục trong bộ mã lệnh lớp có thể gọi các thủ
tục trong bộ mã lệnh chuẩn.
Chứa tên
thủ tục
Tên
các đối
tượng
Ta có thể tạo bộ mã lệnh lớp tồn tại độc lập với
đối tượng biểu mẫu, báo cáo.
Thủ tục biện cố được tự động gọi khi xẩy ra
một biến cố như nhắp chuột, rê chuột, gõ
phím,…
Để tạo một thủ tục biến cố, trong cửa sổ mã
lệnh, bên hộp đối tượng ta chọn đối tượng, còn
bên hộp thủ tục ta chọn biến cố.
II. LỆNH KHAI BÁO
1) Khái niệm :
Ta có thể dùng các lệnh khai báo
(Declaration statements) để đặt tên và định
nghĩa thủ tục (Procedures), biến (Variables),
mảng (Array) và hằng (Constants), loại dữ liệu
do người dùng định nghĩa. Tầm ảnh hưởng của
biến phụ thuộc vào vị trí khai báo biến.
2) Các lệnh khai báo :
a) Lệnh Option Compare
o Ý nghĩa : Dùng để khai báo cách thức so
sánh chuỗi ký tự.
o Cú pháp :
Option compare {Binary | Text |
Database }
o Vị trí : Lệnh được sử dụng trong phần khai
báo của bộ mã lệnh.
Giải thích :
Binary : So sánh chuỗi ký tự căn cứ vào thứ
tự nhị phân của bảng mã các ký tự.
Text : So sánh chuỗi ký tự không phân biệt
chữ hoa chữ thường.
Database : so sánh chuỗi ký tự dựa vào đặc
điểm riêng của bộ mã ký tự của từng địa
phương.
b) Lệnh Option Explicit
o Ý Nghĩa : Các biến phải được khai báo
trước khi sử dụng.
o Cú pháp :
Option Explicit
o Vị trí : Lệnh được sử dụng trong phần khai
báo của bộ mã lệnh.
c) Lệnh Dim
Ý Nghĩa : Khai báo tên và loại dữ liệu hay
loại đối tượng của biến.
Cú pháp :
Dim tenBien[([chieu])] [As [new]
laoidulieu]
[, tenBien[([chieu])] [As [New]
loaidulieu]]…
Vị trí :
Tênbiến : Tên biến.
Chieu : Qui định số chiều và số phần tử ở
mỗi chiều của biến mảng.
Chiều có dạng : [choSothap To] chiSoCao
[,[chisoThap to] choSoCAo]
New : Dùng cho biến loại đối tượng. New là
tạo một đối tượng mới và khởi gán biến
tham chiếu đến đối tượng vừa tạo. Một biến
được khai báo New thì không cần dùng lệnh
set để tham chiếu cho biến.
Loaidulieu : Loại dữ liệu của biến. Là một
trong các loại Byte, Boolean, Integer, Long,
Curremcy, Single, Double, Date, String,
String *Length, Object, Variant, loại do
người dùng định nghĩa hay một loại đối
tượng
Ví dụ :
Dim myInt As integer
Dim X as New WorkSheet
Dim NgayLe (1 to 20 ) As Date
d) Lệnh Const
Ý Nghĩa : Khai báo tên hằng và giá trị mà
chúng đại diện.
Cú pháp :
[Public | Private] Const TenHang [As
loaiDulieu] = bieuThuc
Vị trí : Lệnh nằm trong thủ tục hay trong phần
khai báo của modules.
Giải thích :
Public : Hằng được dùng trong thủ tục của bất
kỳ Modules nào.
Private : Hằng chỉ được dùng trong thủ tục
của modules chứa lệnh Const
TenHang : Tên hằng.
LoaiDulieu : Là một trong các kiểu dữ liệu.
e) Lệnh Type
Ý Nghĩa : Dùng để khai báo một loại dữ liệu
cấu trúc.
Cú pháp :
[Private | Public] Type Tenloai
tenThanhPhan [([chieu]}] As
loaiDuLieu
[tenThanhPhan [([chieu]}] As
loaiDuLieu]
End Type
Vị trí : Lệnh được dùng trong khai báo của
Module.
Giải thích :
Tenloai : Tên loại dữ liệu cấu trúc.
Chieu : Qui định số chiều và số phần tử ở mỗi
chiều của biến mảng.
Loaidulieu : Loại dữ liệu củ biến.
Ví dụ : Type diem
X As Double
Y as Double
End Type
f) Lệnh Sub
Ý Nghĩa : Dùng để khai báo tên thủ tục, tham
số, và các lệnh thủ tục của Sub.
Cú pháp :
[Private | Public ] [static] Sub tenThuTuc
[(danhSachThamSo)]
[lenh]
[Exit Sub]
[lenh]
end sub
Vị trí : Lệnh được dùng trong phần thủ tục của
Modules.
Giải thích :
Private : Phạm vi ảnh hưởng : trong
Modules chứa lệnh.
Public : Phạm vi ảnh hưởng : trong tất cả
modules của tập tin CSDL.
Static : Biến cục bộ sẽ được bảo lưu giá trị.
DanhsachThamSo : Gồm các tham số cách
nhau bởi dấu phẩy.
Ví dụ 1: Tính cạnh huyền của một tam giác.
Sub TinhCanhHuyen(ByVal canhA As
Double, ByVal canhB As Double)
Dim CanhHuyen As double
CanhHuyen =(CanhA^2 + CanhB^2) ^
0.5
Msgbox Csrt (canhHuyen), vbOkOnly,
“Tinh Canh Huyen”
End Sub
Ví dụ 2 :
Sub mainSub()
Dim bienInt As Integer
bienInt = 5
TruyenTri bienInt
MsgBox bienInt, vbOKOnly, "Truyen
Tri"
TruyenThamChieu bienInt
MsgBox bienInt, vbOKOnly, "Truyen
Tham Chieu"
End Sub
Sub TruyenTri(ByVal ThamSoint As
Integer)
ThamSoint = 10
End Sub
Sub TruyenThamChieu(ByRef
ThamSoint As Integer)
ThamSoint = 10
End Sub
Ví dụ 3 :
Sub tinhTong(ParamArray SotienArray()
As Variant)
Dim tongtien As Variant, Sotien As
Variant
For Each Sotien In SotienArray
tongtien = tongtien + Sotien
Next Sotien
MsgBox tongtien, vbOKOnly, "Tong
so tien"
End Sub
Ví dụ 4 :
Sub soNgayDasong(ByVal Ngaysinh As
Date, Optional ByVal ngayhientai As
Variant)
Dim soNgay As Integer
If IsMissing(ngayhientai) Then
ngayhientai = Date
End If
soNgay = ngayhientai - Ngaysinh
MsgBox soNgay, vbOKOnly, "So
ngay da song "
End Sub
Chú ý : Để chạy thử các thủ tục trên, ta vào cửa
sổ Debug và gõ
TinhCanhHuyen 4,5
MainSub
TinhTong 1,2,3,4,5
SoNgayDaSong #12/5/1980# hay
SoNgayDaSong #12/5/1980#, #04/03/2001#
g) Lệnh Function :
Ý Nghĩa : Dùng để khai báo tên hàm, tham số,
và loại dữ liệu trả về của hàm.
Cú pháp :
[private | Public ][Static] Function
tenHam([danhsachThamso]) [as loaiDulieu]
[lenh]
[tenham =bieuthuc]
[Exit Function]
[lenh]
[tenHam = bieuthuc]
End Function.
Vị trí : Lệnh được dùng trong phần thủ tục của
Module.
Giải thích : Giống Sub
Ví dụ 1: Tính cạnh huyền của một tam giác.
Function TinhCanhHuyen(ByVal canhA As
Double, ByVal canhB As Double) As Double
Dim CanhHuyen As double
CanhHuyen =(CanhA^2 + CanhB^2) ^
0.5
TinhCanhHuyen =CanhHuyen
End Function
Ví dụ 2 :
Function tinhTong(ParamArray
SotienArray() As Variant) As Double
Dim tongtien As Variant, Sotien As
Variant
For Each Sotien In SotienArray
tongtien = tongtien + Sotien
Next Sotien
TinhTong = tongtien
End Function
Ví dụ 4 :
Function soNgayDasong(ByVal Ngaysinh
As Date, Optional ByVal ngayhientai As
Variant) As Integer
Dim soNgay As Integer
If IsMissing(ngayhientai) Then
ngayhientai = Date
End If
soNgay = ngayhientai – Ngaysinh
soNgaydasong = songay
End Function
Chú ý : Để chạy thử các thủ tục trên, ta vào cửa
sổ Debug và gõ
? TinhCanhHuyen (4,5)
? TinhTong (1,2,3,4,5)
? SoNgayDaSong (#12/5/1980#) hay ?
SoNgayDaSong (#12/5/1980#, #04/03/2001#)
h) Lệnh Redim
Ý Nghĩa : Khai báo lại số chiều của mảng.
Cú pháp :
Redim [Preserve ] tenBien(chieu) [As
loaidulieu][, tenBien(chieu) [as loaidulieu]]
Vị trí : Lệnh được dùng trong thủ tục.
Giải thích :
Preserve : dùng để lưu dữ liệu đang có trong
mảng.
TenBien : Tên biến đã khai báo bằng lệnh
Dim.
Chieu : Qui định số chiều và số phần tử của
mảng.
Loaidulieu : Loại dữ liệu của biến
i) Lệnh Option Base
Ý Nghĩa : Khai báo chỉ số biến thấp của
mảng.
Cú pháp :
Option Base {0 | 1}
Vị trí : Lệnh được dùng trong phần khai báo.
Giải thích :
0 : chỉ số bắt đầu bằng 0.
1 : chỉ số bắt đầu bằng 1.
Ví dụ :
Option Base 0
Sub optionBase()
Dim mangSoNguyen(5) As Single
Dim chiso As Integer
For chiso = 1 To 5
mangSoNguyen(chiso) = Rnd()
Next chiso
End Sub
Option Base 1
Sub optionBase()
Dim mangSoNguyen(5) As Single
Dim chiso As Integer
For chiso = 1 To 5
mangSoNguyen(chiso) = Rnd()
Next chiso
End Sub
III. LỆNH GÁN (ASIGNMENT STATEMENTS)
1) Khái niệm :
Dùng để gán giá trị cho một biến hay một hằng.
Lệnh gán được sử dụng trong thân của thủ tục.
2) Các lệnh gán :
a) Lệnh Lct :
Ý Nghĩa : Gán giá trị một biểu thức cho một
biến.
Cú pháp :
[Let] tenBien| tenHam = BieuThuc
tenBien.TenThanhPhan = BieuThuc
tendoiTuong{ . | ! } {Thuoctinh |
tenDoiTuong) = BieuThuc
Vị trí : Lệnh được dùng trong thủ tục sau các
lệnh khai báo.
Giải thích :
TenBien : Tênbiến khai báo trong lệnh Dim
hay trong tham số của thủ tục.
TenThanhPhan : tên thành phần trong lệnh
Type.
Thuoctinh : Aùp dụng khi tenbien1 là đối
tượng.
TenDoiTuong : Tên đối tượng.
TenHam : tên hàm khai báo trong lệnh
Function.
BiueThuc : biểu thức mà giá trị nó gán cho
biến.
Ví dụ :
Function lenhgan(hocsinhPar As
hocsinhtype) As Integer
Dim hocsinhVar As hocsinhtype
Dim myDB As Database
'Gan gia tri vao tenBien.TenThanhPhan
hocsinhPar.hsMa = 1
hocsinhPar.hoten = "Nguyen Minh Hung"
hocsinhPar.malop = "CDTH4A"
'tenBien la loai du lieu dinh nghia boi
lenh Type
hocsinhVar = hocsinhPar
'tenBien
Forms!hocsinhFrm!hsMa = 5
Forms!hocsinhFrm!hsMa.Visible = True
'tenHam
lenhgan = 5
End Function
b) Lệnh Set :
Ý nghĩa : Gán đối tượng cho một biến thuộc
loại đối tượng tương ứng.
Cú pháp :
Set tenBien = {[New] bieuThuc |
Nothing}
Vị trí : lệnh được dùng trong thủ tục sau khi
khai báo.
Giải thích :
TenBien : Khai báo trong lệnh Dim hay trong
tham số thủ tục.
Bieuthuc : Biểu thức có giá trị là một đối
tượng.
Ví dụ :
Sub tinhtong
Dim myDB as database
Dim mySet As recordset
Set myDb = CurrentDB
Set mySet =
myDb.OpenRecordSet(“NhanVien”)
End Sub
IV. LỆNH XỬ LÝ
1) Cấu trúc điều khiển
a) Cấu trúc If … Then một dòng
Ý nghĩa : Điều kiện có giá trị True thì thi hành
câu lệnh, ngược lại chuyển điều khiển đến lệnh
kế tiếp.
Cú pháp :
If dieukien Then caulenh
Vị trí : Lệnh được dùng trong thủ tục sau các
lệnh khai báo.
Giải thích :
Dieukien : là một biểu thức luận lý.
CauLenh : câu lệnh gán hay xử lý.
Ví dụ :
If hocsinhVar.Hsma = 5 Then
hocsinhVar.lMa =2
b) Cấu trúc If … Then nhiều dòng
Ý nghĩa : dieukien có giá trị True thì thi hành
cacLenh, ngược lại chuyển điều khiển đến lệnh
sau lệnh End If
Cú pháp :
If dieukien Then
[caclenh]
End If
Vị trí : Lệnh được dùng trong thủ tục sau
các lệnh khai báo.
Giải thích :
Dieukien : Là biểu thức luận lý.
Caclenh : Câu lệnh gán hay xủ lý.
c) Cấu trúc If … Then … Else
Ý nghĩa : dieukien có giá trị True thì thi hành
cacLenh1, ngược lại thi hành caclenh2.
Cú pháp :
If dieukien Then
Caclenh1
Else
Caclenh2
End If
Vị trí : Lệnh được dùng trong thủ tục sau các
lệnh khai báo.
Giải thích : như trên.
d) Cấu trúc If … ElseIf
Ý nghĩa : dieukien thứ N đúng thì thực hiện
caclenhN, Ngược lại chuyển điều khiển đến
caclenhElse
Cú pháp :
If dieukien1 Then
[caclenh1]
ElseIf dieukien2 Then
[caclenh2]
……..
[ElseIf dieukienN Then
[caclenhN]
[Else
[caclenhElse]]
End If
Vị trí : Lệnh được dùng trong thủ tục sau các
lệnh khai báo.
Giải thích :
DieukienN : Là một biểu thức luận lý.
CaclenhN, caclenhElse : Các lệnh gán hay xủ
lý.
Ví dụ :
If hocsinhPar.DiemTB >= 8 Then
hocsinhPar.xeploai = "Gioi"
ElseIf hocsinhPar.DiemTB >= 6.5 And
hocsinhPar.DiemTB < Then
hocsinhPar.xeploai = "Kha"
ElseIf hocsinhPar.DiemTB >= 5 And
hocsonhDiemTB < 6.5 Then
hocsinhPar.xeploai = "Trung Binh"
Else
hocsinhPar.xeploai = "Yeu"
End If
e) Cấu trúc Select
Ý nghĩa : Chuyển điều khiển đến Case mà giá
trị BieuThucchon bằng, nằm trong hay <, <=,
>, >=, =, giá trị biểu thức.
Cú pháp :
Select Case bieuthucchon
Case {bieuthuc | Bieuthuc To bieuThuc |
is toantusosanh bieuThuc}
[cacLenh]
…
[Case Else
[caclenh]]
…
End Select
Vị trí : Lệnh được dùng trong thủ tục sau các
lệnh khai báo.
Giải thích :
BieuthucChon : Là một biểu thức.
Caclenh : Là các lệnh gán hay xử lý.
ToantuSoSanh : Là các toán tử so sánh.
Ví dụ :
Select Case hocsinhPar.lop
Case “CDTHA”
hocsinhPar.Hocphi = 800000
Case “CDTHB”
hocsinhPar.hocphi =700000
Case “CDTHC”
hocsinhPar.Hocphi =750000
End Case
2) Các lệnh lặp
a) Câu lện Do While … Loop
Ý nghĩa :
Điều kiện đúng thì
thực hiện các lệnh,
ngược lại không thực
hiện các lệnh mà
chuyển điều khiển đến
Điều kiện sai thì thực
hiện các lệnh, ngược
lại không thực hiện
các lệnh mà chuyển
điều khiển đến các
các lệnh sau từ khóa
Loop
lệnh sau từ khóa Loop
Cú pháp :
Do [While dieukien]
[caclenh]
[Exit Do]
[caclenh]
Loop
Do [Until dieukien]
[caclenh]
[Exit Do]
[caclenh]
Loop
Vị trí : Lệnh được dùng trong thủ tục sau các
lệnh khai báo.
Giải thích :
Dieukien : là một biểu thức luận lý.
CacLenh : Các lệnh gán hay xử lý.
Exit Do : thoát khỏi vòng lặp.
Ví dụ :
Dim intl as integer
Intl =1
Do While intl<=10
Debug.Print intl
Intl = intl+1
Loop
Dim intl as integer
Intl=1
Do Until intl>10
Debug.Print intl
Intl= intl +1
Loop
b) Câu lệnh Do … Loop While
Ý nghĩa :
Thi hành các lệnh, nếu
Điều kiện đúng thì
thực hiện các lệnh,
ngược lại không thực
Thi hành các lệnh, nếu
Điều kiện sai thì thực
hiện các lệnh, ngược
lại không thực hiện
hiện các lệnh mà
chuyển điều khiển đến
các lệnh sau từ khóa
Loop While
các lệnh mà chuyển
điều khiển đến các
lệnh sau từ khóa Loop
Until
Cú pháp :
Do
[caclenh]
[Exit Do]
[caclenh]
Loop [While
dieuKien]
Do
[caclenh]
[Exit Do]
[caclenh]
Loop [Until
dieukien]
Vị trí : Lệnh được dùng trong thủ tục sau
các lệnh khai báo.
Giải thích :
Dieukien : là một biểu thức luận lý.
CacLenh : Các lệnh gán hay xử lý.
Exit Do : thoát khỏi vòng lặp.
Ví dụ :
Do
……………
Loop While Not
mySet.EOF
Do
……………
Loop Until
mySet.EOF
c) Câu lệnh For … Next
Ý nghĩa : Thi hành các lệnh khi biến đếm còn
nằm giữa giaTriXuatPhat và giaTriDich. Sau
khi thi hành các lệnh biến đếm tăng thêm một
giá trị bằng bước nhẩy.
Cú pháp :
For bienDem = giaTriXuatPhat To
giaTriDich [Step buocNhay]
[caclenh]
[Exit For]
[cacLenh]
Next [bienDem]
Vị trí : Lệnh được dùng trong thủ tục sau các
lệnh khai báo.
Giải thích :
BienDem : Là một biến có kiểu dữ liệu là
Integer hay Long.
GiaTriXuatPhat, GiaTriDich : Một biểu
thức có kiểu là Integer hay Long.
BuocNhay : Là số âm hay dương dùng để
tăng hay giảm biến đếm.
Exit For : thoát khỏi vòng lặp.
Ví dụ : Trong thủ tục vào mảng có đoạn lệnh :
For chiso = 1 To soluongHocsinh
HocsinhMang(Chiso).HsMa =
hocsinhSet!hsMa
Next chiso
d) Câu lệnh For Each
Ý nghĩa : Khi phần tử còn là phần tử của
nhóm thì thi hành các lệnh.
Cú pháp :
For Each phantu In nhom
[caclenh]
[Exit for]
[caclenh]
Next [phantu]
Vị trí : Lệnh được dùng trong thủ tục sau các
lệnh khai báo.
Giải thích :
Phần tử : Là một phần tử.
Nhom : Là một chuỗi các phần tử.
Ví dụ : Trong hàm TinhTong , ta sử dụng
đoạn lệnh sau
For Each sotien In sotienArray
Tongtien = tongtien +sotien
Next soTien
e) Câu lệnh With
Ý nghĩa : Cho phép ghi các lệnh liên quan đến
đối tượng mà không cần ghi tên đối tượng.
Cú pháp :
With doituong
[caclenh]
End With
Vị trí : Lệnh được dùng trong thủ tục sau các
lệnh khai báo.
Giải thích :
DoiTuong : Biến thuộc loại đối tượng hay
loại dữ liệu định nghĩa bằng lệnh Type
Ví dụ : Trong thủ tục vào mảng có đoạn lệnh :
For chiso = 1 To soluongHocsinh
With HocsinhMang(chiso)
.HsMa = hocsinhSet!hsMa
.HsMa = hocsinhSet.Hoten
End With
Next chiso
f) Câu lệnh Call
Ý nghĩa : Chuyển con trỏ thi hành lệnh đến
lệnh đầu tiên của thủ tục.
Cú pháp :
[Call ] tenThuTuc
[danhsachThamSo]
tendoiTuong { ! | . } {tenDoiTuong |
phuongphap}…
Vị trí : Lệnh được dùng trong thủ tục sau các
lệnh khai báo.
Giải thích :
Call : Nếu sử dụng DanhsachThamSo phải
rào trong (), Ngược lại
Ví dụ :
Sub thuBangVaomang()
Dim HocsinhMang() As hocsinhType
BangVaoMang HocsinhMang()
End Sub
Sub thuBangVaomang()
Dim HocsinhMang() As hocsinhType
Call (BangVaoMang hocsinhMang())
End Sub
Sub BangVaoMang(HocsinhMang() As
hocsinhType)
...
HocsinhSet.MoveNext
...
End Sub
g) Câu lệnh Stop
Ý nghĩa : Ngưng tạm thời việc xử lý lệnh.
Cú pháp :
Stop
Vị trí : Lệnh được dùng trong thủ tục sau các
lệnh khai báo.
Giải thích :
Stop : tạm thời dừng việc xử lý lệnh ngay
lệnh stop. Lệnh Stop thường dùng tại vị trí mà
ta muốn kiểm tra việc thi hành lệnh ( xem giá
trị của biến). Sau khi việc thi hành lệnh dừng
tại lệnh stop, ta có thể cho tiếp tục thi hành
bằng cách nhấn F5
V. LÀM VIỆC VỚI CÁC BIẾN, KIỂU DỮ
LIỆU VÀ HẰNG SỐ
1) Khai báo biến
Cú pháp :
Dim tenbien [As kiểu dữ liệu]
Ví dụ
Dim strName as string
Dim Intl as Integer
2) Khai báo biến tường minh và không tường
minh
Khi sử dụng một biến mà không cần khai báo
trước thì đôi khi dẫn đến trường hợp là chúng ta
dễ tham chiếu đến một tên biến sai. Với cách lập
trình này thì chúng ta cảm thấy thuận tiện. Tuy
nhiên chúng ta nên khai báo tường minh vì điều
này giúp chúng ta tránh được việc sử dụng sai
tên biến bởi vì khi biên dịch Access sẽ phát hiện
và thong báo lỗi ngay để chúng ta sửa đổi.
Để có thể chuyển qua lại hai chế độ này chúng ta
sẽ giữ lại hay bỏ đi câu lệnh : Option Explicit
trong phần khai báo của các đoạn lệnh trong cửa
sổ bộ mã lệnh (Module)
Ví dụ :
Sử dụng chế dộ khai báo biến không tường
minh
Function CanBac2(Byval dblNum As Double)
as double
Dbltemp =abs(dblNum)
Canbac2 = Sqr(dbltmp) ‘ dbltemp bị viết sai
thành dbltmp
End Function
Khi gọi thực hiện hàm này thì VB không thong
báo lỗi gì cả, nhưng kết quả sẽ luôn luôn là 0 vì
VB hiểu rằng dblTmp là một biến mới.
Sử dụng chế dộ khai báo biến tường minh
Function CanBac2(Byval dblNum As Double)
as double
Dim dblTemp As Double
Dbltemp =abs(dblNum)
Canbac2 = Sqr(dbltmp) ‘ dbltemp bị viết sai
thành dbltmp
End Function
Khi gọi thực hiện hàm này thì VB sẽ thông báo lỗi
biến dbltmp chưa được định nghĩa, chính nhờ thông
báo này chúng ta sẽ phát hiện ra rằng chúng ta đã
tham chiếu đến tên biến sai. Sau đó quay lại sửa lại
tên biến thành dblTemp và biên dịch và chạy lại thì
kết quả sẽ luôn luôn đúng.
3) Tầm ảnh hưởng của biến
Khi khai báo một biến trong thủ tục thì chỉ có
các câu lệnh bên trong thủ tục đó mới có thể đọc
hay thay đổi giá trị của biến đó : tầm ảnh hưởng
của biến chỉ có tính cục bộ trong thủ tục. Tầm
ảnh hưởng của một biến phụ thuộc vào vị trí khai
báo biến. Có hai cấp : thủ tục hay bô mã lệnh.
Chúng ta có thể kết hợp các từ khoá Public hay
Private để tạo ra tầm ảnh hưởng của biến.
Tầm ảnh
hưởng
Private Public
Cấp thủ tục Các biến có tính
chất cục bộ ngay
trong thủ tục khai
báo biến
Không thể khai
báo biến toàn cục
trong thủ tục.
Cấp bộ mã
lệnh
Các biến có tính
chất cục bộ ngay
trong bộ mã lệnh
khai báo biến.
Các biến có thể sử
dụng cho tất cả
các bộ mã lệnh
chuẩn trong ứng
dụng.
4) Các biến sử dụng trong 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 được khai báo và được xem như
biến cục bộ.
Ví dụ khai báo :
Dim inttemp as Integer ‘Khai báo này biến
chỉ tồn tại khi thủ tục đang thực hiện
Static inttemp as Integer ‘Biến tồn tại trong
toàn bộ thời gian ứng dụng đang thực
hiện
5) Các biến sử dụng trong bộ mã lệnh
Mặc định một cấp bộ mã lệnh thì cho phép tất cả
các thủ tục trong bộ mã lệnh đó sử dụng được,
nhưng không thể cho các bộ mã lệnh khác.
Chúng ta có thể tạo các biến cấp thủ tục trong
biểu mẫu, báo cáo hay các bộ mã lệnh chuẩn
bằng cách khai báo chúng với từ khóa Dim hay
Private bên trong phần khai báo ở tại vị trí đầu
tiên trong cửa sổ bộ mã lệnh.
Ví dụ :
Option Compare Database
Option Explicit
Dim Inttemp As Integer hay
Private IntTemp As Integer.
6) Các biến sử dụng chung cho tất cả các bộ mã
lệnh
Để tạo ra các biến dung chung cho tất cả các bộ
mã lệnh chúng ta phải dung từ khóa Public để
khai báo biến. Giá trị của các biến toàn cục này
sẽ cho phép tất cả các thủ tục của toàn bộ các bộ
mã lệnh trong ứng dụng đều sử dụng được.
Giống như các biến cấp bộ mã lệnh các biến toàn
cục phải được đặt trong phần khai báo ở tại vị trí
đầu tiên trong cửa sổ bộ mã lệnh.
Ví dụ :
Public IntX as Integer
7) Phạm vi và tên các biến
Một biến không thể thay đổi phạm vi trong khi
các đoạn lệnh đang chạy. Tuy nhiên chúng ta vẫn
có thể sử dụng tên giống nhau cho những biến
trong các phạm vi khác nhau trong một số điều
kiện nhất định.
Các biến cục bộ và toàn cục:
Nếu các biến toàn cục giữa các bộ mã lệnh trùng
tên
Các file đính kèm theo tài liệu này:
- 125_.pdf