LẬP TRÌNH CƠ SỞ DỮ LIỆU - Pdf 62

Giáo trình Microsoft Access 2000 Copyright
®
Nguyễn Sơn Hải
Trang 162

CHƯƠNG
7
LẬP TRÌNH CƠ SỞ DỮ LIỆU

Access không những là một hệ quản trị CSDL mạnh mà còn cung cấp những
công cụ mạnh cho phép phát triển một CSDL đơn thuần thành một sản phẩm đóng
gói thương mại. Chúng ta đã được học Queries, Forms, Report – đó là những công
cụ khá mạnh và dễ học dùng để xây dựng các truy vấn, biểu mẫu và báo cáo in ấn
trong Access. Chương 7 đã được làm quen với ngôn ngữ VBA- một ngôn ngữ lập
trình trực quan, hướng đối tượng trong các
ứng dụng Microsoft Office nói chung
cũng như trên Access. Đó là cơ sở quan trọng để trong chương này chúng ta tìm
hiểu những kỹ thuật lập trình CSDL bằng VBA- có thể nói là một mức chuyên sâu
tiếp theo những gì đã học VBA căn bản.
Các chủ đề sẽ được bàn đến trong chương này bao gồm:

Lớp đối tượng truy cập dữ liệu (DAO- Data Access Objects);

Bài toán tìm kiếm;

Bài toán đặt lọc;

Một số bài toán khác.

Giáo trình Microsoft Access 2000 Copyright
® Trong đó:
- Tầng ứng dụng: bao gồm những giao diện người sử dụng cũng như những công
cụ đơn giản mà người lập trình có thể dùng để xử lý dữ liệu theo các bài toán;
- Tầng Kết nối dữ liệu: bao gồm tập hợp các công cụ, phương thứ
c để kết nối tới
những dữ liệu cần làm việc trong CSDL. Ở đây, tầng kết nối bao gồm các
chuẩn Microsoft Jet 4.0 và các lớp đối tượng DAO;
- Tầng Cơ sở dữ liệu: bao gồm các bảng, các query trong cơ sở dữ liệu thực tại.
Như vậy để lập trình trên một CSDL phải sử dụng các đối tượng, các phương
thức ở tầng kế
t nối như là những công cụ để có thể truy cập được vào CSDL tác
nghiệp xử lý. Tầng kết nối đó chính là Jet 4.0 và DAO 3.6 mà chúng ta sẽ được tìm
hiểu dưới đây.

1.1 Lớp đối tượng DAO
Cấu trúc một CSDL bao gồm nhiều thành phần, đòi hỏi lập trình cũng cần có
những thành phần tương ứng để làm việc. Lớp các thành phần tương ứng để có thể
lập trình được trên toàn bộ cấu trúc CSDL là lớp các đối tượng DAO. Chúng có tên
gọi, có những tập thuộc tính, các phương thức làm việc và có quan hệ mật thiết với
nhau. Cây phân cấp lớp các đối tượng DAO sau đây thể hiện đi
ều đó:
Cơ sở dữ liệu
Các kết nối dữ liệu
Ứng dụng
Giáo trình Microsoft Access 2000 Copyright
®

trong một đối tượng mẹ đang mở. Ví dụ:
Workspaces
Databases
RecordSets
QueryDefs
TableDefs
Relations
Giáo trình Microsoft Access 2000 Copyright
®
Nguyễn Sơn Hải
Trang 166
- Databases sẽ bao gồm tất cả các CSDL đang đựoc mở trong vùng làm việc hiện
tại;
- RecordSets sẽ bao gồm tập hợp tất cả các Recordset đang được mở trên CSDL
hiện tại.
Khi đó, để tham chiếu đến một đối tượng cụ thể cần làm việc, có thể dùng chỉ số
(số thứ tự của đối tượng đó trên tập hợp tất cả các đối tượ
ng đó) hoặc dùng tên gọi
đối tượng đó để tham chiếu. Ví dụ sau liệt kê tên của tất cả các Recordset đang sử
dụng trong CSDL db.

Dim db As DAO.Database
'------------------------------------
'các câu lệnh tiếp theo ở đây..
'
For i = 0 To db.Recordsets.Count
MsgBox db.Recordsets(i).Name
Next
Khi không làm việc với CSDL nào đó, có thể ra lệnh đóng để giải phóngd bộ
nhớ bằng cách:

db.Close

Sau khi lệnh này thực thi, tất cả các đối tượng con của db nếu đang mở sẽ được
đóng lại để giải phóng bộ nhớ. Bản thân db cũng được giải phóng bộ nhớ (bằng
Nothing), tất nhiên tệp CSDL và dữ liệu vẫn còn nguyên trên đĩa.
1.3 Đối tượng RecordSet
Recordset là đối tượng dùng để miêu tả tập hợp các bản ghi của một bảng, của
một query hoặc tập các bản ghi kết quả của việc thi hành một câu lệnh SQL nào đó.
Lớp các đối tượng con của Recordset được thể hiện qua sơ đồ sau: Khai báo

Set rs=db.OpenRecordset(<Name>)

Trong đó:
Giáo trình Microsoft Access 2000 Copyright
®
Nguyễn Sơn Hải
Trang 168
-
Set rs = db.OpenRecordset
là lệnh để tạo ra tập hợp các bản ghi từ CSDL db
gán vào biến kiểu recordset rs;
- <Name> là một xâu ký tự chỉ ra nguồn dữ liệu sẽ trả về cho Recordset. Xâu
này có thể là tên một bảng, một Query hoặc một câu lệnh SQL;
Mỗi biến Recordset khi làm việc, phải được chỉ ra Database xuất xứ của nó (phải

®
Nguyễn Sơn Hải
Trang 169
Cho biết vị trí bản ghi hiện tại (được tính từ 0). Trong trường hợp không có bản
ghi nào trên recordset hoặc con trỏ bản ghi đang nằm ở EOF- sẽ không thể lấy được
giá trị thuộc tính này. Do vậy để sử dụng thuộc tính này thường phải đi kèm thuộc
tính kiểm tra có tồn tại bản ghi nào hay không (RecordCount > 0) và con trỏ bản
ghi có ở cuối tệp chưa (EOF = False).
Thuộc tính RecordCount
Cho biết tổng số bả
n ghi trả về trên Recordset
Thuộc tính EOF
Cho biết con trỏ bản ghi hiện tại có nằm ở EOF hay không? Nếu có giá trị thuộc
tính này là True, trái lại là False.
Thuộc tính Fields
Dùng tham chiếu tới các trường (Fields) trên tập hợp các bản ghi mà Recordset
trả về. Thực tế Field cũng là một đối tượng và cũng có bộ thuộc tính và các phương
thức của nó. Với Field của Recordset thông thường người ta hay sử dụng thuộc tính
Value. Nếu không chỉ
định thuộc tính cụ thể nào cho Field, VBA vẫn hiểu ngầm
định đó là Value.
Ví dụ: Hiển thị giá trị trường hoten trong Recordset rs

Msgbox rs.Fields("hoten").Value

'hoặc
Msgbox rs.Fields("hoten") Một số phương thức của Recordset


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status