Tải bản đầy đủ (.pdf) (18 trang)

Ngôn ngữ lập trình Visual BasicFor Application

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 (439.92 KB, 18 trang )

Trung Tâm Đào Tạo Tin Học An Quốc Việt ..................................... Giáo trình Access NC

Chương 1: NGÔN NGỮ VISUAL BASIC FOR
APPLICATION
1. Giới thiệu Visual Basic for Application - VBA:
VBA là ngôn ngữ lập trình cho Microsoft Office và các ứng dụng có liên kết với nó. Bạn
sử dụng tương tự như 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 hoàn chỉnh. Điểm khác biệt là VBA cung cấp
nhiều sức mạnh và mềm dẻo hơn là tập lệnh.
Bạn có thể sử dụng VBA thay thế tập lệnh khi thực hiện các công việc sau:
 Làm cho ứng dụng của bạn dễ bảo trì hơn.
 Tạo ra các hàm tính toán của riêng mình, phù hợp với từng ứng dụng cụ thể.
 Che đi các thông báo lỗi của hệ thống, tạo các thông báo lỗi bằng tiếng việt dễ hiểu hơn
chon người sử dụng ứng dụng quản lý.
 Tạo hoặc sửa đổi các đối tượng một cách linh hoạt.
 Thực hiện các hành động cấp hệ thống, trao đổi dữ liệu động, các hàm, thư viện liên kết
động của Windows.
 Truy cập vào các tập hợp mẫu tin, gởi các tham số động.
Vì vậy khi xây dựng một ứng dụng quản lý chúng ta có thể kết hợp linh koạt vừa dùng
tập lệnh và VBA, tuy nhiên dùng VBA thì có nhiều ưu điểm hơn như trên.
2. Tạo một thủ tục sự kiện – Event Procedure:
Thủ tục là các đoạn lệnh mà bạn đã viết bằng ngôn ngữ VBA, bên trong một thủ tục sẽ chứa
đựïng một dãy các câu lệnh của VBA dùng để thực hiện một hành động hoặc tính toán ra một
giá trò nào đó.
Một thủ tục sự kiện là một thủ tục sẽ được chạy để đáp lại cho một sự kiện xảy ra. Xem một
ví dụ sau:

B1: Tạo một form có giao diện như trên, dùng các control là: Label, textbox, command button.
B2: Đặt tên cho các control textbox lần lượt là: txtA, txtB, txtKQ, các nút lệnh lần lượt là:
cmdCong, cmdXoa, cmdThoat.
B3: Viết code sự kiện tương ứng cho các nút lệnh trên thực hiện phép cộng như sau:



Đc: 318 Thống Nhất P.16 Q.GV  3.996.1590 ........................................................Trang 1


Trung Tâm Đào Tạo Tin Học An Quốc Việt ..................................... Giáo trình Access NC

3. Làm việc với bộ mã lệnh của biểu mẫu hoặc báo cáo:
Mở biểu mẫu ở chế độ thiết kế – Design
Hiển thò bảng thuộc tính tương ứng – Properties
Chọn trang Event
Chọn sự kiện thích hợp, nhấn nút xây dựng … bên phải thuộc tính sự kiện
Tiến hành viết các đoạn code tương ứng cho sự kiện.

Đc: 318 Thống Nhất P.16 Q.GV  3.996.1590 ........................................................Trang 2


Trung Tâm Đào Tạo Tin Học An Quốc Việt ..................................... Giáo trình Access NC
4. Tạo hàm đầu tiên:
Nếu chúng ta thường dùng một biểu thức tính toá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ứt tạp thì chúng ta nên xây dựng một hàm chung, để tại
một vò trí bất kỳ nào đó mà tất cả biểu mẫu hay báo cáo đều có thể dùng chung được. Khi
viết một hàm dùng chung này có các điểm thuận lợi như sau:
Giá trò tính toán của các biểu mẫu giống nhau hoàn toàn
Nếu cần thay đổi biểu thức tính toán thì chỉ sửa tại một chỗ mà thôi
Khi thực hiện các phép tính phức tạp có thể sử dụng thêm các cấu trúc điều khiển một
cách thuận lợi hơn.
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à modules, nhấn nút new để tạo một bộ
mã lệnh chuẩn.
Trong cửa sổ mã lệnh chọn Insert – Procedure hoặc viết trực tiếp thủ tục, hàm vào cửa sổ

lệnh.
Biên dòch thủ tục, hàm:
Sau khi viết xong các đoạn lệnh trong hàm, thủ tục chúng ta cần biên dòch để access kiểm tra
các sai sót ngoài ý muốn khi ta lập trình, chọn Debug – Compile.
Sử dụng các hàm:
Nếu chúng ta đã xây dựng hoàn chỉnh một hàm thì chúng ta có thể gọi sử dụng được nó tại
các vò trí sau:
Trong các thủ thục hay hàm khác
Như là một biểu thức tính toán, một hàm đã xây dựng có sẵn
5. Tên mặc đònh và tầm ảnh hưởng của các loại thủ tục:
Vò trí tại
Biến cố của biểu
mẫu
Biến cố của điều
khiển
Bộ mã lệnh của
ứng dụng hoặc
biểu mẫu

Tên thủ tục hoặc hàm
Private Sub Form_tên biến cố()
Các lệnh
End Sub
Private Sub Tên điền khiển_Tên biến cố()
Các lệnh
End Sub
Sub Tên thủ tục (các tham số)
Các lệnh
End Sub
Function Tên hàm(các tham số) as kiểu

dliệu
Các lệnh
End Function

Có ảnh hưởng
Tại biến cố của biểu
mẫu
Tại biến cố của điều
khiển
Phụ thuộc vào kiểu của
thủ tục hay hàm là
Public hay Private mà
nó có ảnh hưởng toàn
cục hay cục bộ.

6. Tạo và gọi các thủ tục:
Khái niệm thủ tục trong Access có thể là một thủ tục con – Sub Procedure hay một thủ tục
hàm Function Procedure.

Đc: 318 Thống Nhất P.16 Q.GV  3.996.1590 ........................................................Trang 3


Trung Tâm Đào Tạo Tin Học An Quốc Việt ..................................... Giáo trình Access NC
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 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ề
giá trò do đó các thủ tục hàm được dùng trong các biểu thức tính toán.
[Public | Private] Sub Tên thủ tục ([Các tham số])
<các lệnh>

End sub

[Public | Private] Function Tên hàm ([Các tham số]) as <kiểu dữ liệu trả về>
<các lệnh>
Tên hàm= giá trò trả về
End Function
7. Sử dụng biến:
Trong quá trình xử lý tính toán bên trong VBA, chương trình cần phải sử dụng một số biến
trung gian để lưu trữ giá trò khi tính toán. Các giá trò dữ liệu mà biến lưu trữ cũng giống như
giá trò mà 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. Chúng ta nên khai báo các biến trước khi sử dụng bằng từ khoá Dim.
8. Qui ước cách đặt tên các thành phần trong VBA:
Trong quá trình viết các đoạn lệnh trong ngôn ngữ VBA 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, tên đối tượng, tên biến, hằng số… chúng ta phải tuân
theo qui tắc sau đây:
Tên bắt đầu phải là một ký tự
Tên không được chứa các khoảng trắng và ký tự đặc biệt như: . , ! @ & $ #
Tên có độ dài tối đa 255 ký tự
Không chứa các từ khoá của ngôn ngữ VBA
9. Sử dụng đối tượng Docmd – Do Command:
Trong khi sử dụng ngôn ngữ VBA 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 Docmd.
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.
Vd: Docmd.Close acForm, “F_SinhVien”
10. 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 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.
Đc: 318 Thống Nhất P.16 Q.GV  3.996.1590 ........................................................Trang 4


Trung Tâm Đào Tạo Tin Học An Quốc Việt ..................................... Giáo trình Access NC
Bình thường nếu không sử dụng cấu trúc điều khiển thì các câu lệnh sẽ được thực hiện tuần tự
từ trên xuống dưới.
VBA cũng là ngôn ngữ lập trình như bao ngôn ngữ khác nó cung cấp cho chúng ta các cấu
trúc điều khiển sau:
Cấu trúc nếu … thì If … then:
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 dạng cú pháp như sau:
C1: If <điều kiện> Then <lệnh>
ýù nghóa: Nếu biểu thức điều kiện đúng thì có 1 lệnh được thực hiện.
C2: If <điều kiện> Then
<các lệnh>
End if
ýù nghóa: Nếu biểu thức điều kiện đúng thì có các lệnh được thực hiện.
C3: If <điều kiện> Then
<các lệnh 1>
Else
<các lệnh 2>
End if
ýù nghóa: Nếu biểu thức điều kiện đúng thì các lệnh 1 được thực hiện, ngược lại đk sai thì các
lệnh 2 được thực hiện.
C4: If <điều kiện 1> Then
<các lệnh 1>
Else If <điều kiện 2> then
<các lệnh 2>…

End if
ýù nghóa: Nếu biểu thức điều kiện 1 đúng thì các lệnh 1 được thực hiện, nếu đk 1 sai và đk 2
đúng thì các lệnh 2 thực hiện, cú tiếp tục như vậy cho đến đk thứ n… thì các lệnh thứ n được
thực hiện.
Hoặc:
If Typeof <tên biến> Is kiểu dữ liệu Then
<các lệnh>
End if
nghóa: Nếu loại dữ liệu của một biến là kiểu gì thì các lệnh sẽ được thực hiện.
Chú ý: 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 như: >,
<, >=, <= … và các giá trò cần so sánh, khi đó nó sẽ trả về một giá trò logic là đúng hay sai.
VBA cũng có thể hiểu được giá trò 0 là sai, khác 0 là đúng.
Ví dụ: kiểm tra một số là số chẳn hay lẻ
If (num mod 2) = 0 Then
Msgbox “Là số chẳn”
Else
Msgbox “Là số lẻ”
End if
Đc: 318 Thống Nhất P.16 Q.GV  3.996.1590 ........................................................Trang 5


Trung Tâm Đào Tạo Tin Học An Quốc Việt ..................................... Giáo trình Access NC
Cấu trúc chọn lựa Select Case:
Cú pháp tổng quát:
Select case <biến hoặc biểu thức>
Case giá trò 1
<các lệnh 1>
Case giá trò 2
<các lệnh 2>…
Case else

<các lệnh n>
End select
nghóa: nếu giá trò của biến hay biểu thức nằm trong giá trò 1 thì các lệnh 1 sẽ được thực
hiện, cứ tiếp tục đến giá trò thứ n thì các lệnh thứ n thực hiện.
Ví dụ: xét một số Num nằm trong miền giá trò nào:
Select case Num
Case 1
Msgbox “Num là số 1”
Case 2 to 5
Msgbox “Num là số từ 2 đến 5”
Case 6, 7, 8
Msgbox “Num là số 6 hay 7 hay 8”
Case is >8
Msgbox “Num là số >8”
Case else
Msgbox “Num là số <1”
End select
Cấu trúc lặp:
Khi một công việc nào đó được làm đi làm lại nhiều lần thì khi đó chúng ta gọi là khái niệm
lặp. Tuy nhiên số lần lặp thực tế này có xác đònh được trước hay không, vì vậy VBA chia ra 2
dạng vòng lặp:
+ Số lần lặp không xác đònh trước:
Cú pháp : Do … loop
Do [ while | Until <điều kiện> }
<các lệnh>
[exit do]
Loop
Hoặc:
Do
<các lệnh>

[exit do]
Loop [while | Until <điều kiện>]

Đc: 318 Thống Nhất P.16 Q.GV  3.996.1590 ........................................................Trang 6


Trung Tâm Đào Tạo Tin Học An Quốc Việt ..................................... Giáo trình Access NC
+ Số lần lặp được xác đònh trước:
Cú pháp: For … Next
For biến= giá trò 1 To giá trò 2 [bước nhảy]
<các lệnh>
[exit for]
Next [biến]
Hoặc:
For Each phần tử In nhóm
<các lệnh>
[exit for]
Next [phần tử]
Ví dụ: In ra dãy số nguyên từ 1 đến 10
C1: Dùng vòng lặp For … Next
Dim I as integer
For i=1 to 10 ‘cho I chạy tăng dần từ 1 đến 10
Debug.print i
Next i
C2: Dùng vòng lặp Do … While
Dim I as integer
I=1
Do while i<=10 ‘làm trong khi i<=10
Debug.print i
I=i+1

Loop
C3: Dùng vòng lặp Do … Until
Dim I as integer
I=1
Do Until i>10 ‘làm cho đến khi i>10
Debug.print i
I=i+1
Loop
Cấu trúc điều khiển lồng vào nhau:
Trong quá trình viết các đoạn lệnh để giải quyết các vấn đề phứt tạp ta có thể lồng nhiều câu
lệnh điều khiển vào nhau để giúp linh hoạt giải quyết được yêu cầu của công việc.
Thoát khỏi thủ tục, vòng lặp:
Khi lập trình không nhất thiết các đoạn lệnh trong một thủ tục hay vòng lặp phải thực hiện tất
cả, mà đôi khi chỉ cần vừa đủ để giải quyết vấn đề xong là có thể thoát khỏi thủ tục hay hàm
mà không cần làm hết những lệnh còn lại. Để thoát khỏi thủ tục dùng lệnh Exit Sub, khỏi
hàm dùng Exit Function, khỏi vòng lặp dùng Exit For, Exit Do.

Đc: 318 Thống Nhất P.16 Q.GV  3.996.1590 ........................................................Trang 7


Trung Tâm Đào Tạo Tin Học An Quốc Việt ..................................... Giáo trình Access NC
11. Các kiểu dữ liệu cơ bản:
Khi khai báo một biến thì bạn phải khai báo kiểu dữ liệu mà biến cần lưu trữ. Mặc đònh nếu
bạn không khai báo kiểu dữ liệu cho biến hoặc khai báo biến không tường minh thì kiểu dữ
liệu của biến đó sẽ là kiểu thay đổi được Variant.
Tên
Byte
Boolean
Integer
Long

Currency

nghóa lưu trữ
Số nguyên
Logic
Số nguyên
Số nguyên
Số thực

Single
Double
Date
String
Variant
Object

Số thực
Số thực
Ngày
Chuỗi
Bất kỳ dữ liệu gì
Chỉ đònh bất kỳ
đối tượng nào

Miền giá trò
0 -> 255
0:false, -1:true
-32.768 -> 32.767
-2.147.483.648 -> 2.147.483.647
-922.337.203.685.774,5808 ->

922.337.203.685.774,5807
Rất lớn
Rất lớn
1/1/100 -> 31/12/9999
Tối đa không quá 2 tỷ ký tự

Số byte
1 byte
1
2
4
8
4
8
8
16
4

Các hàm hỗ trợ kiểm tra kiểu dữ liệu:
Hàm kiểm tra số: IsNumeric trả về true là số, false không phải là số
Hàm kiểm tra ngày: IsDate
Hàm kiểm tra giá trò rổng: Empty
Hàm kiểm tra giá trò Null: IsNull

Đc: 318 Thống Nhất P.16 Q.GV  3.996.1590 ........................................................Trang 8


Trung Tâm Đào Tạo Tin Học An Quốc Việt ..................................... Giáo trình Access NC

Chương 2: LÀM VIỆC VỚI CÁC ĐỐI TƯNG, THUỘC

TÍNH VÀ CÁC BIẾN CỐ SỰ KIỆN
Trong phần này chúng ta sẽ tìm hiểu về mô hình đối tượng của Access, tập hợp các biểu
mẫu, báo cáo, các bảng… cú pháp lệnh để tham chiếu lên các điều khiển trên biểu mẫu.
1. Mô hình đối tượng cơ sở dữ liệu của Access:
Đối tượng cơ sở dữ liệu là các thành phần tồn tại bên trong tập tin cơ sở dữ liệu, chúng chứa
các bảng, các truy vấn, các biểu mẫu, các báo cáo, tập lệnh và thư viện bộ mã lệnh… ngoài
ra chúng cũng chứa các điều khiển trên một biểu mẩu hay báo cáo. Nếu hiểu rõ ràng về các
đối tượng trong Access, chúng ta sẽ dễ dàng thêm, sửa, xoá các đối tượng của ứn g dụng.
Mô hình các đối tượng và tập hợp trong ứng dụng:

Application
Forms
Controls
Reports
Controls
Modules
Screen

Docmd

Ýù nghóa:
Đối tượng và tập hợp
Đối tượng.
Tập hợp các biểu mẫu – Forms collection:

Đc: 318 Thống Nhất P.16 Q.GV  3.996.1590 ........................................................Trang 9


Trung Tâm Đào Tạo Tin Học An Quốc Việt ..................................... Giáo trình Access NC
Bao gồm tất cả các biểu mẫu hiện hành đang được mở trong csdl. Sử dụng tập hợp các biểu

mẫu chúng ta có thể thực hiện các hành động như thay đổi tiêu đề, màu sắc trên từng biểu
mẫu đang mở.
Ví dụ: thay đổi tiêu đề các form đang mở bằng cách gán thêm tên người sử dụng hiện hành
Sub Formscollection()
Dim Fr as form
For Each fr In forms
Fr.caption= Fr.caption & “ – “ & Currentuser
Next fr
End sub
Tập hợp các báo cáo – Reports Collection:
Tương tự như tập hợp các biểu mẫu, tập hợp các báo cáo bao gồm các báo cáo đang được mở
trong csdl hiện hành.
Tập hợp thư viện bộ mã lệnh – Modules collection
Đối tượng màn hình – Screen Object:
Đối tượng màn hình có thể sử dụng để tham chiếu đến bất kỳ biểu mẫu, báo cáo hay điều
khiển nào đang nhận được Focus. Các thuộc tính chỉ đến biểu mẫu, báo cáo hay điều khiển
nào đang được kích hoạt active. Đối tượng màn hình sẽ không được sử dụng nếu không có
biểu mẫu hay báo cáo nào đang kích hoạt.
2. Tìm hiểu về các đối tượng, thuộc tính, biến cố và phương thức của đối tượng:
Đối tượng là tất cả các thứ được tạo ra trong csdl, chúng bao gồm: các bảng, truy vấn, biểu
mẫu, báo cáo… tương tự như vậy mỗi đối tượng lại có các thành phần bên trong của nó.
Mỗi đối tượng trong csdl sẽ có một số các thuộc tính chỉ đònh, các phương thức chỉ đònh là các
hành động có thể được sử dụng trên đối tượng.
Thuộc tính của đối tượng là những đặc trưng riêng biệt của đối tượn g, mỗi một đối tượng sẽ
có nhiều thuộc tính.
Một biến cố trong Access là việc đáp lại một cái gì đó của bên trong ứng dụng. Các biến cố
sự kiện bao gồm sự di chuyển chuột, thay đổi dữ liệu, một biểu mẫu mở ra, một mẫu tin đang
được thêm vào…
Phương thức là các hành động được sử dụng trên các đối tượng trong csdl. Giống như thuộc
tính và biến cố, các đối tượng khác nhau sẽ có các phương thức liên quan đến chúng khác

nhau. Một phương thức thật sự tựa như một hàm hoặc thủ tục, ngoại trừ phương thức phải
thuộc về một đối tượng.
3. Chỉ đònh đến các đối tượng, thuộc tính và phương thức:
Các đối tượng Access được phân loại ra thành các tập hợp, và các tập hợp này được nhóm lại
theo từng đối tượng cùng một loại.
Ví dụ:
Tập hợp các biểu mẫu là một nhóm các biểu mẫu đang mở trong csdl.
Mỗi một biểu mẫu lại có một tập hợp các điều khiển, là cá c điều khiển có trên biểu
mẫu.

Đc: 318 Thống Nhất P.16 Q.GV  3.996.1590 ......................................................Trang 10


Trung Tâm Đào Tạo Tin Học An Quốc Việt ..................................... Giáo trình Access NC
Mỗi một điều khiển trên biểu mẫu lại là một đối tượng, và chúng ta có thể chỉ đònh
đến bất kỳ một đối tượng xuyên suốt qua tập hợp mà đối tượng đó thuộc vào.
Ví dụ: để chỉ đònh đến một biểu mẫu trong tập hợp các biểu mẫu , VBA đưa ra 3 cách để chỉ
đònh đến đối tượng đó như sau:
Forms!<tên biểu mẫu>
Forms!(“<tên biểu mẫu>”)
Forms(0)
Forms(0) chỉ ra biểu mẫu đầu tiên được mở ra.
Để chỉ đònh đến các điều khiển trên biểu mẫu chúng ta sử dụng cú pháp sau:
Forms!<tên biểu mẫu>!<tên điều khiển>
Muốn chỉ đònh đến các thuộc tính, đến phương thức của các đối tượng, chúng ta sẽ sử dụng cú
pháp sau:
Forms!<tên biểu mẫu>!<tên điều khiển>.<tên thuộc tính>
Hoặc:
Forms!<tên biểu mẫu>!<tên điều khiển>.<tên phương thức>
4. Mô tả và gán biến các đối tượng:

Biến đối tượng là biến dùng chỉ đònh đến một loại đối tượng nào đó, vd: biểu mẫu, báo cáo,
bộ mẫu tin… chúng còn cho phép chúng ta tạo ra các biến tắt chỉ đònh đến các đối tượng.
Cú pháp:
Dim <tên biến> as <kiểu dữ liệu đối tượng>
Set <tên biến> = <tên điều khiển>
Sau khi khai báo và gán giá trò khởi tạo cho biến đối tượng, chúng ta sử dụng biến đối tượng
bình thường như một đối tượng.
Cuối cùng sau khi đã làm việc xong với biến đối tượng, chúng ta phải giải phóng tài nguyên
vùng nhớ hệ thống bằng cách gán từ khoá nothing cho biến đối tượng.
Cú pháp:
Set <tên biến> = Nothing
Một số các thuộc tính đặc biệt chỉ đònh đến các đối tượng:
VBA cung cấp một số thuận lợi để thực hiện các hành động trên biểu mẫu, báo cáo, điều
khiển đang được kích hoạt hiện hành. Danh sách bên dưới cung cấp các thuộc tính đặc biệt
dùng để chỉ đònh đến các đối tượng trong mô hình đối tượng của Access.
Tên thuộc tính
Chỉ đònh
ActiveControl
Điều khiển đang nhận sự tập trung, đang được kích hoạt trên đối
tượng biểu mẫu, báo cáo…
PreviousControl
Điều khiển gần nhất ở trước điều khiển hiện tại
RecordsetClone
Bộ mẫu tin dữ liệu nguồn bên dưới của biểu mẫu
ActiveForm
Biểu mẫu đang nhận sự tập trung
ActiveReport
Báo cáo đang nhận sự tập trung
Form
Biểu mẫu con chứa trong một tập biểu mẫu

Report
Báo cáo con chứa trong một tập báo cáo
Me
Đối tượng biểu mẫu hoặc báo cáo nơi mà chứa đoạn mã lệnh hiện
tại đang thực hiện
Parent
Đối tượng cha của đối tượng hiện tại
Đc: 318 Thống Nhất P.16 Q.GV  3.996.1590 ......................................................Trang 11


Trung Tâm Đào Tạo Tin Học An Quốc Việt ..................................... Giáo trình Access NC

Chương 3: ĐỐI TƯNG TRUY CẬP DỮ LIỆU
DAO – DATA ACCESS OBJECT
DAO được sử dụng để có thể tạo, sửa đổi, và bỏ các đối tượng dữ liệu bên trong tập tin csdl
thông qua các đoạn mã lệnh trong VBA. Chúng ta sử dụng DAO để thực hiện các công việc
sau đây:
Phân tích cấu trúc một csdl có tồn tại
Thêm hoặc thay đổi các bảng, các truy vấn
Tạo mới một csdl
Thay đổi nội dung của một truy vấn
Duyệt qua các bộ mẫu tin
Sửa đổi dữ liệu của các bảng…
Trong mô hình hệ thống DAO, đối tượng trên cùng gọi là đối tượng DBEngine – công nghệ
csdl – còn được gọi là Microsoft Jet Database Engine, đối tượng này chứa tất cả các đối tượng
còn lại trong mô hình.
Khi muốn chỉ đònh đến csdl hiện hành ta có thể dùng hàm CurrentDB(), khi muốn chỉ đònh đến
bất kỳ một csdl nào khác, chúng ta bắt buộc phải chỉ đònh đến đối tượng DBEngine.
Vd: trả về phiên bản hiện hành của csdl đang sử dụng
Sub VersionCurrentdb()

Dim db as database
Set db=Currentdb()
Debug.Print db.Version
End sub
1. Các đối tượng trong đối tượng DBEngine:
Để có thể vận dụng một cách khéo léo các đối tượng DAO trong khi ứng dụng đang chạy,
chúng ta phải hiểu rõ chúng một cách tường minh. Chúng ta có thể thao khảo một số đối
tượng chính trong đối tượng DBEngine như sau:
WorkSpaces – không gian làm việc
Tập hợp các không gian làm việc workspaces chứa đựng các đối tượng không gian làm việc
workspace. Mỗi đối tượng không gian làm việc đònh nghóa ra một khu vực mà người sử dụng
đang làm việc khi họ bắt đầu khởi động Access. Tất cả tiến trình thao tác và an toàn dữ liệu
cho người sử dụng sẽ được ghi nhận tại một vùng làm việc.
Users – người sử dụng
Groups – nhóm người sử dụng
Databases – tập hợp cơ sở dữ liệu
Vd: In ra tên các csdl hiện đang được mở trong vùng làm việc hiện hành
Sub Printdbname()
Dim ws as workspace
Dim db as database
Dim db1 as database
Dim db2 as database
Set ws=DBEngine(0)
Set db1= currentdb()
Đc: 318 Thống Nhất P.16 Q.GV  3.996.1590 ......................................................Trang 12


Trung Tâm Đào Tạo Tin Học An Quốc Việt ..................................... Giáo trình Access NC
Set db2= ws.opendatabase(“d:\access\vd.mdb”)
For Each db In ws.databses

Debug.print db.name
Next db
End sub
TableDefs – tập hợp bảng đònh nghóa
Tập hợp các bảng đònh nghóa – tabledefs chứa tất cả các bảng đã được đònh nghóa trước đó
trong một tập tin csdl. Nó chứa đựng tất cả thông tin chi tiết và thuộc tính của các bảng.
Vd: kiểm tra sự tồn tại của một bảng trong tập tin csdl hiện hành như sau:
Sub ExitstTable()
Dim db as database
Dim tb as tabledef
Dim tbname as string
Dim flag as boolean
Dim td as string
Flag=false
Tbname= inputbox(“nhập vào tên bảng cần kiểm tra”)
Set db= currentdb()
For Each tb In db.tabledefs
If tb.name= tbname then
Flag=true
Exit for
End if
Next tb
Td=iif( Flag, “bang co ton tai”, “bang khong ton tai”)
Msgbox td
End sub
Indexs – tập hợp chỉ mục sắp xếp
Querydefs – tập hợp các truy vấn đònh nghóa
Fields – tập hợp các cột
Vd: liệt kê thông tin các cột chứa trong một bảng được chỉ đònh
Sub Listfield()

Dim db as database
Dim tb as tabledef
Dim fd as field
Dim tbname as string
Tbname=inputbox(“nhập vào tên bảng cần in field”)
Set db= currentdb()
For each tb in db.tabledefs
If tb.name= tbname then
Đc: 318 Thống Nhất P.16 Q.GV  3.996.1590 ......................................................Trang 13


Trung Tâm Đào Tạo Tin Học An Quốc Việt ..................................... Giáo trình Access NC

End if

For each fd in tb.fields
Debug.print fd.name
Debug.print fd.type
Debug.print fd.size
Next fd
Exit for

Next tb
End sub
Parameters – tập hợp các tham số
Recordsets – tập hợp các mẫu tin
Relations – tập hợp các mối quan hệ
Containers – tập hợp chứa đựng thông tin
Documents – tập hợp hồ sơ
Properties – tập hợp các thuộc tính

2. Các đối tượng bộ mẫu tin – Recordset
Một đối tượng bộ mẫu tin đại diện cho các mẫu tin trong một bảng hay một truy vấn chọn.
Access cung cấp 3 loại bộ mẫu tin như sau:
Bộ mẫu tin động – dynaset
Bộ mẫu tin tức thì – snapshot
Bộ mẫu tin bảng – table
3. Làm việc với các phương thức và thuộc tính của đối tượng bộ mẫu tin:
Tạo biến đối tượng bộ mẫu tin
Vd: Tạo biến bộ mẫu tin dạng bảng có dữ liệu nguồn từ bảng sinh viên và cho biết tổng số
mẫu tin có trong bảng sinh viên.
Sub Opentable()
Dim db as Database
Dim rs as Recordset
Set db=Currentdb()
Set rs=db.Openrecordset(“sinhvien”)
Debug.Print rs.Recordcount
End sub
Các tham số trong phương thức OpenRecordset
Cú pháp:
Set <biến rs>= <biến db>.Openrecordset(type, options)
4. Các phương thức di chuyển mẫu tin trong bộ mẫu tin:
Phương thức
MoveFirst
MoveLast
MovePrevious
MoveNext

Ý nghóa
Di chuyển về mẩu tin đầu tiên trong bộ mẫu tin
Di chuyển về mẩu tin cuối cùng trong bộ mẫu tin

Di chuyển về mẩu tin trước mẫu tin hiện hành trong bộ mẫu tin
Di chuyển về mẩu tin sau mẫu tin hiện hành trong bộ mẫ u tin

Đc: 318 Thống Nhất P.16 Q.GV  3.996.1590 ......................................................Trang 14


Trung Tâm Đào Tạo Tin Học An Quốc Việt ..................................... Giáo trình Access NC
Move[0]

Về trước hoặc ra sau một số các mẫu tin chỉ đònh so với mẫu tin hiện
hành.

Vd: in ra mã số của sinh viên đầu tiên, thứ hai, cuối cùng và kế cuối trong bảng sinh viên
Sub Inmautin()
Dim db as Database
Dim rs as Recordset
Set db= Currentdb()
Set rs=db.Openrecordset(“sinhvien”)
Rs.Movefirst
Debug.Print rs!masv
Rs.Movenext
Debug.print rs!masv
Rs.Movelast
Debug.print rs!masv
Rs.Moveprevious
Debug.print rs!masv
End sub
Trong đối tượng bộ mẫu tin có 2 thuộc tính là: BOF (begin of file) và EOF (end of file), đây là
2 thuộc tính nói lên vò trí các điểm giới hạn của một bộ mẫu tin. Các thuộc tính này giúp để
xác đònh vò trí con trỏ mẩu tin hiện hành đang đứng ở đâu.

Vd: lần lượt in ra tất cả các mã số sv có trong bảng sinh viên
Sub Inlist()
Dim db as Database
Dim rs as Recordset
Set db=Currentdb()
Set rs=db.Openrecordset(“sinhvien”)
Do while not rs.EOF
Debug.Print rs!masv
Rs.Movenext
Loop
End sub
5. Sắp xếp, lọc và tìm kiếm các mẫu tin:
Thuộc tính sort
Cú pháp:
<biến>.sort = <btc> [asc / desc]
Trong đó:
Biến: tên của biến có kiểu bộ mẫu tin
Btc: danh sách cột muốn sắp xếp
Đc: 318 Thống Nhất P.16 Q.GV  3.996.1590 ......................................................Trang 15


Trung Tâm Đào Tạo Tin Học An Quốc Việt ..................................... Giáo trình Access NC
Asc / desc: sắp tăng hay giảm
Vd: sắp xếp dữ liệu trong bảng sinh viên theo thứ tự tăng dần theo ngày sinh
Sub Sortngaysinh()
Dim db as databse
Dim rs as recordset
Set db=curretndb()
Set rs=db.openrecordset(“sinhvien”, dbopendynaset)
Debug.print “chua sap xep”

Do while not rs.EOF
Debug.print rs!ngaysinh
Rs.movenext
Loop
Debug.print “da sap xep”
Rs.sort = “[ngaysinh]”
Set rs=rs.openrecordset
Do while not rs.EOF
Debug.print rs!ngaysinh
Rs.movenext
Loop
End sub
Thuộc tính Filter
Cú pháp:
<biến>.Filter= <btc>
Vd: lọc ra các sinh viên học khoa tin học
Sub Filtertinhoc()
Dim db as database
Dim rs as recordset
Set db=currentdb()
Set rs=db.recordset(“sinhvien”, dbdynaset)
Rs.Filter= “makh=’Tin học’”
Set rs=rs.openrecordset
Do while not rs.EOF
Debug.print “ma so: “ & rs!masv & “ khoa “ & rs!makh
Rs.movenext
Loop
End sub
Thuộc tính Index
Cú pháp:

<biến>.index =<btc>
Đc: 318 Thống Nhất P.16 Q.GV  3.996.1590 ......................................................Trang 16


Trung Tâm Đào Tạo Tin Học An Quốc Việt ..................................... Giáo trình Access NC
nghóa: thay đổi thứ tự sắp xếp hiện hành của các mẫu tin trong bộ mẫu tin.
Phương thức Seek
Cú pháp:
<biến>.Seek <btc1>, <bt1>, …
Trong đó:
Biến: tên biến
Btc1: biểu thức huỗi so sánh có thể là: <, >, <=, >=, =
Bt1, bt2… : là các giá trò cần dò tìm.
Vd: tìm mã số của một sinh viên trong bảng sinh viên
Sub Seekmasv(masvct as string)
Dim db as database
Dim rs as recordset
Set db=currentdb()
Set rs=db.recordset(“sinhvien”, dbopentable)
Rs.index=”primarykey”
Rs.seek “=”, masvct
Msgbox(rs.NoMatch, “khong tim thay”,”tim thay”)
End sub
Thuộc tính AbsolutePosition: trả về vò trí của mẫu tin hiện hành
Thuộc tính Bookmark: là một mảng số nguyên do hệ thống phát sinh ra dùng để chỉ đònh
các đònh danh duy nhất cho từng mẫu tin trong bộ mẫu tin.
Thuộc tính LastModified: chứa giá trò bookmark của mẫu tin gần nhất mới thêm vào hoặc
sửa đổi dữ liệu.
Thuộc tính RecordsetClone: dùng chỉ đến bộ mẫu tin nằm bên dưới các biểu mẫu.


Đc: 318 Thống Nhất P.16 Q.GV  3.996.1590 ......................................................Trang 17


Trung Tâm Đào Tạo Tin Học An Quốc Việt ..................................... Giáo trình Access NC

CÁC BẠN HỌC VIÊN CHÚ Ý:
 Sau khi học xong bài học này, hv sẽ có một buổi ôn tập lại bài cũ, sau đó làm bài kiểm
tra cuối khoá. Sau khi học và kiểm tra đủ 3 lớp học trên (Access 1, Access 2, Access 3) và
có điểm kiểm tra cuối khoá>=5, hv liên hệ bàn Ghi Danh đăng ký cấp chứng chỉ “Nghề
Tin Học Quản Lý”, có thể đăng ký dự thi CCQG C do trường đại học Khoa Học Tự Nhiên
– Bộ Giáo Dục cấp. Liên hệ bàn Ghi danh để được hướng dẫn chi tiết.
 Học viên có thể đăng ký học sử dụng thành thạo các dòch vụ trên Internet ADSL, trình
chiếu Slide với PowerPoint, hoặc các lớp kỹ thuật chuyên đề mà mình cần hỗ trợ cho
tương lai nghề nghiệp, hoặc hỗ trợ cho công việc hiện tại của bạn. Trung tâm có đào tạo
các lớp chuyên đề rất hay cho nghề nghiệp các bạn, liên hệ bàn Ghi danh để được tư vấn
thêm. Xem chi tiết tại: www.aqv.edu.vn
 Các bạn học viên có nhu cầu tìm việc làm toàn thời gian hay bán thời gian. Các doanh
nghiệp hay cơ sở có nhu cầu tuyển dụng nhân sự vui lòng cung cấp thông tin cho bộ phận
Ghi Danh, hoặc mail thông tin vào đòa chỉ: hoặc
Trung tâm sẽ tạo điều kiện giới thiệu việc làm miễn phí cho học viên, giới thiệu nhân sự
miễn phí cho doanh nghiệp. Trong tương lai gần trung tâm sẽ thành lập website riêng để
tiện việc hỗ trợ cho học viên tìm việc sau khi học. Các bạn hãy cố gắng học tập tốt để đạt
kết quả cao, thuận tiện xin việc làm sau này.
P. ĐÀO TẠO

Đc: 318 Thống Nhất P.16 Q.GV  3.996.1590 ......................................................Trang 18




×