Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (6.22 MB, 240 trang )
Microsoft Access
13.4.1.1 Cấu trúc If … Then
Dạng 1: ghi trên một dòng:
If điều_kiện Then [ lệnh ] [ Else lệnh_khác ]
Ví dụ: Dim SL As Integer, DG As Double, TT As Double
SL = Val(InputBox (“Nhập số lượng:”))
DG = Val(InputBox (“Nhập đơn giá:”))
TT = SL * DG
If TT >= 200000 Then TT = TT * 0.95
Dạng 2: ghi trên nhiều dòng thành một khối lệnh:
If điều_kiện Then
lệnh
…
End If
Ví dụ:
Const PI = 3.14159
Dim ban_kinh As Double
ban_kinh = Val(InputBox (“Nhập bán kính:”))
If ban_kinh > 0 then
Dim dientich As Double
Dim chuvi As Double
Dientich = ban_kinh*ban_kinh*PI
Chuvi = ban_kinh*2*PI
End If
13.4.1.2 Cấu trúc If … Then … Else
If điều_kiện_1 Then
[ Khối_lệnh_1 ]
[ ElseIf điều_kiện_2 Then
[ Khối_lệnh_2 ]]
…
[ Else
[ Khối_lệnh_n ]]
End If
Lưu ý: số dòng lệnh ElseIf dùng trong cấu trúc là tùy ý, còn dòng
lệnh Else thì chỉ có một và có thể dùng hoặc không.
181
Microsoft Access
Ví dụ: Const LCB = 2000000
Dim luong As Double
Dim thue As Double
Luong = Val(InputBox(“Mức lương tháng:” ))
If luong <= LCB then
thue = 0
ElseIf luong <= 3000000 then
thue = (luong – LCB)*10/100
ElseIf luong <= 5000000 then
thue = (luong – LCB)*20/100
ElseIf luong <= 10000000 then
thue = (luong – LCB)*40/100
Else
thue = (luong – LCB)*60/100
End If
MsgBox “Thực lãnh:” & (luong – thue)
13.4.1.3 Cấu trúc Select Case:
Select Case biểu_thức_kiểm_định
[ Case Liệt_kê_các_biểu_thức_1 :
[ Khối_lệnh_1 ]]
[ Case Liệt_kê_các_biểu_thức_2 :
[ Khối_lệnh_2 ]]
…
[ Case Else
[ Khối_lệnh_n ]]
End Select
Lưu ý: biểu_thức_kiểm_định là biểu thức kiểu số hoặc biểu thức kiểu
chuỗi. Khi dùng liệt_kê_các_biểu_thức phải theo quy định sau:
- Các biểu thức riêng biệt sẽ liệt kê cách nhau bởi dấu phẩy.
- Các biểu thức gồm các giá trị liên tục:
giátrị_bắtđầu To giátrị_kếtthúc
- Các biểu thức so sánh: Is toán_tử_so_sánh biểu_thức
Ví dụ: Const LCB = 2000000
Dim luong As Double
Dim thue As Double
Luong = Val(InputBox(“Mức lương tháng:” ))
Select Case luong
Case Is <= LCB
thue = 0
182
Microsoft Access
Case LCB To 3000000
thue = (luong – LCB)*10/100
Case 3000000 To 5000000
thue = (luong – LCB)*20/100
Case 5000000 To 10000000
thue = (luong – LCB)*40/100
Case Else
thue = (luong – LCB)*60/100
End Select
MsgBox “Thực lãnh:” & (luong – thue)
13.4.2 Cấu trúc lặp
Là cấu trúc cho phép điều khiển thi hành lập đi lập lại nhiều lần
một hoặc nhiều câu lệnh. Số lần lặp lại tùy thuộc vào kết quả kiểm
định 1 điều kiện trong cấu trúc lặp. Các cấu trúc lặp gồm có:
13.4.2.1 Cấu trúc Do … Loop:
Dạng 1: kiểm định điều kiện trước :
Do Until ⎜ While Điều_kiện_kiểm_định
Lệnh
……
[Exit Do]
……
Lệnh
Loop
-
-
-
-
Khi thi hành vòng lặp, điều kiện lặp sẽ được kiểm định trước tiên,
và tùy thuộc giá trị của điều kiện mà các lệnh trong vòng lặp có
được thực hiện hay không.
Với Do Until, nếu điều kiện có giá trị là True (hoặc khác 0) thì sẽ
chấm dứt vòng lặp và thi hành tiếp các lệnh sau Loop, ngược lại
nếu điều kiện có giá trị False (hoặc bằng 0) thì các lệnh trong
vòng lặp được thi hành sau đó quay lên kiểm định lại điều kiện
lần nữa và trình tự lập lại như trên.
Với Do While thì kết quả ngược lại, tức là nếu điều kiện là True
(hoặc khác 0) thì các lệnh trong vòng lặp được thi hành sau đó
quay lên kiểm định lại điều kiện lần nữa, còn nều điều kiện là
False (hoặc bằng 0) thì kết thúc vòng lặp.
Trong khi thực hiện các lệnh của vòng lặp, nếu gặp lệnh Exit Do
thì chương trình sẽ thoát khỏi vòng lặp và thực hiện tiếp các lệnh
nằm sau Loop.
183
Microsoft Access
Ví dụ: Dim x As Integer
Dim y As Double
x = Val (InputBox(“Nhập 1 số:”))
Do While x > 0
y=y+x
x=x–2
If x < 1 Then Exit Do
Loop
MsgBox “Tổng =” & y
Dạng 2: kiểm định điều kiện sau:
Do
Lệnh
……
[Exit Do]
……
Lệnh
Loop Until ⎜ While Điều_kiện_kiểm_định
-
Khi thi hành vòng lặp, các lệnh trong vòng lặp sẽ được thực hiện
trước tiên rồi sau đó mới kiểm định điều kiện. Như vậy bất luận
kết quả điều kiện như thế nào thì các lệnh của vòng lặp đã được
làm qua.
- Sau đó vòng lặp sẽ tiếp tục thực hiện lại các lệnh hay chấm dứt là
tùy thuộc vào kết quả kiểm định điều kiện, hình thức kiểm định
giống như vòng lặp trong dạng 1.
Ví dụ: Dim a As Long, b As Long
Do
a = Val(InputBox(“Nhập số (Ngưng thì nhập số 0) :”)
b=b+a
Loop Until a = 0
MsgBox “Tổng các số :” & b
13.4.2.2 Cấu trúc While … Wend:
While Điều_kiện_kiểm_định
Lệnh
……
Wend
Vòng lặp While sẽ còn tiếp tục thi hành các lệnh trong vòng
lặp khi nào điều kiện kiểm định vẫn còn là True (hay khác 0).
Ví dụ:
184
Microsoft Access
Dim n As Integer
Dim S As Double
n = Val (InputBox (“Nhập 1 số :”))
While n > 0
S = S + 1/n
n=n–1
Wend
MsgBox “Tổng = “ & S
13.4.2.3 Cấu trúc For … Next
For biến_đếm = giá_trị_1 To giá_trị_2 [Step giá_trị_3]
Lệnh
……
[Exit For]
……
Lệnh
Next
[biến_đếm]
-
Các giá_trị_1, giá_trị_2, và giá_trị_3 trong vòng lặp đều là
kiểu số.
-
Đầu tiên biến_đếm được gán giá_trị_1 sau đó so sánh với
giá_trị_2, biểu thức so sánh sẽ tùy thuộc vào giá_trị_3. Khi
giá_trị_3 là số dương thì biểu thức so sánh là biến_đếm <=
giá_trị_2, nếu giá trị biểu thức là True thì các lệnh trong vòng
lặp sẽ được thi hành, sau đó biến_đếm được cộng thêm
giá_trị_3 rồi quay lên kiểm định lại biểu thức so sánh lần nữa.
Trình tự cứ lặp lại như thế cho đến khi giá trị của biến_đếm lớn
hơn giá_trị_2 thì vòng lặp chấm dứt.
-
Nếu giá_trị_3 là số âm thì biểu thức so sánh sẽ là biến_đếm >=
giá_trị_2, và vòng lặp sẽ còn thi hành các lệnh khi nào giá trị
biến_đếm vẫn lớn hơn hay bằng giá_trị_2.
-
Nếu không ghi Step giá_trị_3 trong vòng lặp thì mặc định
giá_trị_3 bằng 1.
-
Trong khi thực hiện các lệnh của vòng lặp, nếu gặp lệnh Exit
For thì chương trình sẽ thoát khỏi vòng lặp và thực hiện tiếp
các lệnh nằm sau Next.
Ví dụ:
Dim N As Long
Dim I AS Long
185
Microsoft Access
Dim GT AS Double
GT = 1
N = Val (InputBox (“Nhập 1 số để tính giai thừa:”))
If N>0 Then
For I = 1 To N
GT = GT * I
Next
MsgBox “Giai thừa “ & N & “! =” & GT
Else
MsgBox “Không tính giai thừa của số âm”
End If
13.4.3 Các lệnh khác
13.4.3.1 Lệnh thoát khỏi thủ tục:
Thoát khỏi hàm: Exit Function
Thoát khỏi thường trình con: Exit Sub
13.4.3.2 Lệnh gọi thi hành các hành động hoặc các Macros:
DoCmd.Tên_hành_động [ Danh_sách_đối_mục ]
-
Tên_hành_động là tên của các lệnh Macros (chương 12)
Danh_sách_đối_mục là các giá trị cung cấp cho lệnh Macro
tương ứng để thi hành, các đối mục cách nhau bởi dấu phẩy.
Ví dụ:
DoCmd.OpenForm “NHANVIEN”, acNormal, , , acFormAdd
DoCmd.OpenReport “LYLICH”, acViewPreview
DoCmd.Maximize
DoCmd.Close
DoCmd.GotoControl “MANV”
186
Microsoft Access
BÀI TẬP:
1. Tạo một module dùng chung, trong đó viết các thủ tục sau:
-
Hàm nhận 2 đối số, trả về giá trị lớn hơn trong hai đối số.
-
Hàm nhận 2 đối số, trả về giá trị nhỏ hơn trong hai đối số.
-
Hàm nhận 3 đối số, trả về giá trị ở giữa trong hai đối số.
2. Tạo một module dùng chung, trong đó viết các thủ tục sau:
-
Hàm nhận 1 đối số kiểu ngày, trả về giá trị chuỗi là tên của thứ
trong tuần ứng với đối số.
-
Hàm nhận 1 đối số kiểu chuỗi, trả về chuỗi mà ký tự đầu trong
mỗi từ sẽ viết hoa còn lại các ký tự khác viết thường.
-
Hàm nhận 1 đối số là năm dương lịch, trả về chuỗi là tên năm
âm lịch ứng với năm dương lịch.
-
Hàm nhận 1 đối số kiểu ngày, trả về giá trị số cho biết số ngày
trong tháng ứng với đối số đã nhận.
3. Tạo Form sau đây và trong đó viết các thủ tục xử lý vào các nút
lệnh:
-
Sau khi nhập 2 số thì bấm chọn phép toán nào sẽ hiện ra kết quả
tương ứng.
-
Nếu bấm nút Xóa thì các ô text box sẽ được xóa trắng
-
Nếu bấm nút Đổi màu thì thay đổi màu nền của Form.
-
Nếu bấm nút Thoát thì đóng Form lại.
187
Microsoft Access
CHƯƠNG 14
ĐỐI TƯỢNG TRUY XUẤT DỮ LIỆU
- Giới thiệu
- Sử dụng Cấu trúc Điều khiển với đối tượng
- Xử lý dữ liệu với đối tượng DAO
14.1 GIỚI THIỆU
14.1.1 Đối tượng truy xuất dữ liệu (Data access object - DAO)
Đây là lớp đối tượng thuộc Microsoft Jet Database Engine, một
bộ phận của Microsoft Access, được tham chiếu qua thư viện
Microsoft DAO 3.6 Object Library (tập tin Dao360.dll), cung cấp các
công cụ để sử dụng lập trình, tạo và xử lý các thành phần trong những
cơ sở dữ liệu ứng dụng bằng Microsoft Access.
Trong lớp đối tượng truy xuất dữ liệu này có một số đối tượng
cho phép khai báo biến để biểu thị cho đối tượng đó trong các thủ tục.
Dưới đây là bảng liệt kê các đối tượng truy xuất dữ liệu:
Đối tượng
Container
Containers
Database
Databases
DBEngine
Document
Documents
Field
Fields
Group
Ý nghĩa
Đối tượng chứa thông tin về những đối
tượng khác đã định nghĩa trong MS
Access hoặc Jet Database Engine
Tập hợp những Containers
Cơ sở dữ liệu đang mở
Tập hợp những cơ sở dữ liệu đang mở
Microsoft Jet Database Engine
Đối tượng chứa thông tin về những đối
tượng khác trong cơ sở dữ liệu
Tập hợp những Documents
Vùng thuộc bảng dữ liệu, bảng truy vấn,
Recordset, chỉ mục hoặc quan hệ
Tập hợp những vùng thuộc bảng dữ liệu,
bảng truy vấn, Recordset, chỉ mục hoặc
quan hệ
Nhóm người sử dụng Jet Database
Engine có đăng ký thuộc nhóm làm việc
hiện hành
Biến
biểu thị
Có
Không
Có
Không
Không
Có
Không
Có
Không
Có
188
Microsoft Access
Groups
Index
Indexes
Parameter
Parameters
Property
Properties
Tập hợp những Groups
Bảng chỉ mục
Tập hợp những bảng chỉ mục
Tham số của truy vấn
Tập hợp những tham số của truy vấn
Tính chất của một đối tượng
Tập hợp những tính chất của một đối
tượng
QueryDef
Qui định truy vấn đã lưu trữ trong một
cơ sở dữ liệu
QueryDefs
Tập hợp những qui định truy vấn đã lưu
trữ trong một cơ sở dữ liệu
Recordset
Tập hợp mẩu tin được định nghĩa bởi
một bảng dữ liệu hoặc bảng truy vấn
Recordsets
Tập hợp những Recordset
Relation
Quan hệ giữa hai field của bảng dữ liệu
hoặc bảng truy vấn
Relations
Tập hợp các Relations
TableDef
Bảng dữ liệu đã lưu trữ trong một cơ sở
dữ liệu
TableDefs
Tập hợp những bảng dữ liệu đã lưu trữ
trong một cơ sở dữ liệu
User
Người sử dụng Jet Database Engine có
đăng ký thuộc nhóm làm việc hiện hành
Users
Tập hợp những người sử dụng Jet
Database Engine có đăng ký thuộc
nhóm làm việc hiện hành
WorkSpace Phiên sử dụng Jet Database Engine hiện
hành
WorkSpaces Tập hợp những phiên sử dụng Jet
Database Engine hiện hành
Không
Có
Không
Có
Không
Có
Không
Có
Không
Có
Không
Có
Không
Có
Không
Có
Không
Có
Không
14.1.2 Đối tượng của Microsoft Access
Gồm các đối tượng được định nghĩa sẵn bởi MS Access, trong đó
có một số cho phép khai báo biến biểu thị.
Đối tượng
Ý nghĩa
Biến
biểu thị
Application Toàn bộ hệ thống ứng dụng MS Access Không
hiện hành
Control
Ô điều khiển thuộc mẫu biểu / báo biểu Có
189
Microsoft Access
Form
Forms
Module
Report
Reports
Screen
Section
Mẫu biểu đang mở kể cả mẫu biểu con
Tập hợp các mẫu biểu đang mở
Đơn thể của mẫu biểu hay báo biểu
Báo biểu đang mở kể cả báo biểu con
Tập hợp các báo biểu đang mở
Màn hình
Một phần của mẫu biểu hay báo biểu
Có
Không
Không
Có
Không
Không
Không
14.1.3 Khai báo và gán biến biểu thị đối tượng
14.1.3.1 Khai báo biến biểu thị đối tượng:
Dim Tên_biến
Dim Tên_biến
Ví dụ:
As
As
Kiểu_đối_tượng
DAO.Kiểu_đối_tượng
Dim DB As DAO.Database
Dim MyForm As Form
14.1.3.2 Gán giá trị cho biến biểu thị đối tượng:
Cho phép liên kết một biến đối tượng với một đối tượng đã có
trong cơ sở dữ liệu khi viết các thủ tục.
Set Tên_biến = biểu_thức
Ví dụ:
Dim F_NV As Form
Dim C_hoten As Control
Set F_NV = Forms!Nhan_vien
Set C_hoten = F_NV!Hoten
Dim Db As DAO.Database
Dim Rs As DAO.Recordset
Set Db = CurrentDb
Set Rs = Db.OpenRecordset(“NHAN_VIEN”, dbOpenTable)
14.1.4 Sử dụng đối tượng và biến biểu thị đối tượng
14.1.4.1 Tính chất (Properties) của đối tượng:
Tất cả các đối tượng (ngoại trừ Database) đều có các mục tính
chất do MS Access định nghĩa sẵn, tùy thuộc mỗi loại đối tượng mà
các tính chất sẽ thay đổi khác nhau. Đa số các tính chất có thể gán
giá trị thay đổi tương ứng với kiểu dữ liệu của tính chất đó trong
chương trình Basic trừ một số tính chất chỉ đọc thì không cho gán.
Khi tham chiếu tính chất đối tượng sẽ theo cú pháp sau:
Đối_tượng.Tính_chất
190
Microsoft Access
Ví dụ:
Dim F_NV As Form
Dim C_hoten As Control, TC
Set F_NV = Forms!Nhan_vien
Set C_hoten = F_NV!Hoten
TC = F_NV.Visible
C_hoten.Visible = False
14.1.4.2 Thành phần (Members) của đối tượng:
Một số đối tượng của MS Access có thể chứa những đối tượng
khác do người sử dụng định nghĩa (Ví dụ như mẫu biểu hay báo
biểu chứa các ô điều khiển, bảng dữ liệu hay bảng truy vấn thì chứa
các field). Những đối tượng được chứa trong một đối tượng khác
gọi là thành phần của đối tượng chứa và được tham chiếu theo cú
pháp:
Đối_tượng!Thành_phần
Ví dụ:
Dim Db As DAO.Database
Dim Rs As DAO.Recordset
Set Db = CurrentDb
Set Rs = Db.OpenRecordset(“NHAN_VIEN”, dbOpenTable)
Dim C_ht, C_ns
C_ht = Rs!Hoten
‘ Hoten và Ngaysinh là hai field
C_ns = Rs!Ngaysinh
‘ trong bảng NHAN_VIEN
Lưu ý: Ta có thể tham chiếu đến đối tượng mà tên của đối tượng
biểu thị bởi biến, hoặc tham chiếu đến các ô điều khiển trong mẫu
biểu, báo biểu bằng số thứ tự của ô điều khiển.
Ví dụ:
Dim F_Name As String
Dim Frm As Form
Dim I As Integer
F_Name = InputBox(“Tên mẫu biểu:”)
DoCmd.OpenForm F_Name
Set Frm = Forms(F_Name) ‘ dùng biến chứa tên form
For I = 0 To Frm.Count – 1
Frm(I).ForeColor = 255 ‘ dùng chỉ số thứ tự để tham chiếu
Next
14.1.4.3 Phương thức (Methods) của đối tượng:
Phương thức hay còn gọi là hành vi của đối tượng là một lệnh
xử lý hoặc một hàm đặc biệt tác động lên một đối tượng nào đó.
191