Vous êtes sur la page 1sur 14

MICROSOFT ACCESS

Copyright by : Trần Phúc Hậu


Tháng 10/2003
Do quá trình thực hiện không nhiều nên có những lỗi , mong các bạn thông cảm và
góy ý cho tôi .
Email : tranphuchau@hopthu.com
Website : http://www.tranphuchau.fx.to
NỘI DUNG
Chương I. Một số khái niệm cơ bản
CHƯƠNG I. MỘT SỐ KHÁI NIỆM CƠ BẢN
NỘI DUNG:
§1.1. CSDL & hệ quản trị CSDL
1. Cơ sở dữ liệu
2. Hệ quản trị cơ sở dữ liệu
3. Công cụ quản trị CSDL Microsoft Access
§1.2. Mô hình dữ liệu quan hệ
1. Thuộc tính
2. Khóa (Khóa chính, khóa ngoại)
3. Ràng buộc toàn vẹn
§1.1. CSDL & hệ quản trị CSDL
1. Cơ sở dữ liệu (CSDL – Database) là một hệ thống thông tin có cấu trúc, được l
ưu trữ trên các thiết bị mang tin từ tính (thường là đĩa từ), phục vụ việc khai
thác thông tin đồng thời của nhiều người sử dụng với nhiều mục đích khác nhau.
F Các đặc tính quan trọng cơ bản nhất của Cơ sở dữ liệu được in màu và gạch chân
.
2. Hệ quản trị cơ sở dữ liệu (DataBase Management System – DBMS) là một hệ thống
chương trình quản trị CSDL đồng thời là công cụ giao tiếp giữa người sử dụng (N
SD) với hệ thống cơ sở dữ liệu. Một hệ quản trị CSDL phải có các cơ chế:
F Đảm bảo tính chất đầy đủ, không trùng lặp và không dư thừa thông tin.
(tiếp theo)
F ‚ Đảm bảo tính nhất quán, an toàn và toàn vẹn dữ liệu.
F ƒ Bảo mật dữ liệu.
F „ Giải quyết tranh chấp dữ liệu.
F … Đảm bảo tính độc lập giữa dữ liệu và chương trình.
F † Tự sao lưu (BackUp) và phục hồi (Restore) khi có sự cố.
F ‡ Ngôn ngữ truy nhập CSDL, cho phép người sử dụng và các chương trình ứng dụng
khai thác thông tin trong CSDL. Ngôn ngữ này được chia thành 4 lĩnh vực (hay ph
ạm trù – Categoria):
Ngôn ngữ định nghĩa dữ liệu (Data Definition Language - DDL), cho phép tạo các c
ấu trúc dữ liệu lưu trữ.
Ngôn ngữ thao tác dữ liệu (Data Manipulation Language - DML), cho phép cập nhật
(thêm, xóa, sửa) dữ liệu.
Ngôn ngữ truy vấn dữ liệu (Strutured Query Language – SQL).
Ngôn ngữ kiểm soát dữ liệu (Data Control Language – DCL)
(tiếp theo)
3. Công cụ quản trị CSDL Microsoft Access.
Microsoft Access là một công cụ quản trị CSDL, cho phép xây dựng các ứng dụng CS
DL theo mô hình dữ liệu quan hệ trên một môi trường gọn nhẹ, đơn giản, dễ thao t
ác, nhưng vẫn đảm bảo được các tính chất quan trọng đã nêu của một hệ quản trị C
SDL. Mỗi ứng dụng CSDL trên môi trường Access là một file trên đĩa từ có phần mở
rộng mặc định là .mdb, gồm 6 đối tượng: các bảng (Tables » Relation – quan hệ t
heo lý thuyết CSDL quan hệ), Các câu truy vấn (Queries), Các giao diện nhập liệu
(Forms), Các báo cáo (Reports), Các lệnh vĩ mô (Macros) và các Modules chương t
rình. Mỗi đối tượng đều có các chức năng: New – Tạo đối tượng mới, Design – Sửa
lại đối tượng đã có, và Open – Mở (hoặc thực hiện) đối tượng đã chọn.
§1.2. Mô hình dữ liệu quan hệ
Thuộc tính (Attribute):
Thuộc tính là một tính chất của đối tượng cần được phản ảnh trong CSDL phục vụ c
ho việc khai thác thông tin về sau này.
Ví dụ: Về con người, các đặc tính sau đây cần được lưu trữ:
Họ tên, Giới tính, Ngày sinh…
Thuộc tính được đặc trưng bởi:
a. Tên gọi: Tên của thuộc tính là một dãy ký tự bất kỳ bắt đầu bằng ký tự khác k
hoảng trắng (space). Tuy nhiên, nên đặt tên thuộc tính bằng chữ cái Latin, và đặ
t tên một cách gợi nhớ. Nếu tên có chứa các ký tự đặc biệt thì khi sử dụng phải
đặt nó trong cặp dấu ngoặc vuông [ ].
Ví dụ: HoTen, GioiTinh, NgaySinh, +++, ---, ***, ///
Tuy nhiên, 4 tên gọi sau, khi sử dụng phải đặt trong ngoặc vuông: [+++], [---],
[***], [///]
(tiếp theo)
b. Kiểu giá trị:
Mỗi công cụ quản trị CSDL có các kiểu dữ liệu khác nhau. Tuy nhiên đều có chung
các kiểu dữ liệu cơ bản sau:
- Ký tự: (Text, String, Char, ..)
- Kiểu số: (Number, Decimal, Float, …)
Kiểu ngày tháng: (Date/Time) phải có đầy đủ cả ngày, tháng và năm.
Kiểu luận lý: (Logical, Boolean, YesNo, …)
Kiểu dữ liệu đa phương tiện: (OLE) bao gồm hình ảnh (Bitmap), âm thanh (Audio) h
oặc/và phim (Movie)
c. Miền giá trị:
Miền giá trị (Domain) đảm bảo tính đúng đắn của dữ liệu. Bởi nếu mới chỉ xác địn
h có kiểu dữ liệu, ví dụ, thuộc tính chiều cao CCVC là số nguyên, thì có thể nhậ
p giá trị 50cm! Điều này là không thể chấp nhận được.
(tiếp theo)
(tiếp theo)
CHƯƠNG II. CÁC THAO TÁC VỚI BẢNG
NỘI DUNG:
§2.1. Tạo lập cấu trúc bảng
1. Các tính chất (Properties) của cột
2. Thao tác tạo cấu trúc bảng.
3. Thiết lập khóa chính cho bảng
§2.2. Thiết lập mối liên hệ giữa các bảng
§2.3. Tạo bảng từ dữ liệu đã có (Import)
§2.4. Sử dụng chung tài nguyên với các CSDL khác
§2.5. Trích xuất dữ liệu ra file hoặc bảng ngoài
§2.1. Tạo lập cấu trúc bảng
. Các tính chất (Properties) của cột
Microsoft Access có các kiểu dữ liệu sau:
Kiểu văn bản với chiều dài cố định (Text). Trong kiểu này phải xác định độ rộng
của cột – tính theo byte. Độ rộng tối đa của cột là 255 bytes. Giá trị luôn luôn
được điền thêm khoảng trắng ở cuối để cho đủ số lượng đã khai báo.
Kiểu số (Number). Có 5 loại kiểu số theo kích thước lưu trữ. Số nguyên 1 byte (B
yte) có giá trị từ 0 đến 255. Số nguyên 2 bytes (Integer) có giá trị từ –32768 đ
ến +32767. Số nguyên 4 bytes (Long) có giá trị từ khoảng -2,1 tỷ đến +2,1 tỷ. Số
thực độc hính xác đơn (Single) chiếm 4 bytes, có giá trị đảm bảo chỉ có 7 chữ s
ố đầu là có nghĩa đúng đắn. Số thực độ chính xác gấp đôi (Double) đảm bảo 15 chữ
số có ý nghĩa - đúng.
(tiếp theo)
Kiểu luận lý Yes/No (hoặc True/False hoặc On/Off).
Kiểu văn bản có chiều dài thay đổi (Memo). Giá trị có thể có kích thước tối đa 6
4K bytes.
Kiểu tiền tệ (Currency) với bản chất là kiểu số, nhưng khi hiển thị thì có ký hi
ệu tiền tệ $ ở phía trước.
Kiểu Ngày tháng (DateTime). Giá rị kiểu này phải có đầy đủ cả ngày, tháng và năm
.
Kiểu đánh số tăng dần một cách tự động (AutoNumber) là số nguyên 4 bytes, tự độn
g tăng 1 mỗi khi một bản ghi mới được bổ sung vào bảng.
Kiểu dữ liệu đa phương tiện (Object Linked Embedded - OLE), có thể là một bảng t
ính Excel, file Word, hình ảnh (Bitmap), âm thanh (Audio) hoặc phim (Movie).
(tiếp theo)
Ngoài các tính chất cơ bản của cột mà một thuộc tính của quan hệ cần có là Tên (
Name), Kiểu giá trị (Type) và Kích thước (Size), cột của bảng cần được đặc tả ch
i tiết thêm một số tính chất sau:
Tiêu đề cột (Caption) – hiển thị khi nhập dạng bảng
Quy cách hiển thị (Format) – đó là một dãy các ký tự thể hiện quy cách hiển thị
giá trị của field trên màn hình nhập dữ liệu, trong đó:
Đối với kiểu số: Standard – có dấu tách hàng ngàn, hàng triệu. Các giá trị bằng
tiền hay các số lớn thì nên chọn dạng format này. Số 0 để hiện số 0 vô nghĩa.
Đối với kiểu văn bản: dấu ">" để hiện chữ in hoa; "<" để hiện chữ nhỏ.
Với ngày tháng: ShortDate, Medium và LongDate…
(tiếp theo)
- Với kiểu lôgic: hiển thị bằng chữ (text) YesNo, TrueFalse, OnOff hay bằng Chec
k box þ .
Quy cách nhập dữ liệu (Input Mask): Là một dãy ký tự có ý nghĩa như sau:
0 - Tại vị trí đó phải nhập một chữ số (bắt buộc).
9 - Nhập 1 chữ số (không bắt buộc).
# - 1 chữ số (hoặc dấu +/-) bất kỳ (không bắt buộc).
? - Một chữ cái bất kỳ (không bắt buộc)
a - Nhập 1 chữ cái/chữ số bất kỳ (không bắt buộc)
A - Nhập 1 chữ cái/chữ số (bắt buộc).
> - Đổi các chữ cái sau thành chữ in hoa.
< - Đổi các chữ cái sau thành chữ nhỏ.
& - Một ký tự bất kỳ, bắt buộc nhập
C - Một ký tự bất kỳ, không bắt buộc nhập.
(tiếp theo)
Giá trị mặc định (Default Value)
Quy tắc kiểm tra tính đúng đắn của dữ liệu nhập (Validation Rule » RBTV về miền
giá trị). Quy tắc có dạng:
<pss> <giá trị> OR | AND <pss> <giá trị> …
Ở đây <pss> là một trong các phép so sánh sau đây:
>, >=, <, <=, <>, IN, Between, Like.
Thông báo lỗi khi RBTV bị vi phạm (Validation Text)
Dữ liệu có bắt buộc phải được nhập không? (Required)
Allow Zero Length: Cho phép chuỗi có chiều dài bằng 0.
Cần được lập chỉ mục không (Indexed). Có 3 lựa chọn:
No – Không lập chỉ mục (mặc định)
Yes, No duplicates – lập chỉ mục nhưng không chứa gtrị lặp
Yes, Duplicates OK - lập chỉ mục cho cả giá trị lặp.
(tiếp theo)
‚ . Thao tác tạo cấu trúc bảng.
Thao tác:
B0) Khởi động Microsoft Access (nếu chưa làm)
B1) Nếu chưa có CSDL thì tạo mới:
- Nếu mới khởi động MSA thì chọn Blank Microsoft Database ® OK.
Nếu đang trong MSA thì vào menu File chọn New ® OK.
Chọn thư mục lư trữ file CSDL tại mục Save In.
Đặt tên file CSDL tại mục File Name. Tên file CSDL mặc định là DB1, DB2, … Không
cần đặt phần mở rộng cho file CSDL. Hãy sử dụng mặc định cho file CSDL là .mdb.
Màn hình tạo mới CSDL xuất hiện như trong hình sau:
Nếu đã có CSDL thì mở CSDL bởi mục \File\Open
(tiếp theo)
(tiếp theo)
Màn hình đặc tả cấu trúc bảng (tiếp theo)
§2.2. Thiết lập mối liên hệ giữa các bảng
Thao tác: B0), B1) (nếu chưa làm)
B2) Vào Menu Tools, chọn chức năng Relationships. Màn hình xuất hiện như hình dư
ới đây:
(Tiếp theo)
B3) Chọn các bảng cần đưa vào Relationships bởi nút Add. Kết thúc chọn bởi nút C
lose. Màn hình như hình dưới đây:
(Tiếp theo)
B4) Kéo-Thả (Drag-drop) thuộc tính khóa chính vào thuộc tính khóa ngoại của bảng
liên quan, rồi điều chỉnh mối quan hệ tương ứng giữa các thuộc tính khoá chính
và khoá ngoại, như hình dưới đây:
(Tiếp theo)
Chọn kiểu liên kết thông qua tuỳ chọn (Join type). Ba loại liên kết tương ứng vớ
i 3 phép toán đại số quan hệ: Inner Join, Left Join, Right Join. Mặc định là Inn
er Join.
Bắt buộc kiểm tra ràng buộc toàn vẹn về khoá ngoại nếu đánh dấu vào mục ý Enforc
e Referential Integrity. Hai mục sau có thể được chọn:
ý Cascade Update Related Fields: Tự động cập nhật khóa ngoại
Cascade Delete Related Records: Tự động xóa lan truyền.
Chọn nút Create để tạo lập. Cancel để hủy bỏ.
B5) Đóng cửa sổ thiết kế và lưu lại các mối liên kết mới tạo.
** Lưu ý: Giữa 2 bảng chỉ thể hiện một mối liên hệ. Để thể hiện (các) mối liên h
ệ khác thì cần bổ sung lôgíc một trong 2 bảng đó vào lược đồ (Relationships). Tê
n của các bảng lôgíc này được ghép thêm số _1, _2… ở phía sau.
§2.3. Tạo bảng từ dữ liệu đã có (Import)
Nguồn dữ liệu để Import có thể là các Tables, Queries, Forms, Reports, Macros, M
odules của file CSDL Microsoft Access, hoặc file Dbase, Foxpro, Excel, Text hoặc
các bảng trong các CSDL được kết nối mở (Open DataBase Connectivity).
Thao tác: B0), B1), B2) (nếu chưa làm)
B3) Chọn chức năng New\Import Table
Chọn loại dữ liệu nguồn tại mục Files of Type
Xác định thư mục chứa các file dữ liệu thuộc loại trên tại mục Look In.
Xác định tên file (hoặc CSDL) dữ liệu nguồn tại mục: File Name.
Chọn chức năng Import.
Màn hình chọn file dữ liệu nguồn như trong hình cho trong trang sau.
(*) Nếu nguồn dữ liệu là file CSDL của Access thì chỉ cần chọn các Tables, Queri
es, Forms, Reports,Macros hay Modules rồi OK. Nếu là bảng hoặc file CSDL thì đán
h dấu chọn rồi OK để hoàn tất.
(Tiếp theo)
(Tiếp theo)
B4) (Tiếp theo)
B5) (Tiếp theo)
B6) (Tiếp theo)
Cách lưu trữ dữ liệu mới: ¤ In a New Table- Tạo bảng mới, hoặc ¤ In an Existing
Table- Bổ sung dữ liệu vào bảng đã có.
B7) (Tiếp theo)
Sửa lại tên, kiểu giá trị và xác định các cột không cần giữ lại trong bảng đích:
ý Do not Import Field – bỏ qua.
B8) (Tiếp theo)
Để Microsoft tự bổ sung thêm cột có tên là ID với kiểu giá trị là AutoNumber - t
ự động tăng 1 làm thuộc tính khóa chính (Let Access Add Primary Key), hoặc xác đ
ịnh một cột làm khoá chính (Choose My Own Primary Key) hoặc không chọn thuộc tín
h nào làm khóa (No Primary Key)
B9) (Tiếp theo)
Đặt lại tên cho bảng, rồi nhấn Finish để kết thúc.
(Tiếp theo)
(*) Ghi chú: Khi Import từ file *.txt hoặc *.xls, để đảm bảo việc chuyển đổi bản
g mã tiếng Việt đúng đắn, cần chọn trang mã (Code Page) là Western European (Win
dows), thông qua nút chức năng bổ sung (Advanced).
(Tiếp theo)
Nếu việc Import thành công thì MSA sẽ có thông báo hoàn tất. Nếu việc Import khô
ng thành công thì có thông báo lỗi, và các d ng không Import được sẽ được lưu tr
ong 1 bảng có tên với phần bổ sung là _ImportError. Lỗi sai thường gặp nhất là s
ai cách chuyển đổi dữ liệu sang dạng DateTime. MSA sử dụng cách biểu diễn ngày t
háng của hệ điều hành Windows, do đó, nếu Windows dùng dạng mm/dd/yyyy và dữ liệ
u Import có dạng dd/mm/yyyy (ví dụï 25/01/2001) thì quá trình Import sẽ gây lỗi.
MSA thực hiện việc chuyển đổi dữ liệu khi Import từ file văn bản như sau:
Dãy chữ ® Text(255). Số nguyên ® Long Integer.
Số thực ® Double. xx/yy/zz ® DateTime.
Do đó, sau khi Import xong (thì) cần phải thực hiện chức năng Design để đặc tả l
ại cấu trúc của bảng.
§2.4. Sử dụng chung tài nguyên với CSDL khác
Nguồn dữ liệu để dùng chung (Link) phải là các dữ liệu có cấu trúc. Đó phải là (
các) file hoặc bảng của (các) CSDL khác. Nguồn này có thể là từ Access, Dbase, F
oxpro hoặc ODBC. File Excel không phải là một nguồn thích hợp cho việc dùng chun
g trong môi trường Access
Thao tác: B0), B1),B2) (Nếu chưa làm)
B3) Chọn New\Link Table
B4) Chọn các bảng dữ liệu để dùng chung
OK để h an tất.
PLACEHOLDER
§2.5 Trích xuất dữ liệu ra file hoặc bảng ngoài
Thao tác: B0), B1, B2) ( nếu chưa làm)
B3) Chọn bảng cần trích xuất
B4) Nhắp chuột phải, chọn Export (hoặc =\File\Export)
B4) Xác định lọai đích tại mục Files of Type; Thư mục lưu trữ tại Save In, và tê
n file tại File Name. ® SAVE để trích dữ liệu (như trong hình kế sau):
Nếu lọai dữ liệu đích là một bảng của file CSDL Access thì cho biết tên bảng đíc
h và đồng thời xác định cách sao chép:
Dữ liệu và cấu trúc (Definition and Data): dũ liệu cùng cấu trúc bảng
‚ Hoặc chỉ sao chép cấu trúc: (Definition Only).
Þ OK để h an tất.
(Hình trang sau:)
Export Data (Tiếp theo)
Export Data (Tiếp theo)
Export Data (Tiếp theo)
(Tiếp theo)
(Tiếp theo)
CHƯƠNG III. TRUY VẤN CSDL (Queries)
NỘI DUNG:
§3.1. Truy vấn để tìm kiếm thông tin
1. Câu lệnh truy vấn đơn
2. Câu hỏi có câu hỏi con (SubQuery)
§3.2. Truy vấn để sửa đổi dữ liệu (Update)
§3.3. Truy vấn tổng hợp dữ liệu (Cross-Tab)
§3.4. Các lệnh truy vấn khác
1. Tạo/sửa cấu trúc bảng
2. Thiết lập ràng buộc toàn vẹn
§3.1. Truy vấn để tìm kiếm thông tin
Có 2 cách tạo 1 Query trong MSA: Câu lệnh SQL hoặc bằng công cụ Wizard kéo-thả (
Drag-Drop) trên lưới (Grid). Có thể chuyển đổi qua lại giữa 2 cách này.
Cú pháp câu lệnh truy vấn (đã học):
SELECT [DISTINCT] [TOP n [PERCENT]]
<bthức 1>[AS <tên1>], <bthức 2>[AS <tên2>],…
FROM <bảng 1> [[AS]<bí danh>],<bảng 2>[[AS]<bí danh>], …
[WHERE <điều kiện chọn bản ghi để xử lý>]
[GROUP BY <bthức nhóm 1> <bthức nhóm 2>, … ]
[HAVING <điều kiện chọn kết quả cuối cùng>]
[ORDER BY <bthức 1>[ASC/DESC], … ];
Dấu chấm phảy cuối câu là tùy chọn. Chữ hoa hay chữ thường là như nhau.
(Tiếáp theo)
(*) DISTINCT : Chỉ giữ lại những d ng khác nhau.
(*) Cụm từ TOP n [PERCENT] luôn luôn phải được đi kèm với mệnh đề ORDER BY.
- TOP n : n d ng đầu tiên và những d ng có giá trị sắp xếp như d ng thứ n.
- TOP n PERCENT : n% (lấy cận trên) số d ng kết quả tìm được. Ví dụ, nếu n% = 1.
2 thì lấy cận trên bằng 2.
(*) <bảng i> (i=1..n) có thể là tên bảng dữ liệu vật lý, Query hoặc phép kết 2 q
uan hệ theo cú pháp:
<bảng 1> <phép kết> <bảng 2> ON <điều kiện kết>
<phép kết> ::= INNER JOIN / LEFT JOIN / RIGHT JOIN / OUTER JOIN.
(*) Nếu sau FROM là danh sách các bảng thì phải thể hiện mối liên hệ giữa các bả
ng đó trong mệnh đề WHERE.
(Tiếáp theo)
(*) Ngoại trừ các biểu thức có chứa các hàm tích hợp các biểu thức c n lại sau S
ELECT đều phải có mặt trong mệnh đề GROUP BY.
(Tiếáp theo)
Thao tác: B0), B1) (nếu chưa làm)
B2) Chọn đối tượng Queries (nếu chưa làm)
B3) Xác định nguồn dữ liệu cho Query (bảng hoặc query) bằng nút Add, và kết thúc
bằng nút Close
B4) Lần lượt kéo-thả các Field từ các bảng vào lưới (GRID)
Thi hành câu lệnh bởi nút có hình dấu chấm than ! (Run)
Chuyển đổi sang câu lệnh SQL thông qua nút Design ở góc trái trên của của sổ thi
ết kế Query.
(Tiếáp theo)
2. Câu hỏi có câu hỏi con (SubQuery)
Định nghĩa: Câu hỏi con là một câu hỏi mà kết quả của nó được dùng làm toán hạng
của một phép so sánh trong biểu thức điều kiện của câu hỏi khác. Câu hỏi con ph
ải được đặt trong cặp dấu ngoặc tr n.
(*) MSA chỉ cho phép 1 biểu thức sau SELECT trong câu truy vấn con. Do đó, nếu c
ó nhiều biểu thức thì phải ghép chúng lại thành một thông qua phép nối ghép &.
(*) Các ví dụ minh họa:
Câu 1: Cho tên và danh sách nhân viên của từng ph ng/ban
SELECT DeptName, E.*
FROM Department D, Employee E
WHERE D.Deptno=E.Deptno;
(Tiếáp theo)
Câu 2: "Cho tên ph ng và d.sách nhân viên có lương hơn 4000"
SELECT DeptName, E.*
FROM Department D, Employee E
WHERE D.Deptno=E.Deptno AND Salary > 4000;
Câu 3: "Cho biết người có lương cao nhất trong công ty"
SELECT * FROM Employee
WHERE Salary = (SELECT MAX(Salary) FROM Employee);
Câu 4: "Cho biết tên ph ng của người lương cao nhất công ty".
SELECT DeptName FROM Department WHERE Deptno IN
(SELECT * FROM Employee
WHERE Salary=(SELECT MAX(Salary) FROM Employee));
Câu 5: "Cho tên ph ng có lương trung bình lớn hơn lương trung bình của các nhân
viên trong ph ng Smith".
(Tiếáp theo)
Tìm mã ph ng của Smith ® (x)
Tìm lương trung bình của các NV có mã ph ng=(x) ® (y)
Tính lương trung bình của các ph ng, kết quả chỉ giữ lại những ph ng nào có lươn
g trung bình lớn hơn (y).
SELECT DeptName FROM Department D, Employee E
WHERE D.Deptno=E.Deptno
GROUP BY D.Deptno, DeptName
HAVING AVG(Salary) >
( SELECT AVG(Salary) FROM Employee
WHERE Deptno=
( SELECT Deptno FROM Employee
WHERE Name=‘Smith’
)
);
§3.2. Truy vấn để sửa đổi dữ liệu
1. Query tạo bảng (Make Table Query)
SELECT [DISTINCT] [TOP n [PERCENT]]
<bthức 1>[AS <tên1>], <bthức 2>[AS <tên2>],…
INTO <Tên bảng>
FROM <bảng 1> [[AS]<bí danh>],<bảng 2>[[AS]<bí danh>], …
[WHERE <điều kiện chọn bản ghi để xử lý>]
[GROUP BY <bthức nhóm 1> <bthức nhóm 2>, … ]
[HAVING <điều kiện chọn kết quả cuối cùng>]
[ORDER BY <bthức 1>[ASC/DESC], … ];
Ví dụ: Tạo bảng Manager chứa danh sách các lãnh đạo ph ng
SELECT * INTO Manager FROM Employee
WHERE Job="Mngr";
2. Query bổ sung thêm dữ liệu.
a. Thêm một bản ghi từ dữ liệu đã cho:
(Tiếáp theo)
INSERT INTO <Tên bảng> [(<Danh sách cột>)]
VALUES(<danh sách giá trị>); 
Ví dụ: "Thêm NV mới tên là "Tony" M SỐ 300 vào ph ng số 40, làm nhân viên bán h
àng với mức lương là 2,500$"
INSERT INTO Employee
VALUES (300, "Tony", "Slsm", 2500, NULL, 40, "M");
Hoặc:
INSERT INTO Employee (Name, Empno, Job, Salary, Deptno)
VALUES ("Tony", 300, "Slsm", 2500, 40);
b. Bổ sung dữ liệu từ CSDL.
INSERT INTO <Tên bảng> [(<Danh sách cột>)]
<Câu lệnh SELECT không có mệnh đề ORDER BY>;
(Tiếáp theo)
Ví dụ: "Thêm vào bảng Manager các nhân viên có lương >4000"
INSERT INTO Manager
SELECT * FROM Employee
WHERE Salary>4000 AND Empno NOT IN
(SELECT Empno FROM Manager);
3. Query sửa dữ liệu:
UPDATE <bảng / query / phép kết>
SET <cột 1> = <bthức 1>, <cột 2>=<bthức 2>, …
[WHERE <điều kiện cập nhật>];
Ví dụ: a. Tăng lương 10% cho các nhân viên phụ trách ph ng.
UPDATE Employee SET Salary= Salary*1.1
WHERE Job=‘Mngr’;
b. Tiền lương tối thiểu phải bằng mức thấp nhất của công việc.
UPDATE Employee e INNER JOJN Jobs v ON v.Job=e.Job
SET Salary= IIF(Salary < Minsalry, MinSalry, Salary);
(Tiếáp theo)
4. Query xóa dữ liệu:
DELETE [<loại bản ghi>] FROM <bảng / query / phép kết>
[WHERE <điều kiện xóa>];
(*) Nếu nguồn là query hoặc phép kết thì phải có thành phần <loại bản ghi> để ch
o biết xóa bộ giá trị của bảng nào.
Ví dụ: a. "Xóa các nhân viên phụ trách các ph ng ban"
DELETE FROM Employee
WHERE Job=‘Mngr’;
b. "Xóa các nhân viên có lương nhỏ hơn lương tối thiểu của c/v"
DELETE e.* FROM Jobs v INNER JOIN Employee e
ON (e.job=v.Job) WHERE Salary < Minsalry;
§3.3. Truy vấn tổng hợp dữ liệu (Cross-Tab)
Cú pháp:
TRANSFORM <biểu thức phân tổ>
SELECT <các biểu thức chủ từ>
FROM <các bảng>
[WHERE <điều kiện chọn bản ghi để xử lý>]
GROUP BY <Các biểu thức phân nhóm>
PIVOT <tên cột> [IN (<danh sách giá trị>)]
Diễn giải: …
Ví dụ: "Cho tên, tổng số n/v chia theo giới tính của các ph ng"
Transform Count(*)
Select Deptname, Count(*) as Total
From Department d Inner Join Employee on d.deptno=e.deptno
Group By DeptName Pivot Sex IN (‘F’, ‘M’)
(Tiếp theo)
§3.4. Các câu lệnh truy vấn khác
(Tiếp theo)
(Tiếp theo)
CHƯƠNG IV. THIẾT KẾ GIAO DIỆN (Forms)
NỘI DUNG:
§4.1. Một số khái niệm – Cấu trúc tổng quát
1. Cấu trúc tổng quát của một Form
2. Các loại Form trong Microsoft Access
§4.2. Tạo Form bằng công cụ hỗ trợ (Wizard)
1. Tạo Form nhanh dạng Columnar, DataSheet
2. Tạo Form có SubForm
§4.3. Các thao tác sửa Form – Các hàm tích hợp
§4.4. Tự thiết kế Form (Form Design)
§4.1. Một số khái niệm – Cấu trúc tổng quát
Cấu trúc tổng quát của một Form
Một Form có thể có 5 phần:-Tiêu đề mẫu nhập (Form Header), phần này chỉ xuất hiệ
n một lần đầu tiên trên trang đầu tiên.
(Tiếp theo)
(Tiếp theo)
(Tiếp theo)
(Tiếp theo)
§4.2. Tạo Form bằng công cụ hỗ trợ (Wizard)
MSA có công cụ hỗ trợ để hướng dẫn từng bước trong việc tạo một Form nhanh chóng
, gọi là Wizard.
1. Tạo Form nhanh dạng Columnar, DataSheet, Tabular
Thao tác: B0), B1) (nếu chưa làm)
B2) Chọn đối tượng Forms (nếu chưa làm).
B3) - Chọn New\AutoForm (Datasheet hoặc Tabular hoặc Columnar)
- Xác định nguồn dữ liệu cho Form tại Combo Box.
- Nhấn OK để hoàn tất.
Tên Form là tên bảng / query dữ liệu nguồn.
2. Tạo Form có SubForm
Thao tác:
B0), B1), B2) (nếu chưa làm)
B3) New\Form Wizard
B4) Lần lượt chọn các field từ các bảng cần hiển thị / nhập
B5) Chọn nguồn dữ liệu chính, dữ liệu tham khảo.
B6) Chọn cách hiển thị Form con
B7) Chọn phong cách (Style) cho Form: (nên chọn Standard)
B8) Đặt tên cho Form và SubForm
B9) Finish để kết thúc
(Next: đi tiếp bước sau. Back: quay lại bước trước).
Ví dụ: Tạo Form nhập dữ liệu cho bài tóan quản lý vũ khí như trong bài tập đã ch
o)
§4.3. Các thao tác sửa Form – Các hàm tích hợp
§4.4. Tự thiết kế Form (Form Design)
Thao tác:
B0), B1), B2) (nếu chưa làm)
B3) New \ Design View. OKÞ
B4) Xác định kích thước Form (chiều cao và chiều rộng)
B5) Xác định nguồn dữ liệu cho Form tại Record Source.
B6) Lần lượt kéo-thả các field vào các vị trí thích hợp của Form.
B7) Bổ sung các đối tượng khác vào Form
B9) Đặt các thuộc tính cần thiết cho Form và các đối tượng khác trên Form. Trình
bày Form sao cho cân đối.
B10) Đóng cửa sổ thiết kế và đặt tên cho Form.
* Nên tạo query để lấy dữ liệu nguồn cho Form)
CHƯƠNG V. THIẾT KẾ MẪU BÁO CÁO (Reports)
NỘI DUNG:
§5.1. Một số khái niệm
1. Cấu trúc tổng quát của 1 báo cáo (Report)
2. Các loại báo cáo trong Microsoft Access
§5.2. Tạo Report bằng công cụ hỗ trợ (Wizard)
1. Tạo Report nhanh (Auto Report)
2. Tạo Report có d ng tổng nhóm (SubTotals)
3. Tạo Report dạng phiếu (Label)
4. Tạo Report dạng biểu đồ (Chart)
§5.3. Tự thiết kế Report (Report Design)
§5.1. Một số khái niệm
Cấu trúc tổng quát của 1 báo cáo (Report)
Tương tự như Form, 1 báo cáo cũng có thể có 5 phần:
- Report Header: tiêu đề báo cáo, nó chỉ được in trên trang đầu tiên của báo cáo
;
- Page Header: tiêu đề trang báo cáo được in giống nhau trên mỗi trang in. Thông
thường là các tiêu đề cột – hoặc d ng chứa số thứ tự cột của biểu;
- Details: Phần để in nội dung của mỗi bản ghi dữ liệu nguồn;
- Page Footer: Phần cuối trang báo cáo. Thông thường dùng để in các chú thích tr
ong trang cũng như đánh số thứ tự trang in.
- Report Footer: Tiêu đề cuối báo cáo. Thông thường dùng để in các thông tin xác
nhận trách nhiệm và sở hữu số liệu của đơn vị như: ngày lập báo cáo, người lập
báo cáo, người duyệt báo cáo (ký và ghi họ tên), và thủ trưởng đơn vị ký tên, đó
ng dấu.
(Tiếp theo)
2. Các loại báo cáo trong Microsoft Access.
Báo cáo dạng bảng Datasheet, mỗi bản ghi in trên 1 d ng.
Báo cáo dạng cột Columnar. Mỗi field in trên 1 d ng. Hai dạng này phục vụ cho cá
c báo cáo nhanh tức thời, cần thông tin và số liệu hơn mặt pháp quy.
Báo cáo dạng tổng hợp có thể có các d ng tổng con. Đây là dạng thông dụng nhất t
rong các cơ quan, đơn vị.
Báo cáo dạng phiếu (Label). Mỗi bản ghi dữ liệu nguồn được in trên một phần của
trang giấy in.
Báo cáo dạng biểu đồ (Chart) để phản ánh sự biến thiên của một dãy số (dạng line
), hoặc mang tính so sánh (Column / Bar) hay tỷ trọng của một đại lượng trong tổ
ng thể (Pie), ...
§5.2. Tạo Report bằng công cụ hỗ trợ (Wizard)
1. Tạo Report nhanh (Auto Report)
Thao tác:
B0), B1) (nếu chưa làm)
B2) Chọn đối tượng Report (nếu chưa làm)
B3) - New \ AutoReport: Tabular/Columnar
- Xác định bảng dữ liệu nguồn cho báo cáo.
- Nhấn OK để hoàn tất
B4) Đóng cửa sổ kết quả và đặt tên lại cho báo cáo
Tên mặc định của báo cáo là tên bảng dữ liệu nguồn.
2. Tạo Report có d ng tổng nhóm (SubTotals)
B0), B1), B2) (nếu chưa làm)
B3) New \ Report wizard. OK để đi tới bước tiếp theo
B4) Lần lượt chọn các fields từ các bảng cần in trên Report.
B5) Xác định bảng dữ liệu nào là chính.
(Tiếp theo)
B6) Bổ sung các cách phân nhóm các bản ghi. Nếu có nhóm thì có thể nhấn Grouping
Options để thiết lập cách phân nhóm (Grouping Intervals). Nếu cột phân nhóm có
kiểu văn bản thì có thể nhóm theo 1, 2, hay nhiều ký tự đầu tiên; nếu có kiểu số
thì có thể nhóm theo 1, 5, 10, 50, 100,... hoặc kiểu DateTime thì nhóm theo tuầ
n, tháng, quý, năm, v.v...
B7) Xác định việc sắp xếp thứ tự in theo cột nào.
(Tiếp theo)
B8) - Chọn hình thức in báo cáo (Report Layout). Có thể chọn Layout là Stepped (
mỗi cấp phân nhóm thì lùi vào phía phải).
- Chọn hướng in (Orientation) là Portrait hoặc LandScape.
B9) Chọn kiểu in các chữ và nhóm trong báo cáo (Formal)
B10) Đặt tên cho Report, đồng thời là tiêu đề báo cáo.
Finish để kết thúc.
Ví dụ: Bài toán quản lý vũ khí, Công nợ, Kế toán, Thương binh
3. Tạo Report dạng phiếu (Label)
Thao tác:
B0), B1), B2) (nếu chưa làm)
B3) - New \ Label Wizard.
- Xác định nguồn dữ liệu
- OK để đi tiếp bước sau.
B4) Xác định kích thước Label từ một số mẫu có sẵn.
(Tiếp theo)
Nếu muốn tạo kích thước mẫu mới thông qua chức năng Customize \ Edit\. Và thiết
lập các thông số lề trái, phải, trên, dưới, khoảng cách so với các Label lân cận
, ...
B5)Xác định Font, kích thước và kiểu chữ trong Label.
B6) Xác định các field có sẵn cần in trên Label.
B7) Xác định thứ tự in các bản ghi (Sort Order...)
B8) Đặt tên cho Label vàFinish để kết thúc.
4. Tạo Report dạng biểu đồ (Chart)
Thao tác:
B0), B1), B2) (nếu chưa làm)
B3) - New \ Chart Wizard.
- Xác định nguồn dữ liệu
- OK để đi tiếp bước sau.
(Tiếp theo)
B4) Xác định các field chứa dữ liệu để vẽ biểu đồ.
B5) Xác định loại biểu đồ (Line, Bar, Pie, Area)
B6) Xác định giá trị trục x, y bằng cách kéo-thả vào Chart
B7) Đặt tên cho biểu đồ và Finish để hoàn tất.
§5.3. Tự thiết kế Report (Report Design)
Thao tác:
B0), B1), B2) (nếu chưa làm)
B3) New \ Design View.
B4) Xác định khổ giấy (Paper size), lề (Margins), hướng in (Orientation) thông q
ua \File \ Page Setup
B5) Xác định nguồn dữ liệu cho Report thông qua thuộc tính Record Source của đối
tượng Report.
B6) Bổ sung các thành phần phân nhóm để lấy tổng con (Sub Totals) \View \ Sortin
g and Grouping
B7) Lần lượt kéo-thả các thuộc tính cần thiết vào Report
B8) Bổ sung các Control cần thiết khác
B9) Đặt thuộc tính cho các đối tượng trên Report. Trình bày Report sao cho cân đ
ối.
B10) Đóng cửa sổ thiết kế và đặt tên cho Report.
CHƯƠNG VI. LỆNH VĨ MÔ (Macros)
NỘI DUNG:
§6.1. Khái niệm
§6.2. Hệ thống Macros của Microsoft
1. Nhóm hành động thao tác với Form/Report
2. Nhóm hành động
3. Nhóm hành động
4. Nhóm hành động
§6.3. Một số hành động (Action) thông dụng
Ứng dụng trong việc tạo Menu hệ thống
CHƯƠNG VII. LẬP TRÌNH VỚI ACCESS BASIC
NỘI DUNG:
§7.1. Khái niệm
§7.2. Các kiểu dữ liệu của Microsoft Access
1. Kiểu vô hướng (Scalar)
2. Kiểu mảng (Array)
3. Kiểu dữ liệu tự định nghĩa
4. Kiểu đối tượng truy nhập dữ liệu (D.A.O)
§7.3. Hệ thống lệnh các câu lệnh của Access
1. Khai báo biến (Declaration)
2. Rẽ nhánh chương trình (If, Select Case)
3. Các lệnh lặp (For, Do, While)
§7.4. Thủ tục và Hàm
§7.5. Xây dựng Ứng dụng bằng Access
§7. 2. Các kiểu dữ liệu của Microsoft Access
1. Kiểu vô hướng (Scalar)
2. Kiểu mảng (Array)
3. Kiểu dữ liệu tự định nghĩa (User-Defined)
4. Kiểu đối tượng truy nhập dữ liệu (D.A.O)
§7.3. Hệ thống lệnh các câu lệnh của Access
Khai báo biến (Declaration)
Cú pháp:
[Global/Private/Dim] <biến 1>[(<số lượng>)] [As <kiểu 1>],
<biến 2>[(<số lượng>)] [As <kiểu 2>], ...
Ngữ nghĩa:
Từ khóa Global thể hiện việc khai báo biến là tổng thể, tức là dùng chung được c
ho toàn ứng dụng Access. Điều dễ hiểu là các biến thuộc loại này phải được khai
báo trong các modules.
Từ khóa Private /Dim thể hiện việc khai báo biến là cục bộ, tức là chỉ có nghĩa
trong phạm vi nó được khai báo, ngoài vùng khai báo biến không c n giá trị. Có t
hể là cục bộ trong hàm, cục bộ trong module chương trình của một Form/Report, ho
ặc trong modules các hàm tổng thể.
(Tiếp theo)
<biến> là một định danh (Identifier), là một dãy ký tự chữ cái và/hoặc chữ số, b
ắt đầu bằng chữ cái. Có thể có thêm 1 ký tự theo sau, thể hiện kiểu dữ liệu: % -
số nguyên Integer, $ - chuỗi, ! – số thực single...
Nếu không khai báo tường minh kiểu cho biến thì biến có kiểu mặc định là biến th
ể (Variant).
Việc khai báo biến trong Visual Basic, nói chung, là không bắt buộc. Tuy nhiên,
nên khai báo biến để dễ kiểm soát chương trình, và tận dụng được khả năng Visual
của Basic.
Ví dụ: Dim i, j, k As Integer
Thì chỉ có k là thuộc kiểu số nguyên 2 bytes, c n i và j đều thuộc kiểu Variant.
Tên biến viết hoa hay thường là như nhau
(Tiếp theo)
2. Gán giá trị cho biến (Set)
Cú pháp:
[Set] <biến> = <biểu thức>
Giá trị của biểu thức được tính toán và gán cho <biến>. Nếu kiểu giá trị của biể
u thức là vô hướng (Scalar) và kiểu của biến cũng là vô hướng thì máy tự chuyển
đổi kiểu cho phù hợp với kiểu lưu trữ của biến.
Nếu <biến> có kiểu đối tượng (Object) thì câu lệnh gán phải có từ khóa Set.
Ví dụ:
Dim MyDB As DAO.Database, MyTab As DAO.Tabledef
Dim nTabs As Integer ‘ Số lượng table trong CSDL.
Set MyDB = DBEngine.Workspaces(0).Databases(0)
Set MyTab = MyDB.Tabledefs(0)
nTabs = MyDB.Tabledefs.Count
(Tiếp theo)
3. Lệnh rẽ nhánh chương trình (If, Select Case)
a) Lệnh rẽ nhánh (IF).
Cú pháp của lệnh được đơn giản hóa như sau:
If <điều kiện> Then
<các câu lệnh nếu điều kiện là đúng>
[Else
<các câu lệnh nếu điều kiện là sai> ]
End If
(*) Nếu sau Then chỉ có 1 câu lệnh thì có thể viết lệnh trên cùng 1 d ng với The
n và không cần End If
Ví dụ: If n <= 0 Then Exit Function
If Delta >= 0 then
x1 = (-b + Sqr(Delta)) / (2* a): x2 = (-b - sqr(Delta)) / (2* a)
Else : debug.print "Vô nghiệm"
End if
(Tiếp theo)
b) Lệnh chọn 1 trong nhiều khả năng (SELECT CASE).
Cú pháp:
Select Case (<biểu thức>)
Case <d/s giá trị 1>
<Các câu lệnh 1>
Case <d/s giá trị 2>
<các câu lệnh 2>
...
Case <d/s giá trị n>
<các câu lệnh ứng với trường hợp n>
[ Case Else
< các câu lệnh khác> ]
End Select
(Tiếp theo)
4. Các lệnh lặp (For, Do, While)
a. Lặp hữu hạn từ 0 đến nhiều lần For:
For <biến> = <gtrị 1> To <gtrị 2> [Step n]
<Các câu lệnh>
Next [<biến>]
Ngữ nghĩa: Nếu không có [Step n] thì mặc định là Step 1.
Ban đầu <biến> nhận <gtrị 1>. Chừng nào mà giá trị của <biến> c n nhỏ hơn hoặc b
ằng <gtrị 2> (với n>0) hay lớn hơn hoặc bằng <gtrị 2> (với n<0) thì <Các câu lện
h> c n được thực hiện; sau mỗi lần thực hiện thì giá trị của <biến> sẽ được cộng
thêm với gia số n.
Ví dụ: Tính giá trị của n giai thừa (n! = 1.2.3...n)
Dim f As Double, i As Integer
f = 1
(Tiếp theo)
For i = 1 To n
f = f * i
Next i
Trong số các câu lệnh sau For, có thể có các lệnh Exit For để kết thúc bất thườn
g (kết thúc sớm) v ng lặp.
b. Lặp vô hạn lần Do:
Dạng b1):
Do [While / Until <điều kiện>]
<Các câu lệnh>
Loop
Hoặc dạng b2):
Do
<Các câu lệnh>
Loop [While / Until <điều kiện>]
(Tiếp theo)
Ngữ nghĩa: Chừng nào <điều kiện> c n thỏa mãn (với từ khóa While) thì c n thực h
iện <các câu lệnh> sau Do; hoặc c n thực hiện <các câu lệnh> sau Do cho tới khi
(Until) điều kiện được thỏa.
Trong dạng b1) điều kiện sẽ được kiểm tra trước khi thực hiện các câu lệnh. C n
trong dạng b2) điều kiện sẽ được kiểm tra sau khi thực hiện xong các câu lệnh.
Có thể kết thúc v ng lặp một cách bất thường nhờ câu lệnh Exit Do trong v ng lặp
.
c. Lặp với số lần không biết trước While.
While <điều kiện>
<Các câu lệnh>
Wend
(Tiếp theo)
Ngữ nghĩa: Chừng nào <điều kiện> sau While c n thỏa thì <các câu lệnh> sau Do c
n được thực hiện.
Không có lệnh để kết thúc v ng lặp một cách bất thường.
d. Lặp với các phần tử trong 1 tập hợp For Each ... Next.
For Each <phần tử> In <Nhóm>
<Các câu lệnh>
Next <phần tử>
Ví dụ:
Dim MyDB As DAO.Database, MyTab As DAO.Tabledef
Set MyDB = CurrentDB
For Each MyTab In MyDB.Tabledefs()
MsgBox "Tên bảng: " & MyTab.Name
Next MyTab
§7.4. Thủ tục và hàm
1. Khai báo / định nghĩa thủ tục (Subroutine)
[Private] Sub ([ByVal / ByRef] <arg>, [ByVal / ByRef] <arg>, ...)
[<Các khai báo biến cục bộ của thủ tục>]
<Các câu lệnh / Exit Sub>
End Sub
(*) Mặc định: các tham đối được truyền theo tên (Call by Name).
ByVal – truyền theo tham trị (Call by Value); ByRef – truyền theo tham chiếu (Ca
ll By Reference).
(*) Các tham đối hình thức của hàm có vai tr như những biến cục bộ. Để kết quả
thi hành thủ tục có ảnh hưởng tới tham đối thực khi gọi hàm, thì các tham đối nà
y phải được khai báo với từ khóa ByRef hoặc không có ByVal và ByRef.
(*) Nếu tham đối hình thức là 1 mảng thì đặt sau nó cặp dấu ngoặc tr n ( ).
(Tiếp theo)
2. Khai báo / định nghĩa hàm (Function)
[Private] Function <tên hàm> ([ByVal / ByRef] <arg>, [ByVal / ByRef] <arg>, ...)
As <Kiểu kết quả trả về của hàm>
[<Các khai báo biến cục bộ của thủ tục>]
<Các câu lệnh / Exit Function >
End Function
(*) Trong thân của hàm phải có ít nhất một lần gán giá trị cho tên hàm. Đó chính
là giá trị kết quả trả về của hàm.
Các ví dụ:
Thủ tục liệt kê tên các bảng có trong CSDL hiện thời (trừ các bảng hệ thống có t
ên bắt đầu bằng chữ "MSys")
Kiểm tra xem bảng có tên là "TabName" đã có trong CSDL UsrDB hay chưa?
Tương tự đối với Query "QryName"
(Tiếp theo)
Private Sub TenBang ()
Dim MyDB As DAO.Database, i As Integer
Set MyDB = CurrentDB
For i = 0 to MyDB.TableDefs.Count - 1
If Left(MyDB.tableDefs(i).Name, 4) <> "MSys" then
MsgBox "Bảng thứ i là: " & MyDB.TableDefs(i).Name
End If
Next i
End Sub
Private Function ExistTable (DB As Database, TName As String)
Dim i As Integer
For i = 0 to DB.TableDefs.Count-1
if DB.TableDefs(i). Name = TName then Exit For
Next i
ExistTable = (i < DB.TableDefs.Count)
End Function
(Tiếp theo)
Private Function ExistQuery() As Boolean
Dim MyDB As DAO.Database, i As Integer
Set MyDB = CurrentDB
For i = 0 to MyDB.TableDefs.Count - 1
If Left(MyDB.tableDefs(i).Name, 4) <> "MSys" then
MsgBox "Bảng thứ i là: " & MyDB.TableDefs(i).Name
End If
Next i
End Sub
Private Function ExistTable (DB As Database, TName As String)
Dim i As Integer
For i = 0 to DB.TableDefs.Count-1
if DB.TableDefs(i). Name = TName then Exit For
Next i
ExistTable = (i < DB.TableDefs.Count)
End Function

Vous aimerez peut-être aussi