Nhập môn hệ quản trị cơ sở dữ liệu Phần 2 - 9


Recordsets(0)

Recordsets("name") Recordsets![name]

9. QueryDefs

QueryDefs chứa tập các đối tượng QueryDef. Mỗi đối tượng QueryDef dùng để tham chiếu tới các query có sẵn trong CSDL MS Access, hoặc có thể là các query lập trình bằng câu lệnh SQL tạo ra. Sử dụng phương thức CreateQueryDef của đối tượng Database để tạo một query mới. Như vậy có thể dùng QueryDef để chạy các câu như lệnh SQL như SELECT, INSERT, DELETE, UPDATE, … rất thuận tiện.

Quá trình tạo và thi hành một query trong VBA sử dụng đối tượng QueryDef gồm các bước:

Tạo một query mới (nếu không đặt tên thì nó chỉ tồn tại trong bộ nhớ) dùng phương thức CreateQueryDef của đối tượng Database.

Gán chuỗi lệnh SQL cho query

Ra lệnh thi hành query

Đóng query

Lấy các bản ghi trong bảng

Đoạn mã sau sẽ cho hiển thị tất cả các bản ghi của Course ở trên trong CSDL hiện tại ra cửa sổ Debug


Dim db As DAO.Database Set db = CurrentDb

Dim qr As QueryDef

Set qr = db.CreateQueryDef("showrec") qr.SQL = "SELECT * FROM Course"

Dim rec As DAO.Recordset

Set rec = qr.OpenRecordset() While Not rec.EOF

Debug.Print CStr(rec.Fields(“CID”).value) & Chr(32) & rec.Fields(“CName”).value & Chr(32) & CStr(rec.Fields(“DurationInHour”).value) & Chr(32) & rec.Fields(“Description”).value

rec.MoveNext

Wend


rec.Close

qr.Close

Thêm mới một bản ghi vào bảng

Đoạn mã sau sẽ thêm một bản ghi mới vào bảng Course ở trên trong CSDL hiện tại:


Dim db As DAO.Database Set db = CurrentDb

Dim qr As QueryDef

Set qr = db.CreateQueryDef("insertRec")

qr.sql = "INSERT INTO Course(CName, DurationInHour, Description) Values('Programming Using C++',60, 'Bla bla bla

…')"

qr.Execute qr.Close

set db = Nothing

Sửa (cập nhật) các bản ghi đã có thỏa mãn điều kiện

Đoạn mã sau sẽ sửa các khóa học có thời gian 30 giờ thành 45 giờ trong bảng Course


Dim db As DAO.Database Set db = CurrentDb

Dim qr As QueryDef

Set qr = db.CreateQueryDef("updatetRec")

qr.sql = "UPDATE Course Set DurationInHour = 45 WHERE DurationInHour = 30"

qr.Execute qr.Close

set db = NoThing

Xóa các bản ghi thỏa mãn điều kiện

Đoạn mã sau đây sẽ xóa các khóa học có tên chứa chuỗi “Java”


Dim db As DAO.Database Set db = CurrentDb

Dim qr As QueryDef

Set qr = db.CreateQueryDef("deletetRec")

qr.sql = "DELETE FROM Course WHERE CName LIKE „*Java*‟"


qr.Execute qr.Close

set db = Nothing

Để tham chiếu đến đối tượng QueryDef trong tập QueryDefs, ta có thể sử dụng một trong 3 cú pháp sau:


QueryDefs(0)

QueryDefs("name") QueryDefs![name]

10. TableDefs

TableDefs chứa tập các đối tượng TableDef. Mỗi đối tượng TableDef dùng để tham chiếu đến các bảng dữ liệu trong CSDL. Có thể chỉnh sửa, thiết kế cấu trúc của bảng trong chế độ Run time như trong chế độ thiết kế Design View bằng đối tượng này.

Một số thuộc tính, phương thức cơ bản:

+ Name: tên bảng được gán vào biến kiểu TableDef

+ RecordCount: tổng số bản ghi hiện có trên bảng được gán vào biến TableDef

+ DateCreated: thời gian tạo bảng được gán vào biến TableDef

+ Fields

Để tham chiếu đến các field của bảng, thuộc tính này là một đối tượng có các thuộc tính và phương thức khác.

+ CreateField

Dùng để tạo field mới cho bảng kiểu TableDef.

Để tạo một đối tượng TableDef mới, ta sử dụng phương thức CreateTableDef của đối tượng Database.

Ví dụ: Đoạn mã sau sẽ tạo ra thêm trong CSDL hiện tại một bảng có tên là Student, gồm các field là SID (Long Integer) và SName (Long Text)


Dim db As DAO.Database Dim tbl As DAO.TableDef Set db = CurrentDb

Set tbl = db.CreateTableDef("Student")

tbl.Fields.Append tbl.CreateField("SID", dbLong)


tbl.Fields.Append tbl.CreateField("SName", dbText, 200) db.TableDefs.Append tbl

set db = Nothing

Phương thức CreateTableDef yêu cầu đưa vào tham số là tên của bảng, nếu để là rỗng thì bảng đó chỉ tồn tại trong bộ nhớ, không lưu lại được trong CSDL.

Để tham chiếu đến đối tượng TableDef trong tập TableDefs, ta có thể sử dụng một trong 3 cú pháp:


TableDefs(0)

TableDefs("name") TableDefs![name]

Ví dụ: Tham chiểu đến bảng Student vừa tạo ta sử dụng cú pháp


TableDefs("Student")

11. Relations

Relations chứa một tập các đối tượng Relation. Mỗi đối tượng Relation dùng để tạo kết nối (Relationship) giữa 2 bảng, truy vấn trong CSDL MS Access. Để tạo một đối tượng Relation, ta sử dụng phương thức CreateRelation của đối tượng Database.

Ví dụ: đoạn mã sau sẽ tạo Relationship giữa 2 bảng Course (CID, CName, DurationInHour, Description) và CourseStudent (CSID, CID, SID, Sdate, Fdate, Venue) trong CSDL hiện tại.


Dim db As DAO.Database Set db = CurrentDb

Dim rls As DAO.Relation

Set rls = db.CreateRelation("SC", "Course", "CourseStudent")

rls.Fields.Append rls.CreateField("CID", dbLong)

rls.Fields("CID").ForeignName = "CID" db.Relations.Append rls

Phương thức CreateRelation yêu cầu đưa vào các tham số lần lượt là: tên, bảng chính, bảng phụ và ràng buộc toàn vẹn tham chiếu của mối quan hệ. Để thiết lập khóa chính của liên kết ta sử dụng phương thức CreateField của đối tượng Relation và đưa vào tham số yêu cầu là tên của field làm khóa chính của mối quan hệ thuộc bảng chính của

liên kết (trong ví dụ trên là field CID của bảng Course). Sau đó cần chỉ ra khóa ngoại của liên kết (trong ví dụ là field CID của bảng CourseStudent).

Để tham chiếu đến đối tượng Relation trong tập Relations ta có thể sử dụng một trong 3 cú pháp:


Relations(0)

Relations("name") Relations![name]

Ví dụ: Tham chiếu đến Relationship SC trên ta sử dụng


Relations("SC")

12. Containers

Containers chứa tập các đối tượng Container. Mỗi đối tượng Database chứa một tập các đối tượng Container. Đối tượng Container có thể được định nghĩa bởi Microsoft Jet Database Engine hoặc bởi người dùng (khi đó DAO không hỗ trợ bất kỳ phương thức hay thuộc tính nào). Sau đây liệt kê một số đối tượng Container và kiểu thông tin mà nó chứa được Microsoft Jet Database Engine hỗ trợ:


Tên Container

Chứa thông tin về

Databases

Tất cả các đối tượng database được lưu trong CSDL

Tables

Tất cả các đối tượng table và query được lưu trong CSDL

Relations

Tất cả các đối tượng relationship được lưu trong CSDL

Có thể bạn quan tâm!

Xem toàn bộ 114 trang tài liệu này.

Chú ý:

+ Đối tượng Databases Container tham chiếu đến tất cả các đối tượng Database được lưu trong CSDL. Còn tập Databases chỉ tham chiếu đến các đối tượng Database đang được mở trong đối tượng Workspace cụ thể. Tương tự với các loại đối tượng Container khác.

+ Container là các đối tượng có sẵn (built - in), không thể tạo ra hay hủy bỏ chúng.

Để tham chiếu đến đối tượng Container trong tập các đối tượng Containers, ta có thể sử dụng 1 trong 3 cú pháp sau:


Containers(0)

Containers("name") Containers![name]

Ví dụ Mục tiêu

Minh họa hoàn chỉnh của một bài tập làm việc với CSDL gồm tất cả các thao tác: XEM, THÊM, SỬA, XÓA và được thực hiện gắn với giao diện của người dùng cuối.

Nội dung

Xây dựng một chương trình gồm các chức năng:

+ Search (tìm kiếm): thực hiện tìm kiếm chứa (tìm gần đúng) trên một bảng trong CSDL theo các điều kiện nhập từ form.

+ Add New (thêm mới): thực hiện thêm mới một bản ghi từ form vào 1 bảng trong CSDL

+ Edit (sửa): sửa thông tin của một bản ghi đã có trong 1 bảng

+ Delete (xóa): xóa một tập bản ghi trong 1 bảng

+ Refresh: khởi tạo lại form về giá trị ban đầu

Chú ý

+ Kết quả thao tác của mỗi chức năng được hiển thị ngay trong lưới trên cùng form

+ Chức năng Edit: Yêu cầu người dùng chọn duy nhất 1 row (record) trong lưới rồi Click vào nút lệnh Edit. Chương trình sẽ nạp row đó lên các TextBox và sửa nút Edit thành nút Save Edit, người dùng sửa xong dữ liệu và Click vào nút Save Edit. Chương trình sẽ cập nhật các thay đổi của người dùng vào CSDL và hiển thị kết quả tại lưới bên dưới (xem giao diện phần sau)

+ Chức năng Delete: Yêu cầu người dùng chọn 1 hoặc nhiều các row trong lưới rồi Click vào nút lệnh Delete. Chương trình sẽ xóa tất cả các row đó trong CSDL và hiển thị kết quả trong lưới bên dưới.

Các bước thực hiện

+ Tạo CSDL đặt tên là: qldt.accdb

+ Tạo một bảng Course trong CSDL trên như sau


Tạo một form đặt tên là frmCM như sau Chi tiết về các điều khiển trên form 1


+ Tạo một form đặt tên là frmCM như sau:


Chi tiết về các điều khiển trên form trong thiết kế như sau Tên điều khiển 2

Chi tiết về các điều khiển trên form trong thiết kế như sau:


Tên điều khiển

Thuộc tính

Giá trị

Ghi chú

Lable

Name

Lbl1


Caption

Course Management


Lable

Name

Lbl2


Caption

Course Name:


Lable

Name

Lbl3


Caption

Duration (in hour):


Lable

Name

Lbl4


Caption

Description:


Lable

Name

lblSearch



Caption


Đặt dấu cách


TextBox

Name

txtCN


TextBox

Name

txtDurration


TextBox

Name

txtDes

TextBox này bạn lấy từ ActiveX Control để nó có thanh cuộn dọc và ngang khi người dùng nhập

lượng dữ liệu lớn

Command Button

Name

cmdSearch


Caption

Search


OnClick

Event Procedure/Code

Builder


Command Button

Name

cmdAddNew


Caption

Add new


OnClick

Event Procedure/Code

Builder


Command Button

Name

cmdEdit


Caption

Edit


OnClick

Event Procedure/Code

Builder


Command Button

Name

cmdDelete


Caption

Delete


OnClick

Event Procedure/Code

Builder


Command Button

Name

cmdRefesh


Caption

Refresh


OnClick

Event Procedure/Code

Builder


ListBox

Name

lbCourse


Column Count

4

4 cột để sau này ứng với 4 field của bảng

Course

Column

Widths

1";2";1";5"

Các độ rộng của mỗi

cột

Column

Heads

Yes

Để quy định hàng đầu

tiên là tiêu đề của LB

Row Source

Type

Value List


Bound

Column

0

Giá trị cột đầu tiên (0)

là giá trị của LB

+ Viết mã lệnh cho các sự kiện trong MACO như sau

..... Xem trang tiếp theo?
⇦ Trang trước - Trang tiếp theo ⇨

Ngày đăng: 19/01/2024