You are on page 1of 28

TRƯỜNG ĐẠI HỌC BÁCH KHO –ĐẠI HỌC QUỐC GIA TP.

HCM

TRUNG TÂM KỸ THUẬT ĐIỆN TOÁN

LƯU HÀNH NỘI BỘ - Năm 2018


LẬP TRÌNH ACCESS Bài 01

Mục tiêu bài 01


Hiểu về mô hình dữ liệu và thiết kế cơ sở dữ liệu ở mức cơ bản
Tạo cơ sở dữ liệu Access
Tạo Table
 Thêm một table mới
 Khai báo các field: nhập tên field, chọn kiểu dữ liệu thích hợp và hiệu chỉnh các thuộc tính
và ràng buộc trên field
 Chọn khóa chính (primary key)
 Lưu và đặt tên table
Tạo mối quan hệ giữa các Table
Nhập liệu
Nội dung:
A. Tạo cơ sở dữ liệu(CSDL) QuanLy_BanHang.accdb:
a) Tạo các bảng theo mô tả (tên field, kiểu dữ liệu, khóa chính) trong hình bên dưới:

b) Tạo các bảng theo mô tả của các lược đồ quan hệ sau (yêu cầu: sinh viên tự xác định kiểu
dữ liệu và khóa chính):
NHACUNGCAP(MSNCC, TENNCC, DIACHI, DIENTHOAI, NGUOILIENHE): lưu
trữ thông tin nhà cung cấp.
PHIEUNHAP(MSPN, NGAYPN, MSNCC): lưu trữ thông tin các phiếu nhập hàng từ nhà
cung cấp.
CHITIET_PHIEUNHAP(MSPN, MSHH, SOLUONG, DONGIA): lưu trữ chi tiết các
mặt hàng nhập của từng phiếu nhập.
B. Cài đặt các ràng buộc sau (nếu vi phạm sẽ hiện thông báo bằng tiếng Việt):
- MSKH trong bảng khách hàng: bắt đầu ký tự “K”, tiếp theo là 3 ký số, lưu đủ 4 ký tự.
- MSHH bắt đầu là 1 ký tự, tiếp theo là 3 ký số (phải nhập đủ).
- Tên khách hàng, tên hàng hóa không được để trống.
- Ngày hóa đơn không được lớn hơn ngày hiện tại.
- Chiết khấu thuộc kiểu số, hiển thị dưới dạng phần trăm (xem dữ liệu mẫu).
CCE-2018 2/28
LẬP TRÌNH ACCESS Bài 01
- Số lượng, đơn giá (trong chi tiết hóa đơn), số tiền (trong phiếu thu) phài là số dương.
- MSHD và MSHH trong chi tiết hóa đơn được lấy dữ liệu từ bảng hóa đơn và hàng hóa.
- Sinh viên tự đưa ra cài đặt ràng buộc thuộc tính có thể có cho các bảng: Nhà cung cấp, Phiếu
nhập, chi tiết phiếu nhập.

C. Tạo mối quan hệ theo hình bên dưới

- Sinh viên tự xác định khóa ngoại và mối liên kết cho các bảng: Nhà cung cấp, Phiếu nhập, chi
tiết phiếu nhập.

D. Nhập liệu mẫu


1) Table KHACHHANG
MSKH TENKH NODAU
K001 Nguyễn Văn Minh 1,000
K002 Lê Ngọc Dũng 2,500
K003 Trần Tấn Lực 0
K004 Lê Thị Mai 800
K005 Nguyễn Xuân Giang 4,250
K006 Đào Kim Thoa 1,400

2) Table HANGHOA
MSHH TENHH HINH
H001 Bánh
H002 Kẹo
H003 Đường
H004 Sữa
H005 Nước suối
H006 Café
H007 Bia

3) Table PHIEUTHU
MSPT NGAYTHU MSKH SOTIEN
T001 01/1/2015 K001 1,500
T002 04/1/2015 K002 500
T003 10/2/2015 K004 800
T004 15/3/2015 K003 700
T005 02/4/2015 K002 1,700
T006 20/4/2015 K005 2,000

CCE-2018 3/28
LẬP TRÌNH ACCESS Bài 01
4) Table HOADON
MSHD NGAYHD MSKH CHIETKHAU
0001 01/1/2015 K001 10 %
0002 01/1/2015 K003 8%
0003 05/2/2015 K002 10 %
0004 12/3/2015 K004 10 %
0005 04/4/2015 K003 8%
0006 18/4/2015 K005 15%
5) Table CHITIET_HOADON
MSHD MSHH SOLUONG DONGIA
0001 H001 10 50
0001 H002 5 30
0001 H004 10 100
0002 H002 20 30
0002 H005 20 100
0003 H001 15 50
0003 H006 10 40
0004 H001 5 60
0004 H003 20 90
0005 H007 10 40
0005 H002 30 30
0006 H004 17 10

- Sinh viên tự nhập dữ liệu mẫu cho các bảng: Nhà cung cấp, phiếu nhập, chi tiết phiến nhập.

E. Bài tập ở nhà

Bài toán:

Xây dựng ứng dụng quản lý điểm cho các sinh viên

Công việc cần làm trong tuần này: Thiết kế cơ sở dữ liệu (xác định và tạo các table, cài đặt
ràng buộc, mối quan hệ, nhập liệu)

CCE-2018 4/28
LẬP TRÌNH ACCESS Bài 02
Mục tiêu Bài 02:
Thiết kế các loại truy vấn lựa chọn (Select Query) trong CSDL Access:
- Select Query (Truy vấn chọn lựa)
- Total Query (Truy vấn thống kê)
Chú ý: Tham khảo thêm mục cách sử dụng toán tử và hàm ở mục bên dưới

Nội dung:

A. Bài tập tại lớp:


Cho cơ sở dữ liệu(CSDL) QuanLy_KhachHang.accdb. Thực hiện các câu truy vấn sau:

1. Cho biết những mặt hàng có đơn vị tính “Lốc” trong danh mục hàng hóa thông tin gồm:
MSHH, Tên HH, Đơn vị tính. Sắp xếp theo Tên HH.
2. Cho biết thông tin nhà cung cấp tại Tp.HCM.
3. Thông tin mặt hàng có tên bắt đầu là “B” và “M”.
4. Liệt kê những khách hàng họ “Trần” và “Nguyễn” có nợ đầu > 1000 $. Sắp xếp giảm dần theo
nợ đầu.
5. Cho biết thông tin chi tiết các mặt hàng đã nhập có số lượng nhập từ 50 đến 100 gồm: MSPN,
MSHH, Số lượng, Đơn giá. Sắp xếp theo số lượng.
6. Hiển thị mã số và tên các khách hàng có mua hàng trong tháng 1 năm 2015.
7. Hiển thị mã số và tên các khách hàng có mua mặt hàng “Đường”.
8. Hiển thị mã số, tên và đơn vị tính các mặt hàng có bán trong ngày 01/01/2015.
9. Hiển thị mã số, tên và đơn vị tính các mặt hàng có nhập từ ngày 01/4/2015 đến 29/4/2015.
10. Liệt kê chi tiết hóa đơn có MSHD=’0001’ gồm MSHH, Tên HH, Số lượng, Đơn giá, Thành
Tiền.
11. Hiển thị thông tin khách hàng chưa mua hàng lần nào (chưa có hóa đơn).
12. Hiển thị thông tin mặt hàng chưa được bán lần nào.
13. Hiển thị thông tin Nhà cung cấp chưa nhập hàng lần nào.
14. Hiển thị mã số và tên các mặt hàng có trong danh mục hàng hóa nhưng không bán được trong
tháng 4/2015.
15. Hiển thị các hóa đơn trong tháng 4/2015 theo mẫu sau:
MSHD Ngày HD MSKH Tên KH Trị giá hóa đơn

Trị gía hóa đơn là tổng thành tiền của tất cả các mặt hàng trong hóa đơn
16. Thống kê tổng tiền hàng bán được của từng mặt hàng trong tháng 4/2015
MSHH Tên HH Tổng số lượng Tổng tiền hàng bán được

CCE-2018 5/28
LẬP TRÌNH ACCESS Bài 02
17. In mã số, họ tên, tổng tiền hàng của khách hàng mua hàng nhiều nhất từ đầu năm đến nay (tính
theo tổng tiền hàng)
18. Hiền thị thông tin các khách hàng có từ 3 hóa đơn trở lên.
19. Hiền thị thông tin các mặt hàng được bán từ 4 lần trở lên.
20. Thống kê tổng tiền hàng bán được trong từng tháng
Tháng Tổng tiền hàng bán được

21. Thống kê tổng tiền hàng bán được trong từng quý, theo mẫu sau:
Quý Tổng tiền hàng bán được

22. Thống kê tổng tiền nhập từ nhà cung cấp trong tháng 4 và 5 năm 2015, theo mẫu sau:
MSNCC Tên NCC Tháng 4 Tháng 5 Tổng

23. Thống kê tổng số lượng bán của quý 1 và 2 năm 2015, theo mẫu sau:
MSHH Tên HH Đơn vị tính Quý 1 Quý 2

24. Thống kê xem mỗi khách hàng đã mua hàng bao nhiêu lần, và tổng trị giá các hóa đơn của khách
đó, theo mẫu sau: (Lưu ý kiểm tra số liệu với kết quả truy vấn)
MSKH Tên KH Số lần mua hàng Tổng trị giá các HĐ

25. Thống kê công nợ khách hàng theo mẫu sau:


MSKH Tên KH Nợ đầu Tổng tiền hàng Tổng tiền đã trả Còn nợ

(Lưu ý: Phải hiển thị tất cả các khách hàng, kể cả các khách hàng trong kỳ không có hóa đơn,
hoặc không có phiếu thu, nhưng vẫn còn nợ đầu)

B. Bài tập ở nhà (tt)

Bài toán:

Xây dựng ứng dụng quản lý điểm cho các sinh viên đang học tại lớp của các bạn.

Công việc cần làm trong tuần này: Hoàn thiện cơ sở dữ liệu , xác định các ràng buộc toàn
vẹn dữ liệu (nếu có, ngoài ràng buộc PK, FK), tạo relationship và nhập dữ liệu.

CCE-2018 6/28
LẬP TRÌNH ACCESS Bài 02
C. Tham khảo cách sử dụng Toán tử và Hàm trong câu truy vấn

1. Toán tử:

1.1. Toán tử số học:

1.2. Toán tử so sánh:

Kết quả của toán tử so sánh là True hoặc False.

1.3. Toán tử logic:

1.4. Toán tử khác:

1.5. Toán tử nối chuỗi:

CCE-2018 7/28
LẬP TRÌNH ACCESS Bài 02
Dùng để nối các chuỗi thành một chuỗi.

2. Hàm:

2.1. Hàm xử lý kiểu dữ liệu Text:

2.2. Hàm ngày giờ:

2.3. Hàm điều kiện:

CCE-2018 8/28
LẬP TRÌNH ACCESS Bài 02

Hàm IIF trả về một trong 2 giá trị: giá trị 1 hoặc giá trị 2, tùy thuộc vào giá trị của Biểu thức điều kiện.

- Biểu thức điều kiện: là một biểu thức logic cho kết quả là True hoặc False.

- Giá trị 1: giá trị trả về của hàm IIF nếu Biểu thức điều kiện có giá trị là true.

- Giá trị 2: giá trị trả về của hàm IIF nếu Biểu thức điều kiện có giá trị là false.

Ví dụ:

IIF([Điểm]>=5, "Đậu", "Rớt")

3. Biểu thức:

Trong Access, một biểu thức tương đương với một công thức trong Excel. Một biểu thức bao
gồm các yếu tố định danh (tên của các field, điều khiển, hoặc thuộc tính), các toán tử, các hằng
số, và giá trị và các hàm.

Một biểu thức được tính toán để lấy giá trị cung cấp cho một query, xác định quy tắc, tạo các ô
hoặc field tính toán, và xác định phân nhóm cho report.

Ví dụ: Tạo field tính toán:

ThanhTien: [soluong]*[dongia]

Một biểu thức có thể sử dụng ở nhiều đối tượng trong cơ sở dữ liệu như: tables, queries, forms,
reports, và macros.

Trong các biểu thức, tên field, tên điều khiển phải được đặt trong dấu ngoặc vuông [], thông
thường Access sẽ tự đóng ngoặc vuông quanh tên field hoặc tên ô điều khiển nhưng nếu tên field
hoặc điều khiển bao gồm các khoảng trắng hoặc các ký tự đặc biệt, thì bạn phải tự gõ dấu ngoặc
[] quanh tên đó.

CCE-2018 9/28
LẬP TRÌNH ACCESS Bài 03
Mục tiêu Bài 03:

Thiết kế các loại truy vấn khác trong CSDL Access:


- Parameter Query (truy vấn có truyền tham số)
- Crosstab Query (truy vấn chéo)
- Action Query (truy vấn hành động): Make Table Query, Update Query, Delete Query, Append
Query

Nội dung:

A. Bài tập tại lớp:


Cho cơ sở dữ liệu(CSDL) QuanLy_KhachHang.accdb. Thực hiện các câu truy vấn sau:

1. Hiền thị thông tin các khách hàng có từ X hóa đơn trở lên
2. Hiền thị thông tin các mặt hàng được bán từ X lần trở lên.
3. Thống kê tổng tiền hàng bán được từ tháng X đến tháng Y trong năm 2015.
Tháng Tổng tiền hàng bán được

4. Thống kê số khách hàng và tiền mua hàng từ quý X đến quý Y:


Quý Số khách hàng Tiền mua hàng

Trong đó X,Y là tham số, X >=0,Y >=0, X<=Y và được nhập vào khi thực thi truy vấn

5. Thống kê tổng tiền nhập từ nhà cung cấp theo từng tháng trong năm 2015, theo mẫu sau:
MSNCC Tên NCC Tháng 1 … Tổng

6. Thống kê tổng số tiền bán theo quý trong năm 2015, theo mẫu sau:
MSHH Tên HH Quý 1 … Tổng

7. Thống kê tổng số lượng hàng nhập trong các tháng của năm 201, theo mẫu sau:
Tháng Năm Bánh Bia …

8. Tạo table mới có tên KHACH_HANG_MUA_HANG_2015 để chứa những khách hàng có mua
hàng trong năm 2015 thông tin gồm: MSKH, TENKH, NoDau, TongTienHang.

CCE-2018 10/28
LẬP TRÌNH ACCESS Bài 03
9. Tạo table mới HANG_HOA_CHUA_BAN để lưu những mặt hàng chưa được bán lần nào gồm:
MSHH, TENHH

10. Cập nhật lại Nợ đầu thêm 1000 cho những khách hàng có nợ đầu < 1000.

11. Cập nhật thêm số tiền 500 cho các phiếu thu của khách hàng có mã K002.

12. Cập nhật đơn giá bán thêm 10 cho những mặt hàng có số lượng bán trong các hoá đơn <10

13. Nối thêm những khách hàng chưa mua hàng trong năm 2015 vào bảng
KHACH_HANG_MUA_HANG_2015.

14. Nối thêm các mặt hàng có tổng số lượng bán trong năm 2015 lớn hơn 40 vào bảng
HANG_HOA_CHUA_BAN.

15. Xoá những khách hàng chưa có tổng tiền hàng trong bảng
KHACH_HANG_MUA_HANG_2015

16. Xoá mặt hàng “Đường” trong bảng HANG_HOA_CHUA_BAN.

B. Bài tập ở nhà (tt)

Bài toán:

Xây dựng ứng dụng quản lý điểm cho các sinh viên.

Công việc cần làm trong tuần này: Xác định tối thiểu 10 yêu cầu về rút trích và thống kê dữ
liệu cho bài của mình và thực hiện các câu truy vấn đáp ứng các yêu cầu trên, dữ liệu phải
được lấy trong các bảng khác nhau.

CCE-2018 11/28
LẬP TRÌNH ACCESS Bài 04

Mục tiêu bài 04:


Tạo Form bằng Wizard: gồm có 4 dạng form
1. Dạng single form: Tại 1 thời điểm chỉ hiện dữ liệu của 1 mẩu tin

Record
seletor::
dùng để
chọn mẩu
tin đang
hiển thị

Navigation Buttons: dùng để di


chuyển đến các mẩu tin khác
2. Dạng tabular: Tại 1 thời điểm có thể hiện dữ liệu của nhiều mẩu tin

Record Vertical Scroll


seletor:: Bar: thanh
dùng để cuộn dọc
chọn mẩu
tin đang
hiển thị

3. Dạng Datasheet: Hiển thị dưới dạng lưới (không thể hiện các đối tượng OLE, ví dụ hình ảnh,
…)

4. Main/Sub (Chính – phụ): Phối hợp các dạng form trên 1 màn hình. Gồm 1 form chính (main),
trên form chính có thể đặt thêm một hoặc nhiều form con (sub form)
CCE @2018 12/28
LẬP TRÌNH ACCESS Bài 04

Main form: Hiện


thông tin của
phòng ban

Sub form: Hiện


thông tin các
nhân viên thuộc
phòng ban hiện
trên main form

Nội dung:

A. Bài tập tại lớp:

a. Tạo form nhập Thông tin phiếu thu theo mẫu sau (dạng Column):

b. Tạo form nhập danh sách khách hàng theo mẫu sau (dạng Datasheet):

c. Tạo form nhập danh mục hàng hóa theo mẫu sau (dạng Tabular):

CCE @2018 13/28


LẬP TRÌNH ACCESS Bài 04

d. Tạo form nhập Thông tin hóa đơn theo mẫu sau (dạng Main/Sub)

B. Bài tập thêm:

Tạo các form theo mô tả bên dưới

a. Form Nhân viên

- Bảng dữ liệu nguồn: NHANVIEN

- Thuộc tính: tất cả

- Dạng Form: Columnar

b. Form Chức vụ

- Bảng dữ liệu nguồn: CHUCVU


CCE @2018 14/28
LẬP TRÌNH ACCESS Bài 04
- Thuộc tính: tất cả

- Dạng Form: Columnar

c. Form Chi tiết hóa đơn

- Bảng dữ liệu nguồn: CHITIET_HOADON

- Thuộc tính: tất cả

- Dạng Form: Tabular

d. Form Phòng ban – Nhân viên

- Bảng dữ liệu nguồn: PHONGBAN, NHANVIEN

- Thuộc tính: tất cả

- Dạng Form: Main/Sub (Sub dạng datasheet)

e. Form Khách hàng - Hóa đơn

- Bảng dữ liệu nguồn: KHACHHANG, HOADON

- Thuộc tính: tất cả

- Dạng Form: Main/Sub

f. Form Hóa đơn – Chi tiết hóa đơn

- Bảng dữ liệu nguồn: HOADON, KHACHHANG, CHITIET_HOADON, HANGHOA

- Thuộc tính: MSHD, NGAYHD, TENKH, CHIETKHAU, MSHH, TENHH, SOLUONG,


DONGIA

- Dạng Form: Main/Sub

C. Bài tập ở nhà (tt)

Bài toán:

Xây dựng ứng dụng quản lý điểm cho các sinh viên đang học tại lớp của các bạn.

Công việc cần làm trong tuần này: Phát thảo trước các màn hình nhập liệu cho ứng dụng

CCE @2018 15/28


LẬP TRÌNH ACCESS Bài 05

Mục tiêu bài 05:


Tạo Form bằng Design View (tự thiết kế):
Các thuộc tính thường xuyên sử dụng
- Cấp Form:
+ Default View: chế độ hiển thị
+ Record Source: nguồn dữ liệu cho form
+ Caption, Record selector, Navigation Button, Dividing lines, Scrollbar, PopUp, …
- Các đối tượng trong toolbox:
+ Textbox, ComboBox, Option Group, Checkbox: Control Source
+ Subform/subreport: Source object (nguồn dữ liệu), Link master fields: cột liên kết ở
mainform, Link child fields: cột liên kết ở subform.
+ Label: Caption
+ Command Button: Caption (nội dung hiển thị trên nút), sự kiện Onlick

Nội dung:

A. Bài tập tại lớp:

a. Tạo form Main/sub theo mẫu sau:

Yêu cầu:
 Form này phải cho phép người dùng nhập thêm Phòng ban & nhân viên mới.
 Dữ liệu trên main form sẽ cập nhật vào table PHONGBAN
 Dữ liệu trên sub form sẽ cập nhật vào table NHANVIEN

b. Tạo form Main/sub theo mẫu sau:

CCE @2018 16/28


LẬP TRÌNH ACCESS Bài 05

Yêu cầu:
 Form này phải cho phép người dùng nhập thêm hóa đơn mới.
 Dữ liệu trên main form sẽ cập nhật vào table HOADON
 Dữ liệu trên sub form sẽ cập nhật vào table CHITIET_HOADON
 Khi nhập MSKH  tên khách hàng sẽ tự động hiện ra trên form
 Khi nhập MSHH  tên hàng hóa sẽ tự động hiện ra trên form
 Khi nhập số lượng và dơn giá, thành tiền sẽ được tự tính.
 Tỉ lệ chiết khấu mặc định là 10%, nhưng có thể sửa được.
 Trị giá hóa đơn, số tiền được chiết khấu, số tiền phải thanh toán đều được tính tự đông

c. Tạo form theo mẫu sau:

Gợi ý:

 Main form liên kết với sub1 qua MSKH, main form liên kết với sub2 cũng qua MSKH
CCE @2018 17/28
LẬP TRÌNH ACCESS Bài 05
 Tổng tiền hàng là tổng số tiền phải trả trên tất cả các hóa đơn

d. Tạo form theo mẫu sau:

Yêu cầu:

 Tất cả các dữ liệu trên form chỉ được xem, không được thêm, xóa hay sửa.
 Các nút lệnh để di chuyển tới lui các mẫu tin và nút “Thoát” được tạo bằng Wizard
 Khi dùng nút lệnh di chuyển đến khách hàng nào, sẽ thấy tất cả các hó đơn của khách đó trong sub
form 1 (sub form bên trái)
 Khi chọn 1 hóa đơn (ở sub form 1), thì chi tiết của hóa đơn này sẽ hiện ra trong sub form 2 (sub form
bên phải)
 Hai text box nằm trên main form dùng để đếm số lượng hóa đơn của khách, và tính trị giá của hóa
đơn trong đang chọn
 Trang trí form theo mẫu.

Gợi ý: Main form liên kết với Sub1 qua MSKH, Sub1 liên kết với Sub2 qua MSHD (tạo textbox trung
gian trên main để liên kết giữa Sub1 và sub2)

e. Tạo form theo mẫu sau:

CCE @2018 18/28


LẬP TRÌNH ACCESS Bài 05

Yêu cầu:

 Form phải cho phép nhập thêm thông tin nhân viên và hoá đơn do nhân viên lập.
 Các Combo Box hổ trợ nhập liệu và các nút lệnh để di chuyển tới lui các mẫu tin và nút “Thoát” được
tạo bằng Wizard
 Khi dùng nút lệnh di chuyển đến Nhân viên nào, sẽ thấy tất cả các hóa đơn của nhân viên đó trong
sub form 1 (sub form bên trên)
 Khi chọn 1 hóa đơn (ở sub form 1), thì chi tiết của hóa đơn này sẽ hiện ra trong sub form 2 (sub form
bên dưới)
 Hai text box nằm trên main form dùng để đếm số lượng hóa đơn của nhân viên, và tính trị giá của hóa
đơn đang chọn
 Trang trí form theo mẫu.
Gợi ý: Main form liên kết với Sub1 qua MSNV, Sub1 liên kết với Sub2 qua MSHD (tạo textbox trung
gian trên main để liên kết giữa Sub1 và sub2)

B. Bài tập ở nhà (tt)

Bài toán:

Xây dựng ứng dụng quản lý điểm cho các sinh viên đang học tại lớp của các bạn.

Công việc cần làm trong tuần này: Thiết kế các màn hình nhập liệu cho ứng dụng

CCE @2018 19/28


LẬP TRÌNH ACCESS Bài 06

Mục tiêu bài 08:


Tạo Report bằng Design View (tự thiết kế):
Các thuộc tính thường xuyên sử dụng
- Cấp Report:
+ Record Source: nguồn dữ liệu cho report
- Các đối tượng trong toolbox:
+ Textbox: Control Source
+ Label: Caption

Nội dung:

A. Bài tập tại lớp:

a. Tạo report in ra danh muc hàng hóa của công ty:

Yêu cầu: phần ngày ở cuối báo cáo sẽ tự động lấy ngày hiện tại để in ra

b. Tạo báo cáo tổng hợp công nợ khách hàng:

Hướng dẫn: Tạo query “Tổng hợp công nợ khách hàng”.

 Tạo query tổng hợp tiền mua hàng của từng khách (lấy từ các table hóa đơn và chi tiết hóa đơn)
 Tạo query tổng hợp tiền khách đã trả (lấy từ table phiếu thu)
CCE - 2018 20/28
LẬP TRÌNH ACCESS Bài 06
Tạo query tổng hợp công nợ (lấy tự table khách hàng và 2 query vừa tạo ỡ trên). Lưu ý: cần sử
dụng phép kết ngòai (outer join) để tránh mất thông tin trong trường hợp các khách có hóa
đơn mà không có phiếu thu, hoặc có phiếu thu mà không có hóa đơn, hoặc không có cả 2
nhưng vẫn còn nợ đầu.

c. Tạo report theo mẫu sau:

d. Tạo report theo mẫu sau:

e. Tạo báo cáo theo mẫu:


CCE - 2018 21/28
LẬP TRÌNH ACCESS Bài 06

f. Tạo báo cáo theo mẫu:

g. Tạo báo cáo theo mẫu:

CCE - 2018 22/28


LẬP TRÌNH ACCESS Bài 06

B. Bài tập ở nhà (tt)

Bài toán:

Xây dựng ứng dụng quản lý điểm cho các sinh viên đang học tại lớp của các bạn.

Công việc cần làm trong tuần này: Thiết kế các mẫu báo cáo cho ứng dụng

CCE - 2018 23/28


LẬP TRÌNH ACCESS Bài 07

Mục tiêu bài Thực hành:


Macro

Có 3 loại Macro :

- Standalone macros: Là một đối tượng của cơ sở dữ liệu, macro này sau khi được tạo và lưu thì nó xuất
hiện trong phần Macro của Navigation Pane..

- Data macros: Là loại macro được lưu trữ như một phần của một table. Bạn có thể thiết kế sao cho table
thực thi macro trước hoặc sau khi một record được thêm, chỉnh sửa hoặc xóa.

- Embedded macros: Là loại macro được lưu trữ như một phần của một form hoặc report. Macros này chỉ
thực thi khi form hoặc report hoặc một đối tượng trên form hoặc report chịu tác động của một sự kiện.

Các Actions và các Events thông dụng :

a) Actions: Trong Access 2010 action được chia thành nhóm theo chức năng.

b) Events: Sự kiện tác động lên đối tượng để thực thi macro.

Tùy thuộc vào đối tượng khác nhau sẽ có những event khác nhau.

- Mouse và Keyboard event

CCE - 2018 24/28


LẬP TRÌNH ACCESS Bài 07

Các hàm thường dùng trong biểu thức điều kiện :

Hàm MsgBox («msg», «type», «title») :

Hàm có tác dụng cho xuất hiện hộp thông báo, trên hộp thông báo có các nút yes, no, ok, …để cho người
dùng chọn lựa. Giá trị trả về của hàm chính là sự chọn lựa click vào nút lệnh nào trên hộp thông báo.

a) Các tham số của hàm

- Message: Nội dung của chuỗi thông báo.

- Type: giá trị số biểu diễn các nút lệnh và biểu tượng trên hộp thông báo.

- Title: tiêu đề của hộp thông báo.

b) Giá trị số của các biểu tượng và nút lệnh trên hộp thông báo

c) Giá trị trả về của hàm là sự chọn lựa nút lệnh trên hộp thông báo

CCE - 2018 25/28


LẬP TRÌNH ACCESS Bài 07
Ví dụ: khi click nút xóa chương trình sẽ xuất hiện hộp thông báo xác nhận "Bạn có chắc chắn xóa không?",
nếu người dùng click nút yes thì xóa, ngược lại thì không xóa. Biểu thức điều kiện có dạng:

DCount («expr», «domain», «criteria») :

Đếm số record trong tập record được chỉ định bởi tham số <<Domain>> thỏa mãn điều kiện được chỉ định
trong biểu thức <<criteria>>.

+ expr: tên field muốn đếm số record.

+ domain: tên bảng chứa expr.

+ criteria: biểu thức điều kiện.

Ví dụ:

=DCount ("[MaHD]", "HoaDon", "[MaKH] = ’SJC’")

Nội dung:
1. Tạo Form theo mẫu sau:

CCE - 2018 26/28


LẬP TRÌNH ACCESS Bài 07

Yêu cầu:
Tạo Macro để gán vào sự kiện Onlick trên các nút lệnh và mở các đối tượng theo mô tả trong tiêu đề
của các nút lệnh trên form.

2. Mở form hóa đơn đã tạo ở câu b trong buổi 7_8. Cài đặt thêm các yêu cầu sau:

Yêu cầu:

 Đổi text box MSKH và MSHH thành dạng combo box, để người dùng có thể chọn trong danh sách
thay vì gõ trực tiếp.
 Thêm vào các nút lệnh (xem hình) (không dùng wizard).

 Tạo macro để gán vào sự kiện “on click” cho các nút lệnh, với các lưu ý thêm:
 Nếu đang ở mẩu tin đầu mà bấm vào nút “<” (previous), thì sẽ hiện thông báo “Bạn đang ở mẫu
tin đầu tiên”
 Nếu đang ở mẫu tin cuối mà bấm vào nút “> “ (next), thì sẽ hiện thông báo “Bạn đang ở mẫu tin
cuối cùng”
 Khi bấm vào nút “Lập HĐ mới”, con trỏ tự động chuyển vào text box “MSHD”, ngày hóa đơn sẽ
tự động lấy ngày hiện tại.
 Khi bấm vào nút “Xóa HĐ”, phải hiện thông báo hỏi “Ban có muốn xóa thật không?”, nếu trả lời
“Yes” sẽ xóa hóa đơn đang xem, ngược lại sẽ không xóa.
 Khi bấm vào nút “Thoát”, phải hiện thông báo hỏi “Ban có muốn thoát thật không?”, nếu trả lời
“Yes” sẽ đóng form lại, ngược lại vẫn làm việc tiếp.
CCE - 2018 27/28
LẬP TRÌNH ACCESS Bài 07
 Tạo macro rồi chọn sự kiện cũng như đối tượng để gán vào, để thực hiện các yêu cầu kiểm tra ràng
buộc sau:
 Khi lập hóa đơn, nếu nhập vào MSHD trùng với 1 MSHD đã có thì sẽ hiện câu thông báo
“MSHD này đã có. Xin nhap lai”, sau đó con trỏ sẽ quay trở về text box MSHD để nhập lại
(kiểm tra khóa chính)
 Khi chọn MSKH, nếu người dùng không chọn trong danh sách mà nhập vào 1 MSKH không có
trong danh sách khách hàng, thì sẽ hiện thông báo “không có MSKH này và con trỏ quay trở về
ngay combo box MSKH để nhập lại (kiểm tra khóa ngoại)

 Số lượng và đơn giá phải là số dương, nếu nhập sai sẽ hiện thông báo lỗi yêu cầu nhập lại và
quay trở về đúng ô đã nhập sai (kiểm tra miền giá trị)

3. Mở form hóa đơn đã tạo ở câu b trong buổi 7_8. Cài đặt thêm mục tìm kiếm bên phải:

Option group “Lọc theo” gồm 3 lựa chọn: theo MSHĐ, Ngày HD, MSKH.

Khi bấm “Tìm” , tùy theo ta lựa chọn option nào, dữ liệu trên main form sẽ được hiển thị thông tin tương ứng
với giá trị nhập trong Textbox tìm kiếm. Nếu giá trị tìm kiếm không tồn tại phải thông báo tương ứng theo
điều kiện lọc ở trên.

Vd: Khi lựa chọn lọc theo MSHD và nhập giá trị tìm là 10 sẽ hiện thị 1 thông báo “MSHD này không tồn
tại. Vui lòng nhập lại”.

CCE - 2018 28/28

You might also like