*. CÁC PHƯƠNG THỨC DOCMD THƯỜNG DÙNG +. Phân loại: Có 3 loại recordset:
Kiểu đối tƣợng Số mẫu tin của đối tƣợng Dữ kiện của đối tƣợng
Table Có thể thay đổi Có thể thay đổi
Dynaset Có thể thay đổi Có thể thay đổi SnapShot Cố định/ không thay đổi Không thay đổi
Biến Recordset thuộc loại Table: biến loại này hỗ trợ hầu hết các thao tác thêm (add), sửa (update), xoá (delete) và cho biết tình trạng mới nhất của bảng dữ liệu (table). Chỉ thực hiện trên CSDL hiện hành.
Cách mở: SET biến=CSDL.OpenRecordset(tên Table, DB_OPEN_TABLE) Biến Recordset thuộc loại Dynaset: biến loại này linh hoạt hơn loại table.
Cách mở: SET biến=CSDL.OpenRecordset(tên Table, DB_OPEN_DYNASET)
Biến Recordset thuộc loại Snapshot:
Cách mở : SET biến=CSDL.OpenRecordset(tên Table, DB_OPEN_SNAPSHOT)
+ Xử lý dữ kiện với các biến Recordset Di chuyển từ Record này đến record khác
Phương thức Ý nghĩa
MoveFirst Di chuyển về record đầu tiên
MoveNext Di chuyển về record kế tiếp. Nếu thuộc tính EOF là True thì MoveNext cốthực hiện sẽ xãy ra lỗi.
MovePrevious Di chuyển về record trước đó. Nếu thuộc tính BOF là True thì MovePrevious cố thực hiện sẽ xãy ra lỗi.
MoveLast Di chuyển về record cuối cùng Cấu trúc của một tập hợp mẫu tin (recordset):
111
BOF
RECORD RECORD 1 RECORD 2 RECORD 3
…
…
RECORD n EOF
Một biến Recordset (loại Table, Dynaset, hoặc Snapshot) thường có một vị trí hiện hành của nó, nghĩa là chỉđến recordhiện hành.
+. Đếm những mẫu tin của biến Recordset: RecordCount.
Tìm kiếm một mẫu tin đặc biệt - Dùng phương thức Find:
Phương thức Ý nghĩa
FindFirst Tìm đến Record đầu tiên trong nhóm những record thỏa tiêu chuẩn đã qui định.
FindNext Tìm đến Record kế tiếp record hiện hành trong nhóm những record thoả tiêu chuẩn đã qui định.
FindPrevious Tìm đến Record ngay trước record hiện hành trong nhóm những record thoả tiêu chuẩn đã qui định.
FindLast Tìm đến Record cuối cùng trong nhóm những record thoả tiêu chuẩn đã qui định.
- Dùng phương thức Seek: Tìm theo tiêu chuẩn so sánh. Các phép so sánh gồm: =, >=, >, <, <=.
Điều chỉnh những mẫu tin (record) của một Recordset.
Điều chỉnh mẫu tin hiện hành của Recordset:
B1: Di chuyển đến record muốn sửa.
B2: Dùng hành vi Edit (cho phép chỉnh sửa mẫu tin hiện hành).
112
B3: Thực hiện việc chỉnh sửa.
B4: Dùng hành vi Update (lưu lại những thay đổi).
Ví dụ: Trong CSDL quản lý hóa đơn điều chỉnh dữ liệu của các record có số hóa đơn 015 thành 025.
Sub chinhhd()
Dim db As Database Dim rs As Recordset
Set db = CurrentDb() 'gán biếnDB là một csdl HIỆN HÀNH Set rs = db.OpenRecordset("HOADON")
If Not rs.BOF Then rs.MoveFirst End If
Do Until rs.EOF
If rs!SOHD = "015" Then rs.EditMode
rs!SOHD = "025"
rs.Update End If
rs.MoveNext Loop
rs.Close End Sub
Thêm một mẫu tin vào Recordset.
B1: Dùng hành vi Addnew.
+ B2: Gán những giá trị cho các field của Recordset.
B3: Dùng hành vi Update (lưu lại những thay đổi).
VD: Thêm một record vào bảng (table) HOADON:
Sub themRecord()
Dim db As Database Dim rs As Recordset
Set db = CurrentDb() 'gán biến DB là một csdl HIỆN HÀNH Set rs = db.OpenRecordset("HOADON")
rs.Addnew
113
rs!SOHD = "035”
rs!LOAIHD=”NHAP”
rs!NGAYHD=#30/12/99#
rs!MAKH=”CTB00011”
rs!MAKHO=”KH1”
rs!TRIGIA=100000 rs!THUE=5
rs.Update rs.Close End Sub
Đếm số record trong một bảng: Dùng thuộc tính RecordCount. Để đảm bảo tính chính xác trước khi sử dụng ta cho con trỏ về cuối bảng bằng cách sử dụng phương thức MoveLast.
Xắp xếp dữ liệu trong bảng: Dùng thuộc tính Sort.
Lọc dữ liệu: Dùng thuộc tính Filter.
Sắp xếp: Dùng thuộc tính Index.
Tạo biến Recordset trên cơ sở một Form: Dùng lệnh SET theo cú pháp sau:
SET Tên_biến_Recordset = Forms![Tên_Form].RecordsetClone
114
Bài tập
Các Field in đậm và gạch chânlà khoá chính của bảng KETQUA (KẾT QUẢ)
Field Field Type Field Size Caption
MASV Text 3 Mã SV
MAMH Text 2 Mã môn
DIEM Number Single Điểm
KHOA (DANH MỤC KHOA)
Field Field Type Field Size Caption
MAKH Text 2 Mã khoa
TENKH Text 50 Tên khoa
DMMH (DANH MỤC MÔN HỌC)
Field Field Type Field Size Caption
MAMH Text 2 Mã môn
TENMH Text 25 Tên môn
SOTIET Number Byte Số tiết
SINHVIEN (DANH MỤC SINH VIÊN)
Field Field Type Field Size Caption
MASV Text 3 Mã SV
HOSV Text 20 Họ SV
TENSV Text 7 Tên SV
PHAI Yes/No Phái (Yes:Nam, No:
Nữ)
NGAYSINH Date/Time Ngày sinh
MAKH Text 2 Mã khoa
HOCBONG Number Double Học bổng
Dữ liệu mẫu
A/ Màn hình đơn:
1. Form tính điểm trung bình:
Yêu cầu thiết kế:
Tạo 4 textbox với thuộc tính Name như sau: txtVan, txttoan, txtdtb, txtkq.
Hai command với name là: cmdttb, cmdthoat. Sau khi đặt tên cho các đối tượng xong tiếp đến vào thuộc tính On Click của từng nút lệnh và viết code theo phần tham khảo.
115
Code tham khảo của Form:
Private Sub cmdTTB_Click() ' Kiem tra mon Van
If IsNull(Txtvan) = True Or Txtvan = "" Then
MsgBox "Bạn chưa nhập điểm môn Văn", , "Thông báo"
Txtvan.SetFocus Exit Sub
ElseIf Not IsNumeric(Txtvan) Then
MsgBox "Bạn nhập điểm môn Văn sai kiểu", , "Thông báo"
Txtvan.SetFocus Exit Sub
ElseIf Val(Txtvan) < 0 Or Val(Txtvan) > 10 Then
MsgBox "Bạn phải nhập điểm môn Văn trong khoảng từ 0 đến 10", ,
"Thông báo"
Txtvan.SetFocus Exit Sub
End If
' Kiem tra mon Toan
If IsNull(Txttoan) = True Or Txttoan = "" Then
MsgBox "Bạn chưa nhập điểm môn Toán", , "Thông báo"
Txttoan.SetFocus Exit Sub
ElseIf Not IsNumeric(Txttoan) Then
MsgBox "Bạn nhập điểm môn Toán sai kiểu", , "Thông báo"
Txttoan.SetFocus Exit Sub
ElseIf Val(Txttoan) < 0 Or Val(Txttoan) > 10 Then
MsgBox "Bạn phải nhập điểm môn Toán trong khoảng từ 0 đến 10", ,
"Thông báo"
Txttoan.SetFocus Exit Sub
End If
txtdtb = (Val(Txtvan) + Val(Txttoan)) / 2
116
'Xuất ra kết quả If txtdtb >= 5 Then Txtkq = "Đậu"
Else
Txtkq = "Rớt"
End If End Sub
Private Sub cmdThoat_Click()
If MsgBox("Bạn thật sự muốn thoát ?", 32 + 4, "Thông báo") = 6 Then DoCmd.Close
End If End Sub
2. Form Giải phương trình bậc nhất:
Yêu cầu thiết kế:
Tạo Form có 3 Text box (với thuộc tính Name là: A, B, KQ) và 3 command (với thuộc tính Name là: GIAI, TIEP, THOAT) tương tự như minh hoạ. Sau khi đặt tên cho các đối tượng xong tiếp đến vào thuộc tính On Click của từng nút lệnh và viết code theo phần tham khảo.
Code của Form:
Private Sub Form_Load() Me.KQ.Locked = True Me.A = " "
Me.B = " "
Me.KQ = " "
End Sub
Private Sub GIAI_Click()
If IsNull(A) = True Or Me.A = " " Then
MsgBox "Bạn chưa nhập hệ số A", , "Thông báo"
A.SetFocus Exit Sub
ElseIf Not IsNumeric(A) Then
MsgBox "Bạn nhập hệ số A sai kiểu", , "Thông báo"
A.SetFocus Exit Sub
ElseIf IsNull(B) = True Or Me.B = " " Then
117
MsgBox "Bạn chưa nhập hệ số B", , "Thông báo"
B.SetFocus Exit Sub
ElseIf Not IsNumeric(B) Then
MsgBox "Bạn nhập hệ số B sai kiểu", , "Thông báo"
B.SetFocus Exit Sub
ElseIf Me.A = 0 And Me.B = 0 Then
Me.KQ = "Phương trình có vô số nghiệm "
ElseIf Me.A = 0 And Me.B <> 0 Then Me.KQ = "Phương trình vô nghiệm "
ElseIf Me.A <> 0 And Me.B <> 0 Then
Me.KQ = "Nghiệm là : " & (Me.B * (-1)) / Me.A Else
Me.KQ = "Nghiệm là : 0 "
End If End Sub
Private Sub THOAT_Click()
If MsgBox("Bạn thật sự muốn thoát ?", vbQuestion + vbYesNo, "Thông Báo")
= vbYes Then DoCmd.Close End If
End Sub
Private Sub TIEP_Click() Me.A.SetFocus
Me.A = " "
Me.B = " "
Me.KQ = " "
End Sub
3. Cập nhật danh mục m n học:
Yêu cầu thiết kế: Tạo một Form có dữ liệu nguồn là chỉ một Table DMMH, các nút chức năng như minh hoạ. Với các thuộc tính Name như sau: cmdThem, cmdSua, cmdHuy, cmdThoat, cmdGhi, cmdKhong, cmdDau, cmdTruoc, cmdSau, cmdCuoi. Các thuộc tính Caption là: Thêm, Sửa, Hủy. . . Khi vừa mở Form thì hai nút Ghi, Không bị mờ.
- Khi Click vào nút Thêm sẽ cho phép thêm một môn mới, đồng thời mờ các nút Thêm, Huỷ, Sửa, Thoát và cho sáng các nút Ghi, Không.
- Khi click nút sửa thì sẽ cho phép sửa một mẫu tin, đưa con trỏ vào MAMH, đồng thời mờ các nút Thêm, Huỷ, Sửa, Thoát và sáng hai nút Ghi, Không.
- Khi click vào nút Huỷ thì sẽ cho huỷ môn học hiện hành, có Xuất thông báo hỏi người sử dụng trước khi huỷ.
- Khi click vào nút Thoát thì sẽ đóng Form, có hỏi người dùng trước khi thoát.
118
- Khi click vào nút Ghi hoặc Không sẽ cho lưu , không lưu mẫu tin vừa thêm hoặc vừa sửa. Đồng thời cho sáng lại các nút Thêm, Huỷ, Sửa, Thoát và mờ hai nút Ghi, Không.
4. Danh sách sinh viên:
Yêu cầu thiết kế: Form có dữ liệu nguồn là chỉ 1 Table DMSV, trên Form có 1 Combo Box lấy dữ liệu nguồn từ 1 Table KHOA và có liên kết với Form(chọn Store that value in this Field và chọn MAKH). Ngoài ra các nút chức năng tương tự như Form 3 với các thuộc tính Name là cmdThem,. . . cmdTim và TxtRe là tên của textBox hiển thị 1/6. Khi vừa mở Form thì hai nút Ghi, Không bị mờ.
5. Cập nhật danh mục khoa:
Yêu cầu thiết kế: Form lấy dữ liệu nguồn từ chỉ 1 Table DMKH, trên form có 1 listbox (với thuộc tính Name là: LstDMKH) phải có thay đổi dữ liệu nguồn (vào thuộc tính Row Source sau đó vào trong cửa sổ Query). Các nút chức năng tương tự như Form trước, riêng nút In danh sách khoa (Name: InDS) thì mở báo cáo A1, nút Danh sách SV theo khoa (Name: DSSVTheoKH) thì mở báo cáo B1 theo mã
119
khoa hiện hành. Đồng thời xuất thông báo cho người sử dụng khi gặp những trường hợp lỗi (không có chi tiết để mở). Form khi vừa mới mở có dạng như sau:
Hai nút Ghi, Không bị mờ.
6. Cập nhật và liệt kê các m n học:
Yêu cầu thiết kế: Form dạng Tab Control, có dữ liệu nguồn là chỉ 1 Table DMMH, riêng listBox thì phải xây dựng lại (vào Row Source và vào trong Query, Show hai Table: DMMH, KETQUA). Khi vừa mở Form thì hiển thị bên trang Liệt kê, sau khi người dùng Click chuột chọn một môn học trong ListBox thì sẽ hiển thị sang trang Cập nhật đúng với môn học được Click chọn. Với các nút chức năng tương tự như các Form trước và thay đổi thuộc tính Enabled (sáng – mờ) thành Visible (ẩn – hiện). Khi Form vừa mở thì hai nút Ghi, Không ở trạng thái ẩn (không hiển thị).
120
Màn hình sau khi Click vào nút Thêm:
7. Thông tin sinh viên:
Yêu cầu thiết kế: Form chỉ có dữ liệu nguồn là chỉ 1 Table DMSV, 1 ListBox có thay đổi dữ liệu nguồn. Các nút chức năng tương tự như các Form trên, riêng khi Click nút Danh sách SV theo khoa thì mở báo cáo B1. Khi Click Điểm của SV thì mở báo các B2 dữ liệu của báo cáo này chỉ hiển thị theo Sinh viên đang chọn trong ListBox.
121
B/ Màn hình một nhiều:
1. Điểm thi các m n học cho sinh viên:
Thiết kế: Form Main không có DL nguồn, tạo ListBox và Form Sub (nhớ chọn có MASV) như minh hoạ, sau đó gán thuộc tính của Sub Form là (Link Child Fields: MASV; Link Master Field: <tên List box>). Riêng combo môn học trong form sub chỉ cho phép người dùng chọn một môn học tồn tại trong danh sách.
Được xây dựng trong Query theo điều kiện như sau: (Not In (select mamh from ketqua where mamh=forms!F_B1!listsv)
Khi mới mở Form thì có dạng như sau:
Sau khi chọn một sinh viên trong danh sách
122
THUẬT NGỮ CHUYÊN MÔN
- DataBase Cơ sở dữ liệu
- Relationships Mối quan hệ các thực thể
- Primarykey Khóa chính
- Docmd (Do command) Thực thi lệnh
- Categories Phân loại
- Macro Builder Xây dựng tập lệnh
- Event Các sự kiện gán lệnh cho Form
- Sub Thủ tục
- Function Hàm
- CurrentDB Cơ sở dữ liệu hiện hành
123
TÀI LIỆU THAM KHẢO
Giáo trình Access, Võ Văn Chín, Đại học Cần Thơ
Giáo trình của Nguyễn Thiện Tâm- Trunng Tâm Tin Học Trường Đại Học Khoa Học Tự Nhiên – Đại Học Quốc Gia Thành Phố Hồ Chí Minh
Một số tài liệu tham khảo edu.net.vn
THUẬT NGỮ CHUYÊN MÔN
Database Cơ sở dữ liệu
Database Management System Hệ quản trị cơ sở dữ liệu
Field Trường
Record Bản ghi
Relationship Liên kết
Wizard Trình thông minh
Form Biểu mẫu
Report Báo cáo
Query Truy vấn
Macro Tập lệnh
Navigation Button Nút di chuyển trên Form
124
TÀI LIỆU THAM KHẢO
1. Giáo trình Access, Võ Văn Chín, Đại học Cần Thơ
2. Giáo trình Nguyễn Thiện Tâm _ Trung Tâm Tin Học Trường Đại Học Khoa Học Tự Nhiên – Đại Học Quốc Gia Thành Phố Hồ Chí Minh , ..
3. Một số tài liệu tham khảo edu.net.vn
THUẬT NGỮ CHUYÊN MÔN
Database Cơ sở dữ liệu
125
Database Management System Hệ quản trị cơ sở dữ liệu
Field Trường
Record Bản ghi
Relationship Liên kết
Wizard Trình thông minh
Form Biểu mẫu
Report Báo cáo
Query Truy vấn
Macro Tập lệnh
Navigation Button Nút di chuyển trên Form