Bài giảng Tin học ứng dụng (Phần II)

pdf 89 trang ngocly 2810
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Tin học ứng dụng (Phần II)", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_tin_hoc_ung_dung_phan_ii.pdf

Nội dung text: Bài giảng Tin học ứng dụng (Phần II)

  1. Phần II HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU MICROSOFT ACCESS
  2. CHƯƠNG 4. GIỚI THIỆU HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU MICROSOFT ACCESS 4.1. Giới thiệu Microsoft Access MS Access là một Hệ quản trị cơ sở dữ liệu quan hệ (RDBMS - Relational Database Management System), là một phần mềm trong bộ ứng dụng Microsoft Office chạy trên môi trường Windows của hãng phần mềm Microsoft. MS Access có giao diện thân thiện, dễ sử dụng, hiệu năng cao, cho phép xử lý dữ liệu và kết xuất vào các biểu mẫu, báo cáo theo dạng thức chuyên nghiệp rất phù hợp cho các bài toán quản lý vừa và nhỏ. Microsoft Access còn cung cấp nhiều công cụ phát triển đầy năng lực để nâng cao hiệu suất công việc. Bằng cách dùng các Wizard của MS Access và các lệnh có sẵn (macro) người sử dụng có thể dễ dàng tự động hóa công việc mà không cần lập trình. 4.2. Khởi động MS Access Start All Programs Microsoft Office Microsoft Office Access 4.3. Tạo cơ sở dữ liệu mới Một cơ sở dữ liệu Access được lưu trên đĩa dưới dạng một tập tin. Để tạo một CSDL mới thì chọn menu File New Blank Database
  3. Ở hộp thoại tiếp theo, chọn nơi lưu trữ và tên tập tin cơ sở dữ liệu Nơi lưu tập tin cơ sở dữ liệu Tên tập tin cơ sở dữ liệu Sau khi chọn nơi lưu trữ và tên tập tin thì nhấn vào nút để tạo cơ sở dữ liệu mới. 4.4. Mở một CSDL đã có trong máy tính Sử dụng một trong các cách sau Vào menu File Open Chọn thư mục và double-click vào tập tin CSDL. 4.5. Các đối tượng chính của một CSDL Access Access là một hệ quản trị theo mô hình cơ sở dữ liệu quan hệ, vì vậy vì vậy Access có các đối tượng để thể hiện các khái niệm quan hệ, lược đồ quan hệ và truy vấn: Bảng (Table) : thể hiện khái niệm quan hệ trong cơ sở dữ liệu. Bảng có hai chế độ: design view - lược đồ quan hệ và data view - quan hệ. Trong bảng gồm nhiều dòng - bộ và cột – thuộc tính Truy vấn (Query): Để thực hiện các truy vấn và một số thao tác thêm, xóa, sửa trên các bảng. Các thành phần tiện ích khác: Biểu mẫu (Form): Giao diện do người dùng tự tạo cho phép làm việc với dữ liệu, chủ yếu được sử dụng trong việc nhập và hiển thị dữ liệu. Báo cáo (Report) : Kết quả của quá trình khai thác dữ liệu được tổ chức và định dạng để tạo thành bản in. Pages: Tương tự như Form nhưng hoạt động trên nền Web. Macro : Tập hợp các lệnh nhằm tự động hóa các thao tác. Module: Cho phép lập trình thao tác trên các bảng và truy vấn.
  4. 4.6. Các toán tử sử dụng trong MS Access Toán tử Ý nghĩa ( ) Kết nhóm biểu thức Not Phủ định mệnh đề Kết hợp mệnh đề: tất cả mệnh đề thành phần đúng thì cho kết quả And đúng, nếu có ít nhất 1 mệnh đề thành phần sai thì cho kết quả sai. Kết hợp mệnh đề: tất cả mệnh đề thành phần sai thì cho kết quả sai, Or nếu có ít nhất 1 mệnh đề thành phần đúng thì cho kết quả đúng. Xor 2 mệnh đề có giá trị trái ngược nhau thì cho kết quả đúng Epv 2 mệnh đề có giá trị trái ngược nhau thì cho kết quả sai ^ Luỹ thừa (5^3=75) + - * / Cộng, Trừ, Nhân, Chia \ Phép chia lấy phần nguyên Mod Phép chia lấy phần dư , = Nhỏ hơn, Lớn hơn, Bằng = Nhỏ hơn hoặc bằng, Lớn hơn hoặc bằng <> Không bằng Is So sánh 2 đối tượng In Thuộc, trong tập hợp hoặc miền giá trị (dùng trong các câu truy vấn) Between Trong khoảng từ đến And Like Giống: * (tổ hợp kí tự bất kỳ), ? ( ký tự bất kỳ), # (Một ký số bất kỳ) Ví dụ: like "A*", like "Access????", like 1#00 & Ghép chuỗi + Ghép chuỗi hoặc cộng số Toán tử Ý nghĩa Toán tử Ý nghĩa True Giá trị đúng " " hoặc ' ' Giá trị chuỗi, ví dụ "ACCESS" False Giá trị sai [ ] Giá trị tham số, ví dụ [tham so] Giá trị thời gian, ví dụ Null Giá trị rỗng # # 2 2 Date Ngày hiện hành Màu, ví dụ Ngày giờ hiện Now [Color] [white] : màu trắng hành Time Giờ hiện hành [red] : màu đỏ
  5. 4.7. Một số hàm sử dụng trong MS Access 1) Các hàm về chuỗi Hàm Kết quả Ten LIKE 'N*' Tên bắt đầu bằng chữ N Ten LIKE '*a*' Tên có chứa chữ a 3 (nếu Ten = 'Mai') Len(Ten) 5 (nếu Ten = 'Nguyen') Left(Ten, 2) 'Ma' Right(TenSV,2) 'ai' (nếu TenSV = 'Mai') Mid(TenSV,2,3) 'guy' (nếu TenSV = 'Nguyen') 2) Các hàm về ngày tháng Hàm Kết quả Now() Ngày giờ hiện tại Month(#8/12/2011#) Day(#5/27/2011#) 2 Year(Now()) 2 Year(Now()) – Year(NgaySinh) Tính số tuổi của sinh viên Hour(#06:30#) Minute(#13: 2 DatePart('q', Tính quý 2 3) Hàm IIF Cú pháp: IIF(điều-kiện, A, B) (với điều-kiện là biểu thức logic. A, B là các biểu thức bất kỳ) Ý nghĩa: nếu điều-kiện đúng thì kết quả của biểu thức IIF là biểu thức A, nếu điều-kiện sai thì kết quả của biểu thức IIF là biểu thức B. Ví dụ: IIF(Diem>=5, 'Đạt', 'Không đạt') Vậy nếu Diem = 6, 7, 8 thì kết quả của IIF là 'Đạt'. Nếu Diem = 2, 4 thì kết quả của IIF là 'Không đạt'. 4.8. Bài tập Hãy thực hiện các thao tác sau trên máy tính: 1) Khởi động Access 2) Tạo một cơ sở dữ liệu mang tên bạn và lưu vào ổ đĩa C hoặc D 3) Trong cơ sở dữ liệu vừa tạo, quan sát các mục Table, Query, Form, Report, Macro và Module 4) Đóng cơ sở dữ liệu và đóng Access 5) Khởi động lại Access, mở lại cơ sở dữ liệu vừa tạo (lưu ý: dùng menu File -> Open, không được dùng menu File -> New)
  6. CHƯƠNG 5. BẢNG (TABLE) 5.1. Các khái niệm 5.1.1. Bảng Bảng là thành phần cơ bản và quan trọng nhất của CSDL Access, thể hiện khái niệm lược đồ quan hệ và quan hệ. Một bảng dữ liệu của CSDL Access bao gồm các thành phần: tập hợp các trường dữ liệu (thuộc tính trong mô hình quan hệ), trường khoá chính, tập hợp các thuộc tính cần thiết cho mỗi trường dữ liệu, tập hợp các bản ghi (bộ). Ví dụ: Bảng dữ liệu trong trạng thái Datasheet (dùng để cập nhập, xem, sửa dữ liệu) Trường dữ liệu (field) Tên bảng Bản ghi (record) Bảng dữ liệu trong trạng thái Design view (dùng để thiết kế cấu trúc – lược đồ quan hệ) Trường khóa chính (primary key) Các thuộc tính mô tả trường dữ liệu
  7. 5.1.2. Trường dữ liệu (field) Trường dữ liệu, tương ứng với cột của bảng, mô tả từng đặc điểm riêng của đối tượng. Mỗi trường dữ liệu sẽ có một tên gọi, kiểu dữ liệu và tập hợp các tính chất mô tả trường dữ liệu đó. Ví dụ: Trường MaKhoa có kiểu dữ liệu là Text, kích thước 2 ký tự, được hiển thị là chữ in hoa, 5.1.3. Bản ghi (record) Mỗi dòng dữ liệu của bảng được gọi một bản ghi. Ví dụ: Bảng Khoa có 3 bản ghi là (“CN”, “Khoa Công nghệ thông tin”), (“KT”, “Khoa Kinh tế”), (“NN”, “Khoa Ngoại ngữ”) 5.1.4. Khóa chính (primary key) Khóa chính của bảng là trường hoặc tập trường dùng để phân biệt các bản ghi trong cùng một bảng. Ví dụ: Ở một trường đại học, mỗi sinh viên khi nhập học đều được cấp 1 mã sinh viên không giống nhau, do đó có bảng SinhVien được thiết kế như sau: Như vậy trường MaSV chứa dữ liệu mã sinh viên sẽ là khóa chính của bảng SINHVIEN vì mã sinh viên là duy nhất, các sinh viên có thể trùng họ tên, ngày sinh, nhưng không thể có mã sinh viên giống nhau. Ví dụ: Kết quả học tập của sinh viên bao gồm các dữ liệu sau: mã sinh viên, mã các lớp học sinh viên đó đã đăng ký và điểm kết quả của các lớp học đó. Trong CSDL của trường đó có bảng KetQua được thiết kế như sau Như vậy 2 trường MaSV (chứa dữ liệu mã sinh viên) và MaLop (chứa mã lớp học mà sinh viên đó đăng ký) sẽ tạo thành khóa chính của bảng KetQua, không thể có 1 sinh viên đăng ký lớp học mà có 2 điểm kết quả khác nhau.
  8.  Chú ý: MS Access không chấp nhận các giá trị trùng nhau hay trống (null) trong trường khóa chính. 5.1.5. Mối liên hệ giữa các bảng (relationship) Thể hiện khái niệm mối liên hệ giữa các quan hệ trong mô hình lý thuyết (xem phần Phần I2.3.2). Đi kèm với mối liên hệ là ràng buộc toàn vẹn về khóa ngoại. Trong Access tồn tại 2 kiểu quan hệ: quan hệ - và quan hệ -∞ (một-nhiều) a) Quan hệ 1-1 Mỗi bản ghi của bảng này sẽ không liên kết hoặc liên kết với duy nhất tới một bản ghi của bảng kia và ngược lại Ví dụ: Mỗi số báo danh của thí sinh thi đại học chỉ có 1 số phách bài thi và số phách của mỗi bài thi chỉ thuộc về 1 số báo danh. Mô tả dữ liệu 2 bảng như sau: b) Quan hệ 1- ∞ Một bản ghi trong bảng A không kết hợp hoặc kết hợp với một hay nhiều bản ghi trong bảng B, nhưng ngược lại một bản ghi trong bảng B chỉ có thể kết hợp duy nhất với một bản ghi trong bảng A. Ví dụ: một khoa của trường Đại học Nha Trang có nhiều sinh viên nhưng một sinh viên chỉ thuộc về duy nhất một khoa.
  9. Mô tả dữ liệu 2 bảng như sau: 5.2. Xây dựng cấu trúc bảng 5.2.1. Sử dụng chế độ Design View để tạo bảng Tab Tables Create Table in Design View hoặc Tab Tables Sau đó ta được bảng thiết kế như sau: Tên trường Mô tả ngắn gọn của trường Lựa chọn kiểu dữ liệu
  10. Bảng thiết kế sau khi đã được nhập giá trị: Khóa Kích thước của trường chính Tiêu đề cột mà Quy định dạng hiển thị dữ liệu trường hiển thị Quy định dạng thức dữ liệu phải nhập Giá trị mặc định Các quy tắc hợp lệ của dữ của trường khi liệu nhập nhập dữ liệu Thông báo khi nhập dữ liệu sai quy tắc Cho phép nhập Bắt buộc phải nhập dữ chuỗi rỗng Tạo chỉ mục liệu hay không a) Tên trường Tên trường có thể đặt tùy ý, tuy nhiên để dễ quản lý nên đặt ngắn gọn, dễ gợi nhớ, không chứa ký tự trắng và không dùng chữ tiếng Việt có dấu. b) Kiểu dữ liệu (Data Type) MS Access cung cấp một số kiểu dữ liệu cơ bản sau: Text: kiểu chuỗi có độ dài tối đa 2 ký tự Memo: kiểu chuỗi có độ dài tối đa . ký tự Number: kiểu số Date/Time: kiểu ngày (nếu cần có thể lưu thêm thông tin về giờ) Currency: kiểu số có định dạng theo loại tiền tệ AutoNumber: kiểu số nhưng tự động tăng do Microsoft Access cung cấp và quản lý, người dùng không thể cập nhật Yes/No: kiểu Logic OLE Object: kiểu đối tượng kết nhúng: Word, Excel, Hyperlink: kiểu chuỗi chỉ đường dẫn của một tập tin trên ổ cứng hay trên máy chủ của mạng hay một địa chỉ URL trên mạng. Lookup Wizard: tạo một cột để chọn giá trị và tìm kiếm từ một bảng khác
  11. Khai báo thuộc tính cho trường ở thẻ General: c) Field Size Xác định kích thước tối đa cho dữ liệu kiểu Number hay Text của trường. Đối với kiểu số (number) thì Access cung cấp các kiểu sau Loại số Độ lớn Byte số nguyên byte Integer số nguyên 2 byte Long Integer số nguyên byte Single số thực byte Double số thực 2 byte Decimal số thực byte d) Format Định dạng cách thể hiện của dữ liệu khi hiển thị hoặc khi in ấn. Kiểu chuỗi: gồm 3 phần [Phần 1];[Phần 2];[Phần 3] Trong đó: - Phần 1: Chuỗi định dạng tương ứng trong trường hợp có chứa văn bản. - Phần 2: Chuỗi định dạng tương ứng trong trường hợp không chứa văn bản. - Phần 3: Chuỗi định dạng tương ứng trong trường hợp null Các ký tự dùng để định dạng chuỗi Ký tự Tác dụng @ Chuỗi ký tự "123ABC" Hiển thị những gì trong ngoặc kép như ký tự > Đổi tất cả ký tự nhập vào thành in hoa < Đổi tất cả ký tự nhập vào thành in thường Hiển thị ký tự kế tiếp như ký tự bình thường \ (dùng để hiển thị các ký tự đặc biệt) 2
  12. Ví dụ Cách định dạng Dữ liệu nhập vào Hiển thị 2 2 - @@@-@@@ abcdef abc-def > Tinhoc TINHOC < TinHoc tinhoc ABC ABC @; "Không có"; "Chưa nhập" Không có Null Chưa nhập Kiểu số (Number) và kiểu số tiền tệ (Currency) Định dạng do ACCESS cung cấp Loại số Dữ liệu nhập vào Hiển thị General Number 2 . 2 . Currency 2 . ,2 . Euro 2 . € ,2 . Fixed 2 . 2 Standard 2 . ,2 . Pecent . 2 2. Scientific 2 . 1.23E+0 Định dạng do người sử dụng: [Phần 1];[Phần 2];[Phần 3];[Phần 4] Trong đó: - Phần 1: Chuỗi định dạng tương ứng trong trường hợp số dương. - Phần 2: Chuỗi định dạng tương ứng trong trường hợp số âm. - Phần 3: Chuỗi định dạng tương ứng trong trường hợp số bằng zero. - Phần 4: Chuỗi định dạng tương ứng trong trường hợp null. Ví dụ Định dạng Hiển thị Số dương hiển thị bình thường Số âm được bao giữa 2 dấu ngoặc ( ) 0;(0);;"Null" Số bị bỏ trống Null hiện chữ Null Hiển thị dấu + phía trước nếu số dương . - . . Hiển thị dấu - phía trước nếu số âm Hiển thị . nếu âm hoặc Null Kiểu Date/Time Định dạng do ACCESS cung cấp Định dạng Hiển thị General date 10/30/99 5:10:30PM
  13. Long date Friday, may 30 , 1999 Medium date 30-jul- Short date Long time 6:20:00 PM Medium time 6:20 PM Short time :2 Kiểu Yes/No Định dạng do ACCESS cung cấp Định dạng Tác dụng Yes / No Đúng Sai True / False Đúng Sai On / Off Đúng Sai Định dạng do người sử dụng: Gồm 3 phần ;[Phần 1];[Phần 2] Trong đó: - Phần : Trường hợp giá trị trường đúng - Phần 2: Trường hợp giá trị trường sai Ví dụ Định dạng Hiển thị Trường hợp True Trường hợp False "Nam" "Nữ" Nam Nữ ;"Có";"Không" Có Không  Chú ý: Để xem được hiển thị của kiểu Yes/No ta phải thay đổi thuộc tính Display Control ở thẻ Lookup thành Text Box
  14. e) Input Mask Mặt nạ định dạng dữ liệu, người sử dụng bắt buộc phải nhập dữ liệu cho trường đúng theo quy định đã cài đặt ở thuộc tính này. Ký tự Tác dụng Bắt buộc nhập ký tự số Không bắt buộc nhập, ký tự số # Không bắt buộc nhập, số 0-9, khoảng trắng, dấu + và - L Bắt buộc nhập, ký tự chữ ? Không bắt buộc nhập, ký tự chữ hoặc khoảng trắng a Bắt buộc nhập, ký tự chữ hoặc số A Không bắt buộc nhập, ký tự chữ hoặc số & Bắt buộc nhập, ký tự bất kỳ C Không bắt buộc nhập ký tự bất kỳ Các ký tự bên phải được đổi thành chữ hoa ! Dữ liệu được ghi từ phải sang trái Ví dụ: Input Mask Dữ liệu nhập vào ( ) - ( ) 2 - 2 2 (000)AAA-A ( 23)124-E Ngoài ra ta có thể sử dụng những Input Mask có sẵn do Access cung cấp f) Caption Dùng làm tiêu đề cho các trường trong chế độ Datasheet của bảng, có thể dùng tiếng Việt. Chuỗi ký tự này cũng xuất hiện tại nhãn các của các điều khiển trong các biểu mẫu hoặc báo cáo. Nếu không xác định Caption thì Access sẽ lấy tên trường để làm tiêu đề. g) Default Value Quy định giá trị mặc định cho trường trừ Auto number và OEL Object. Có thể là một biểu thức, hằng, các hàm mẫu và các phép toán.
  15. h) Validation rule và Validation Text Quy định quy tắc hợp lệ dữ liệu (Validation rule) để giới hạn giá trị nhập vào cho một trường. Khi giới hạn này bị vi phạm sẽ có câu thông báo ở Validation text. Ví dụ: Validation rule Tác dụng 0 Khác số không Like "*HUE*" Trong chuỗi phải chứa HUE >= #10/10/99# and <= #12/11/99# Trong khoảng từ đến 12/12/99 i) Required (tương tự ràng buộc toàn vẹn NOT NULL) Dùng để quy định dữ liệu cần phải nhập hay không. Nếu chọn Yes thì phải nhập giá trị cho cột đó mỗi khi thêm dòng mới, ngược lại nếu cho đưa giá trị Null vào thì chọn No. Thuộc tính này có giá trị mặc định là No j) AllowZeroLength Cho phép quy định một trường có kiểu Text hay memo có thể hoặc không có thể có chuỗi có độ dài bằng 0. Thuộc tính này có giá trị mặc định là No  Chú ý: Cần phân biệt một trường chứa giá trị null (chưa có dữ liệu) và một trường chứa chuỗi có độ dài bằng 0 (có dữ liệu nhưng chuỗi rỗng ""). k) Index Tạo chỉ mục trên một trường, giúp việc tìm kiếm dữ liệu nhanh hơn. Yes(Dupplicate OK) : Tạo chỉ mục có trùng lặp Yes(No Dupplicate) : Tạo chỉ mục không trùng lặp No : Không tạo chỉ mục 5.2.2. Tạo khóa chính Thực hiện lần lượt các bước sau 1. Mở bảng ở chế độ Design View 2. Chọn trường (các trường) cần làm khóa 3. Click vào biểu tượng khóa trên thanh công cụ để tạo khóa hoặc Right-Click tên trường cần làm khóa Primary Key  Chú ý: Các trường có kiểu dữ liệu là Memo, OLE Object, Hyper Link không thể làm khóa chính.
  16. 5.2.3. Lưu bảng Thực hiện bởi 1 trong nhiều cách sau Ctrl+S Click biểu tượng trên thanh công cụ. Menu File Save 5.2.4. Hiệu chỉnh bảng Di chuyển trường: Đưa con trỏ ra đầu trường cần di chuyển, giữ và kéo đến vị trí mới. Chèn thêm trường mới: Chọn trường hiện thời là trường sẽ nằm sau trường được chèn vào Right Click Insert Row Xóa trường: Chọn trường cần xóa Right Click Delete Row 5.3. Thiết lập mối quan hệ giữa các bảng Bước 1: Chọn biểu tượng Relationship hoặc vào menu Tool Relationships. Bước 2: Đưa các bảng muốn tạo mối quan hệ vào cửa sổ Relationships bằng cách lần lượt chọn bảng Add Sau khi chọn xong thì click Close Nếu cần chọn thêm bảng thì Right Click (tại vùng cửa sổ Relationships) Show Table Bước 3: Trong cửa sổ Relationships dùng chuột kéo và thả trường liên hệ từ bảng này sang bảng kia.
  17. Bước 4: Xác định các qui tắc ràng buộc của mối quan hệ này bằng cách chọn vào ô kiểm tra hiệu lực của ràng buộc toàn vẹn (Enforce Referential Integrity) Đồng ý thiết lập toàn vẹn tham chiếu, nghĩa là dữ liệu trên trường tham chiếu của bảng con phải tương ứng với dữ liệu đã tồn tại trên trường của bảng cha. Ngoài ra thiết lập này còn cho biết kiểu quan hệ giữa 2 bảng Đảm bảo toàn vẹn dữ liệu khi cập nhật dữ liệu giữa 2 bảng liên quan. Khi đó, nếu giá trị trường khoá liên kết ở bảng 1 bị thay đổi, toàn bộ giá trị trường khoá liên kết ở bảng nhiều cũng bị thay đổi theo. Đảm bảo toàn vẹn dữ liệu khi xoá dữ liệu giữa 2 bảng liên quan. Khi đó, nếu một bản ghi ở bảng có quan hệ 1 bị xoá, toàn bộ các bản ghi có quan hệ với bản ghi hiện tại sẽ được tự động xoá ở bảng có quan hệ nhiều (nếu xoá 1 CHA, toàn bộ các con của cha đó sẽ tự động bị xoá khỏi bảng CON) Hộp Relationship Type: cho biết kiểu quan hệ giữa 2 bảng đang thiết lập:  One – To – One Kiểu -  One – To – Many Kiểu -∞  Indeterminate Không xác định được kiểu liên kết Bước 5: Chọn Create Bước 6: Lưu lại các mối quan hệ vào cửa sổ quan hệ: chọn menu File Save hoặc click vào biểu tượng trên thanh công cụ.  Chú ý: Khi thiết lập mối quan hệ phải đóng tất cả các bảng tham gia.
  18. 5.4. Cập nhật bảng 5.4.1. Xem và nhập dữ liệu Có thể xem và nhập dữ liệu trong bảng bằng các cách sau Double click vào bảng cần xem (hoặc nhập dữ liệu) Click chọn bảng, sau đó click vào biểu tượng 5.4.2. Nhập dữ liệu sử dụng Lookup Để việc nhập các giá trị cho các thuộc tính khóa ngoại được dễ dàng, nhanh chóng và tránh sai sót, có thể nhập dữ liệu cho các thuộc tính này dùng lookup. Ví dụ bên dưới là thiết lập lookup cho khóa ngoại MaKH của bảng SinhVien Bảng có quan hệ nhiều (∞) Trường khóa ngoại đến bảng quan hệ Kiểu thể hiện dữ liệu Bảng được tham chiếu (bảng có quan hệ ) Màn hình khi nhập liệu:
  19. 5.4.3. Một số lỗi có thể xảy ra khi nhập dữ liệu Lỗi do: Nhập vào giá trị không tương thích với kiểu dữ liệu của trường đã chỉ định. Ví dụ: trường kiểu Numeric mà gõ vào chữ cái; hoặc không gõ đầy đủ các giá trị ngày, tháng, năm cho trường kiểu Date/Time, Khắc phục: Nhập lại cho đúng, đủ giá trị các trường đã yêu cầu đến khi không xuất hiện thông báo lỗi. Lỗi do: Không nhập giá trị hoặc để trống giá trị trường khoá. Khắc phục: phải nhập đầy đủ giá trị cho trường khoá. Lỗi do: Giá trị trường khoá trùng nhau. Giá trị trường khoá vừa nhập vào đã trùng với giá trị của một khóa của bản ghi khác trên bảng dữ liệu. Khắc phục: nhập lại giá trị trường khoá khác sao cho vừa đúng, đủ và không bị trùng khoá. Lỗi do: Không nhập dữ liệu ở trường bắt buộc nhập dữ liệu (những trường được thiết lập thuộc tính Required=Yes) Khắc phục: Phải nhập đủ dữ liệu cho các trường bắt buộc phải nhập dữ liệu.
  20. Lý do: Lỗi do thực hiện một thao tác vi phạm các nguyên tắc đảm bảo toàn vẹn dữ liệu. Ví dụ: Nhập dữ liệu trên một bảng có quan hệ mà bản ghi đang nhập không thể liên kết được tới được một bản ghi nào của bảng có quan hệ 1 với nó (nhập một hàng bán mà mã hàng đó chưa có trong bảng danh mục hàng hoá). 5.4.4. Xóa bản ghi Với bảng dữ liệu đang mở có thể thực hiện 2 bước sau để xoá các bản ghi: Bước 1: Chọn những bản ghi cần xoá. Có thể chọn một hoặc nhiều bản ghi bằng cách dùng chuột đánh dấu đầu dòng những bản ghi cần chọn; Bước 2: Ra lệnh xoá bằng một trong các cách sau Nhấn phím Delete. Right Click trên vùng đã chọn Delete Record Click vào biểu tượng trên thanh công cụ Một hộp thoại xuất hiện để bạn khẳng định một lần nữa việc xoá dữ liệu: Chọn Yes để đồng ý xoá, No để huỷ lệnh xoá. 5.4.5. Sắp xếp dữ liệu Sắp xếp là việc thay đổi thứ tự hiển thị một bảng dữ liệu theo một trật tự nào đó. Kết quả của việc sắp xếp giúp người dùng có thể quan sát được tốt hơn dữ liệu trên bảng, tất nhiên muốn quan sát bảng dữ liệu theo trường nào phải thực hiện sắp xếp bảng theo dữ liệu trường ấy. Cách sắp xếp dữ liệu trên bảng đang mở như sau: Bước 1: Đặt con trỏ lên trường (cột) muốn sắp xếp; Bước 2: Nhấn nút lệnh sắp xếp trên thanh công cụ: - Sắp xếp tăng dần - Sắp xếp giảm dần.
  21. 5.4.6. Lọc dữ liệu Lọc dữ liệu là việc chọn ra những bản ghi trên bảng có cùng một số giá trị. Kết quả việc lọc dữ liệu sẽ giúp người dùng làm việc một cách hiệu quả trên tập hợp các bản ghi họ mong muốn. Các bước để lọc dữ liệu trên một bảng đang mở như sau: Bước 1: Click chọn trường cần lọc dữ liệu. Bước : Click chọn biểu tượng Filter by Form Bước 3: Thiết lập điều kiện lọc trên trường đang chọn 2
  22. CHƯƠNG 6. TRUY VẤN (QUERY) 6.1. Các khái niệm Sau khi xây dựng được CSDL, người dùng sẽ cần kết xuất dữ liệu trên CSDL nhằm phục vụ cho những yêu cầu khác nhau. Một trong những công cụ xử lý dữ liệu mà MS Access cung cấp là Query. Query cho phép thực hiện các phép toán đại số quan hệ như phép chiếu, chọn kết, gom nhóm. Có các loại query sau trong Access: Query truy vấn: Select Query Group by Select Query Crosstab Query Query thêm, xóa, sửa dữ liệu: Append Query Delete Query Update Query Make Table Query 6.2. Query truy vấn 6.2.1. Select Query (truy vấn với phép chọn, chiếu, kết nối) Phần này minh họa lại cách thực hiện Query cho các ví dụ về các phép chọn, chiếu, kết nối trong chương về đại số quan hệ. Ví dụ 01: Cho biết tên khoa của sinh viên có mã số ‘ 2 2’. Liệt kê các thông tin MaSV, HoSV, TenSV, TenKhoa. Biểu thức đại số quan hệ cho truy vấn trên: MaSV, HoSV, TenSV, TenKhoa [ MaSV=’5202’ (SinhVien ⋈ MaKH = MaKhoa Khoa)] Tạo truy vấn trong Access:
  23. Trong màn hình cơ sở dữ liệu, chọn mục Queries, sau đó chọn Create query in Design view để mở màn hình Show Table. Trong màn hình Show Table, chọn và nhấn nút Add các table tham gia truy vấn (Khoa và SinhVien). Sau khi chọn xong, nhấn nút Close để trở về màn hình Design Query. Các trường (cột) A được chọn Bảng tham gia truy vấn Sắp xếp B Vùng nh ậ p đi ều Cho phép (không cho phép) kiện của phép chọn hiển thị kết quả Màn hình design Query gồm hai phần: Phần A dùng để thể hiện các bảng tham gia truy vấn. Phần này cũng thể hiện mối quan hệ giữa các bảng và mối quan hệ đó được sử dụng làm phép kết nối bằng. Phần B gồm nhiều cột dùng để thực hiện các phép chọn và chiếu. Một cột trong phần B tương ứng với một cột trong phép chiếu. Kéo thả (hoặc Double-Click) các trường liên quan đến truy vấn từ phần A vào các cột phần B. Dấu * đại diện cho tất cả các cột trong bảng. Nhấn nút View Design để chuyển đổi giữa chế độ thiết kế Query và chế độ xem kết quả thực hiện phép kết nối giữa bảng SinhVien và Khoa:
  24. Bổ sung phép chọn và phép chiếu: Kéo bốn cột MaSV, HoSV, TenSV, TenKhoa vào phần B. Thực hiện phép chọn MaSV = ' 2 2': gõ mệnh đề = ' 2 2' vào dòng Criteria ứng với cột MaSV. Kết quả thực hiện: Ví dụ 02: Tạo cột mới (HoTen) từ 2 trường HoSV và TenSV Kết quả thực hiện:
  25.  Chú ý: Tên cột mới đặt ở dòng Field có cấu trúc như sau : Ví dụ: HoTen : [HoSV] + ' ' + [TenSV] Ví dụ 0 : Biểu thức chọn có mệnh đề AND Xét câu truy vấn: Liệt kê các sinh viên sinh năm và có học bổng trên 500. Year(NgaySinh)=1990 AND HocBong>300 (SinhVien) Trong câu truy vấn này, biểu thức logic gồm 2 phần: Year(NgaySinh)=1990 và HocBong > được đặt ở phần Criteria:  Chú ý: Year([NgaySinh]) giống như là một thuộc tính mới nhưng không được hiện ra do không được chọn ở dòng Show. Xét câu truy vấn: Liệt kê các sinh viên đạt mức học bổng từ đến 500 (HocBong>=300 AND HocBong <=500 (SinhVien) Lúc này có hai điều kiện chọn cho cùng một thuộc tính là HocBong Hoặc sử dụng mệnh đề: Between AND 5 Ví dụ 04: Biểu thức chọn có mệnh đề OR Xét câu truy vấn: Liệt kê các sinh viên có tên bắt đầu là ‘T’ hoặc là ‘K’. (Ten LIKE 'T*' OR Ten LIKE 'K*') (SinhVien) Mệnh đề Like 'K*' được gõ ở dòng OR
  26. Ví dụ 0 : Liệt kê các môn học chưa mở lớp: Điều kiện NOT IN (SELECT MaMH FROM LopHoc) nghĩa là: trong bảng môn học, hãy tìm các môn mà MaMH không có trong bảng LopHoc. Kết quả: Ví dụ 0 : Sắp xếp và lựa dòng Xét câu truy vấn: Chọn hai sinh viên đạt mức học bổng cao nhất. Trước tiên sắp xếp danh sách sinh viên theo học bổng từ cao đến thấp: Kết quả sắp xếp:
  27. Sau đó trong màn hình Design, trên thanh công cụ, thay từ All thành 2: Kết quả thực hiện: 6.2.2. Group by Select Query (truy vấn với phép nhóm) Ví dụ 0 : Xét câu truy vấn: dựa vào bảng SinhVien, đếm số sinh viên và tính tổng học bổng theo từng khoa: MaSV HoSV TenSV NgaySinh GioiTinh HocBong MaKH 5202 Lê Cường 21/5/1 1 Nam 200 KT 2 5207 Nguyễn Sơn 17/7/1 0 Nữ 800 KT 520 Ngô Hòa 16/8/1 0 Nam 200 CN 5306 Huỳnh Nga 22/3/1 2 Nữ 400 CN 3 5308 Phạm Trang 12/7/1 0 Nữ 800 CN Đếm số SV Tách nhóm trong nhóm theo mã khoa MaKhoa SoSV TongHB KT 2 1.000 CN 3 1.400 Trong Access để tạo Group by Select Query, đầu tiên tạo một Select Query như bình thường. Sau đó nhấn vào nút  trên thanh công cụ để xuất hiện dòng Total.
  28. Sau đó đưa ba trường MaKh, MaSV, HocBong vào ba cột bên dưới. Trường MaKh dùng để tách nhóm, nên trong dòng Total chọn là Group By. Trường MaSV dùng để đếm số lượng sinh viên nên trong dòng Total chọn hàm Count. Trường HocBong dùng để tính tổng học bổng nên trong dòng Total chọn hàm Sum. Kết quả thực hiện. Ví dụ 0 : Bổ sung thêm trường TenKhoa. Kết nối bảng SinhVien với bảng Khoa, sau đó chọn trường MaKhoa, TenKhoa là Group by Ví dụ 0 : Tính số sinh viên nữ của từng khoa Câu truy vấn này cũng tương tự như câu tính tổng số sinh viên của từng khoa, tuy nhiên trước khi tách nhóm thì phải thực hiện phép chọn để lọc ra các sinh viên nữ Ở đây, trường GioiTinh chỉ dùng để chọn ra các sinh viên nữ, không dùng để tách nhóm, do đó ở dòng Total của cột GioiTinh chọn Where (không chọn Group By). Kết quả thực hiện
  29. Ví dụ 10 Dựa vào các bảng SinhVien, LopHoc, KetQua và MonHoc, tính điểm trung bình học kỳ năm 2 của các sinh viên. Liệt kê: MaSV, HoSV, TenSV, DTB. tam   NamHoc=2010 AND HocKy= 1 (LopHoc ⋈ MonHoc ⋈ KetQua) MaSV, HoSV, TenSV G DTB: Sum(Diem*SoTinChi)/Sum(SoTinChi) (tam) Trong ví dụ trên, vì cách tính điểm trung bình là một công thức toán học nên dòng Total ở cột DTB:Sum([Diem]*[SoTinChi])/Sum([SoTinChi]) được chọn là Expression (nghĩa là một biểu thức). Kết quả thực hiện  Tóm tắt Chức năng Total cung cấp cho người dùng các phương thức thống kê sau: Group By: Gom nhóm các trường cần thống kê. Sum: Tính tổng các giá trị trong cùng một nhóm Count: Đếm số phần tử trong một nhóm AVG: Tính trung bình cộng các phần tử trong cùng một nhóm Min: Tính giá trị nhỏ nhất của các phần tử trong cùng một nhóm Max: tính giá trị lớn nhất của các phần tử trong cùng một nhóm Expresion: Biểu thức toán học.
  30. 6.2.3. Crosstab Query Là dạng query tổng hợp số liệu kết nhóm theo hàng và cột từ số liệu của các table hay query khác. Cấu trúc của 1 kết quả crosstab query Row heading: là tiêu đề các dòng, có chứa các giá trị của hay nhiều trường làm đối tượng thống kê. Mỗi crosstab query phải có tối thiểu 1 trường làm Row heading. Column heading là tiêu đề các cột, có chứa các giá trị của một trường làm điều kiện thống kê. Mỗi crosstab query chỉ có duy nhất 01 trường làm Column heading. Value là vùng dữ liệu tổng hợp (kiểu số). Chỉ có duy nhất một trường làm Value, tương ứng với nó là các hàm thống kê: Sum, Count, Avg, Max, Min Ví dụ 11: Thống kê điểm số cuối cùng của từng sinh viên theo từng môn học: Kết quả của phép kết: MaSV, Ho,Ten, MaLop, TenMH, Diem (SinhVien ⋈ KetQua ⋈ LopHoc ⋈ MonHoc) MaSV HoTen MaLop TenMH Diem 5308 Phạm Trang 01 Tin học cơ sở 3 5308 Phạm Trang 03 Tin học cơ sở 5308 Phạm Trang 02 Kế toán tài chính 5202 Lê Cường 01 Tin học cơ sở 4 5202 Lê Cường 03 Tin học cơ sở 8 5202 Lê Cường 04 Cấu trúc dữ liệu 7 5202 Lê Cường 02 Kế toán tài chính Max(4, 8) Column heading Value MaSV HoTen Cấu trúc dữ liệu Kế toán tài chính Tin học cơ sở 5202 Lê Cường Row heading 5308 Phạm Trang Max(3, 9) Để tạo bảng crosstab, trước tiên tạo một Group By Select Query. Sau đó chuyển thành Crosstab Query bằng cách vào menu Query Crosstab Query
  31. Phần thiết kế Query xuất hiện thêm dòng Crosstab. - MaSV, HoTen sắp theo chiều dọc nên tại dòng total là Group By, tại dòng crosstab chọn là Row Heading. - TenMH sắp theo chiều ngang nên tại dòng total là Group By, tại dòng crosstab chọn là Column Heading. - Diem là giá trị của bảng nên tại dòng total là Max, tại dòng crosstab chọn là Value. Kết quả thực hiện: 6.3. Query thêm, xóa, sửa 6.3.1. Make – Table Query Trong các phần trên, truy vấn được tạo theo hai chế độ: chế độ thiết kế (Design) và chế độ xem kết quả (View). Để có thể lưu kết quả của query nhằm mục đích sử dụng sau này, Access cung cấp Make-Table Query. Make-Table Query hoàn toàn giống như một Select Query bình thường, chỉ khác là cho phép lưu kết quả thành một bảng. 2
  32. Ví dụ 12: Tính số sinh viên theo từng Khoa và lưu vào bảng DemSinhVien. Trước tiên thiết kế Select query đếm số sinh viên theo từng Khoa như bình thường. Sau đó vào menu Query Make-Table Query. Sau đó nhập vào tên của bảng cần lưu kết quả Để chính thức lưu kết quả vào bảng DemSinhVien, click vào biểu tượng Run (biểu tượng View vẫn có tác dụng xem trước kết quả như bình thường) Sau khi nhấn nút Run, chọn Yes ở hộp thoại tiếp theo. Quay trở lại màn hình xem Table của database, xuất hiện bảng DemSinhVien.
  33. 6.3.2. Update Query Sau khi đã nhập dữ liệu vào các table, nếu muốn thay đổi dữ liệu, một cách thực hiện là mở các table để cập nhật trực tiếp trên các table đó. Tuy nhiên nếu dữ liệu cần sửa đổi nhiều, thì việc cập nhật tốn nhiều công sức. Trong thực tế, việc thay đổi dữ liệu thường theo một quy tắc nào đó. Ví dụ: tăng học bổng các sinh viên thêm 50%, hay bổ sung các môn học thêm một tín chỉ. Access cung cấp query update để có thể thực hiện việc cập nhật đó một cách tự động. Ví dụ 1 : Tăng học bổng cho các sinh viên nữ thêm 50%. Để thực hiện truy vấn này, trước tiên tạo một Select Query cho bảng SinhVien với 2 trường được chọn là HocBong và GioiTinh Sau đó vào menu Query Update Query. Sau khi chọn kiểu query là Update Query, phần thiết kế xuất hiện dòng Update To. - Cột HocBong là cột sẽ phải cập nhật dữ liệu mới, do đó trong dòng Update to, nhập vào biểu thức [HocBong]*1,5 - Cột GioiTinh, nhập điều kiện chọn là No để chọn ra các sinh viên nữ tăng học bổng (Giả sử khi thiết kế bảng SinhVien ta thiết lập giá trị No ở trường GioiTinh để chỉ sinh viên nữ) Sau khi thiết kế truy vấn xong, click Run để thật sự cập nhật dữ liệu (biểu tượng View để xem trước các dòng được chọn). Nhấn nút Yes để cập nhật. Kết quả của bảng SinhVien sau khi update là:
  34. 6.3.3. Delete Query Tương tự như Update Query, Delete Query cũng được dùng để xóa cùng lúc nhiều dòng trong bảng. Các dòng cần xóa phải thỏa mãn một điều kiện nào đó. Ví dụ 14: Hủy bỏ kết quả của lớp học có mã ‘ ’. MaSV MaLop Diem 5202 01 4 5202 02 7 5202 03 8 5202 04 5308 01 3 5308 02 5308 03 Để thực hiện truy vấn này, trước tiên ta tạo một Select Query cho bảng KetQua với trường được chọn là MaLop Sau đó vào menu Query Delete Query. Ở dòng Criteria nhập giá trị mã môn học cần xóa là ‘ ’. Click Run, sau đó click Yes, Access sẽ tiến hành xóa trong bảng KetQua. 6.3.4. Append Query Tương tự như Make-Table Query, Append Query cũng được dùng để lưu lại kết quả truy vấn. Điểm khác nhau là Make-Table Query tạo ra một bảng mới. Còn Append thì lưu kết quả vào một bảng đã có sẵn. Ví dụ, để lưu trữ điểm trung bình của từng sinh viên trong từng học kỳ (xem ví dụ 10), chúng ta có thể thiết kế thêm một bảng DiemTrungBinh như sau:
  35. Sau đó để lưu trữ điểm trung bình của từng sinh viên trong học kỳ năm học 2010, thực hiện truy vấn như trong ví dụ 10 và chuyển thành Append Query, vào menu Query Append Query. Một hộp thoại xuất hiện yêu cầu cho biết bảng dữ liệu đích: Thực hiện chứ năng Run tương tự như các query Update, Delete. Kết quả của truy vấn sẽ được lưu vào table DiemTrungBinh. Sau đó có thể lưu trữ tiếp điểm trung bình của các học kỳ khác.
  36. 6.4. Truy vấn có tham số Xét câu truy vấn: Liệt kê các sinh viên đạt mức học bổng từ đến ( HocBong>=300 AND HocBong<=500 (SinhVien) Trong câu truy vấn này, hai con số 00 và được ghi cố định trong lúc thiết kế ở màn hình Design. Nếu cần thay đổi phạm vi của HocBong (ví dụ, từ đến ) thì phải mở lại màn hình thiết kế và sửa lại. Một cách thực hiện khác hiệu quả hơn là quy các con số giới hạn trên thành các tham số. Khi thực hiện truy vấn thì Access mới yêu cầu nhập giá trị tham số. Khi nhấn nút xem kết quả, Access yêu cầu nhập giá trị tham số để xử lý truy vấn:  Chú ý: Tham số phải được đặt trong dấu [ ] và không được trùng tên bất kỳ trường nào của các bảng tham gia truy vấn.
  37. CHƯƠNG . BIỂU MẪU (FORM) 7.1. Khái niệm Form Form là một thành phần trong CSDL Access hỗ trợ thiết kế giao diện giữa người sử dụng và CSDL. Có hai cách để xây dựng Form trong Access: Sử dụng Form Wizard: Đây là cách rất đơn giản, nhanh chóng, dễ dùng giúp tạo nhanh một Form. Tuy nhiên Form được tạo ra theo những mẫu (templates) có sẵn nên chỉ có thể đáp ứng những nhu cầu đơn giản. Sử dụng Form Design View: một công cụ giúp tạo ra các form đáp ứng nhiều yêu cầu khác nhau của người sử dụng,  Chú ý: Thông thường nên sử dụng Form Wizard để hình thành các Form đơn giản sau đó sử dụng tiếp Form Design View để tiếp tục thiết kế. 7.2. Sử dụng Form Wizard để tạo Form Phần này trình bày việc tạo Form bằng cách sử dụng Form Wizard với ví dụ là trình bày và nhập liệu cho bảng SinhVien. Bước 1: Trong cửa sổ CSDL đang sử dụng, Chọn Forms → Create form by using wizard. Bước 2: Chọn thông tin cần đưa lên Form Tại mục Tables/ Queries chọn Table: SinhVien Chọn bảng (table) hay truy vấn (query) cần thiết cho Form
  38. Việc chọn table SinhVien có nghĩa là Form sẽ tương tác với các giá trị trong các cột của bảng SinhVien. Trong Available Fields hiển thị các trường có trong bảng SinhVien mà chưa được chọn để hiển thị trên Form. Trong Selected Fields chứa các trường sẽ hiển thị trên Form. Để chọn một vài trường vào Selected Fields, chọn trường ở Available Fields rồi click . Để lấy tất cả các trường từ Available Fields, click . Ngược lại, các nút và để loại bỏ một vài hoặc tất cả các trường trong Selected Fields. Sau khi chọn được các trường cần thiết vào Selected Fields, click Next Bước 3: Chọn kiểu trình bày (layout) của Form Tại giao diện này, Access cung cấp một số mẫu (template) cho việc hiển thị dữ liệu lên Form. Có 4 kiểu chính - Columnar: hiển thị dữ liệu của một bản ghi trên một trang Form. - Tabular: hiển thị dữ liệu của tất cả các record trên một trang Form - Datasheet: hiển thị dữ liệu của tất cả các bản ghi trên một trang Form dưới dạng bảng (tương tự như bảng được mở ở dạng Open) - Justified: Phân bố dữ liệu của bản ghi trên Form theo cấu trúc định sẵn của Access. Thông thường chọn Columnar Next Bước 4: Chọn kiểu dáng (Style) cho form. Trong giao diện này Access cung cấp một danh sách các kiểu dáng. Hãy thử từng mẫu và chọn cho Form một kiểu dáng phù hợp. Thông thường chọn Standard Next
  39. Bước 5: Hoàn thiện công việc - Đặt tiêu đề hiển thị cho Form, tiêu đề này cũng sẽ là tên của Form (tuy nhiên tên Form có thể được thay đổi ở cửa sổ các đối tượng CSDL mà không ảnh hưởng đến tiêu đề Form). - Lựa chọn Open the form to view or enter information: hiển thị Form sau khi click Finish - Lựa chọn Modify the form’s design: mở giao diện Form Design để chỉnh sửa Form. Nếu lựa chọn hiển thị Form thì: Xem/Thiết kế Form Hiển thị bản ghi tiếp theo Hiển thị bản ghi cuối cùng Hiển thị bản Hiển thi bản Thêm bản ghi ghi đầu tiên ghi trước đó mới Chỉnh sửa lại tên các nhãn, tiêu đề trong Form: click biểu tượng thiết kế Form
  40. 7.3. Sử dụng Design View để tạo Form Để tạo ra được form mang tính chuyên nghiệp và đáp ứng được sát yêu cầu thực tế bắt buộc phải sử dụng đến Form Design View. Nói như vậy không có nghĩa là không dùng Form Wizard để tạo form, mà trong nhiều tính huống vẫn dùng Form Wizard rồi sử dụng đến Form Design View để tiếp tục hoàn thiện yêu cầu. Tạo form mới ngay từ đầu Chọn Forms → Create form in Design view. Thiết kế lại form đã tạo trước đó bằng Form Wizard Chọn Form click vào biểu tượng thiết kế
  41. Màn hình thiết kế form xuất hiện như sau Danh sách các trường Bật/Tắt cửa sổ Bật/Tắt cửa sổ Bật/Tắt cửa sổ của nguồn dữ liệu nguồn dữ liệu Toolbox thuộc tính của form (Table/Query) Đối tượng đang thiết kế Phần tiêu đề đầu Nguồn dữ liệu Cửa sổ các Phần tiêu đề Phần thân công cụ thiết kế Cửa sổ thuộc tính (Toolbox) của form cuối form 1) Cửa sổ thuộc tính (Properties): mô tả chi tiết về đối tượng của form đang được thiết kế  Chú ý: - Nguồn dữ liệu được sử dụng để hiển thị trên form được khai báo ở thẻ All của đối tượng Form - Muốn thay đổi định dạng của đối tượng trên form (ví dụ: font chữ, màu nền, màu chữ ) thì chọn đối tượng tinh chỉnh ở cửa sổ thuộc tính. 2) Thanh công cụ Toolbox: nơi chứa những đối tượng, những công cụ có thể đưa lên form với mục đích thiết kế giao diện và điều khiển dữ liệu theo mục đích thiết kế. 3) Field List: hiển thị danh sách các trường của nguồn dữ liệu được khai báo ở cửa sổ thuộc tính. Muốn hiển thị dữ liệu của trường nào trên form chỉ cần kéo trường đó trong Field List vào Form Design. 2
  42. 7.4. Main-Sub Form Đặt vấn đề: cần xây dựng một Form hiển thị thông tin các Khoa, khi một Khoa được hiển thị thì phải hiển thị luôn danh sách sinh viên thuộc Khoa đó. Trong trường hợp này, Access cung cấp kỹ thuật tạo form có thể thỏa mãn yêu cầu trên, form được tạo ra được gọi là Main-Sub form. Có thể hiểu Sub form là form này lồng trong form kia (có thể lồng trong nhau nhiều lớp). Form chứa gọi là form cha (Main form); form được lồng vào gọi là form con (Sub form). Việc xử lý dữ liệu trên từng form có thể xử lý độc lập hoặc có quan hệ với nhau tuỳ theo mục đích công việc. Ví dụ: các bước tạo một một Main-Sub form cho bảng Khoa và SinhVien như hình bên dưới: Cách 1: Tạo Main Form và Sub Form riêng rồi liên kết lại với nhau: Bước 1: Tạo Form hiển thị cho bảng Khoa bằng Wizard và chọn Style Columnar. Đặt tên cho Form này là Khoa_MainForm
  43. Bước 2: Tạo Form hiển thị cho bảng SinhVien bằng Wizard và chọn Style DataSheet, tên là SinhVien_SubForm. Form này có hình dạng tương tự như phần DataView của table SinhVien. Bước 3: Mở Form Khoa ở chế độ Design View → Mở rộng phần Detail → Kéo Form SinhVien_SubForm vào phần trống vừa được tạo ra.
  44. Bước 4: Điều chỉnh giao diện và chuyển qua Form View Trong Sub Form SinhVien hiển thị các sinh viên thuộc Khoa Công nghệ Thông tin. Giao diện Main-Sub như trên trình bày những sinh viên trong từng khoa. Đồng thời có thể tiến hành thêm, xóa, sửa thông tin SinhVien. Cách 2: Tạo Main-Sub Form cùng lúc: Bước 1: Sử dụng form Wizard, chọn các thuộc tính của bảng Khoa:
  45. Bước : Chọn tiếp các thuộc tính của bảng SinhVien: Bước : trong mục này chọn là “by Khoa” để tạo Main-Sub form (nếu chọn “by SinhVien” thì chỉ là form thường) Bước : trong mục này chọn là “by Khoa” để tạo Main-Sub form. Access tự động hiểu rằng Khoa là Main-Form còn SinhVien là Sub-Form. Bước 4: Chọn kiểu cho Sub form là Datasheet
  46. Bước 5: Lưu lại tên của form Main và form Sub Kết quả đạt được cũng tương tự như việc tạo 2 form riêng rồi liên kết lại với nhau: 7.5. Sử dụng nút lệnh (Command Button) Nút lệnh là một biểu tượng ở trên form mà khi click chột vào thì form sẽ thực hiện một công việc nào đó, ví dụ: khi nhấn lên nút - Một bảng lương sẽ được in ra. - Form đang làm việc sẽ được đóng lại. Access cung cấp tính năng Control Button Wizard giúp người thiết kế tạo một số loại nút lệnh mà không cần biết nhiều đến lập trình. Dưới đây là các bước sử dụng: Ví dụ: Tạo nút Bước : Mở form ở chế độ Design và mở cửa sổ các công cụ thiết kế (Toolbox). Chú ý phải kích hoạt tính năng Control Wizard của toolbox
  47. Control Wizard Bước : Mở rộng phần Detail của Form, chọn biểu tượng tạo nút lệnh trên Toolbox, dùng chuột vẽ nút lệnh ở vị trí thích hợp
  48. Bước : Một hộp thoại xuất hiện yêu cầu chọn hành động cho nút lệnh - Categories: chứa các nhóm thao tác mà một nút lệnh có thể nhận - Actions: chứa danh sách các lệnh của mỗi nhóm. Nhóm / Lệnh Ý nghĩa Record Navigation Định hướng trỏ chuột trên bản ghi - Go To First Record - Chuyển về bản ghi đầu - Go To Last Record - Chuyển đến bản ghi cuối cùng - Go To Next Record - Chuyển đến bản ghi kề sau - Go To Previous Record - Chuyển về bản ghi kề trước Record Operations Các xử lý với bản ghi - Add New Record - Thêm bản ghi mới - Delete Record - Xoá bản ghi hiện tại - Update Record - Cập nhật bản ghi hiện tại - Undo Record - Phục hồi thay đổi dữ liệu bản ghi Form Operations Các xử lý với Form - Close Form - Đóng form - Open Form - Mở một form khác Report Operations Các xử lý với Report - Preview report - Xem trước nội dung (Preview) report - Print report - In report - Send report to file - Xuất report ra một tập tin khác Applications Xử lý ứng dụng - Quit Application - Thoát khỏi Access - Run Application - Chạy một ứng dụng nào đó (ví dụ, file .exe) Miscellaneous Một số thao tác khác - Print table - In nội dung một bảng - Run macro - Thi hành một macro - Run query - Thi hành một query
  49. Với yêu cầu đóng form thì chọn: Categories là Form Actions và Actions là Close Form. Chọn xong nhấn Next: Bước : Chọn hiển thị cho nút lệnh - Tuỳ chọn Text nếu muốn hiển thị nội dung bằng chữ trên nút lệnh. - Tuỳ chọn Picture nếu muốn thể hiện một hình ảnh lên nút lệnh. Cuối cùng, nhấn Finish để kết thúc việc tạo một nút lệnh.
  50. CHƯƠNG . BÁO CÁO (REPORT) Report là công cụ dùng thiết kế in ấn dữ liệu hữu hiệu trong Access. Trong chương này có các nội dung cụ thể bao gồm: Các khái niệm về Report. Sử dụng Report Wizard. 8.1. Khái niệm về Report Report là một thành phần trong CSDL Access cho phép thiết kế các bảng biểu, báo cáo để có thể in ra. Khác với Form, Report chỉ có thể truy xuất dữ liệu để hiện thị mà không có khả năng thay đổi dữ liệu. Cấu trúc Report gồm có các phần: Page Header và Page Footer: tương tự như Header và Footer của Word. Report Header và Report Footer: phần này dùng để hiển thị mọi thứ dùng chung cho các trang của báo cáo. Ví dụ: tên báo cáo, ngày lập, người lập Report Detail: phần này dùng để hiển thị các nội dung được truy xuất từ CSDL. Ví dụ: danh sách sinh viên của Khoa Kinh tế 8.2. Sử dụng Report Wizard để tạo báo cáo Phần này trình bày việc tạo báo cáo bằng cách sử dụng Report Wizard. Ví dụ: tạo một báo cáo cho bảng Khoa. Bước 1: Trong cửa sổ CSDL đang sử dụng, click chọn Reports → Create report by using wizard.
  51. Bước 2: Tại mục Tables/Queries chọn Khoa Việc chọn table Khoa có nghĩa là giá trị của các cột trong bảng Khoa sẽ được sử dụng để hiển thị trên báo cáo. Tương tự như khi tạo Form, Available Fields hiển thị các trường của bảng Khoa, Selected Fields hiển thị các cột được chọn hiển thị trong báo cáo. Nút (>) để chọn trường, nút (>>) để chọn tất cả các trường, nút (<) để loại bỏ trường và nút (<<) để loại bỏ tất cả các trường. Bước 3: Chọn trường vào trong Selected Fields và click Next. 2
  52. Trong giao diện Grouping muốn hiển thị dữ liệu theo nhóm giá trị của trường nào thì Add trường đó từ danh sách bên trái hộp thoại sang hộp preview bên phải hộp thoại. Ví dụ: nếu tiến hành grouping sinh viên theo MaKhoa thì dữ liệu hiển thị trên báo cáo có dạng như sau: MaSV HoSV TenSV NgaySinh GioiTinh HocBong KT 5202 Lê Cường 21/5/1 1 Nam 200 5207 Nguyễn Sơn 17/7/1 0 Nữ 800 CN 520 Ngô Hòa 16/8/1 0 Nam 200 5306 Huỳnh Nga 22/3/1 2 Nữ 400 5308 Phạm Trang 12/7/1 0 Nữ 800 Bước 4: Trong ví dụ này chỉ cần hiển thị một danh sách chung nên không cần thiết lập nhóm ở bước này. Click Next Giao diện này cho phép chọn trường để sắp xếp kết quả hiện thị trên báo cáo (các dòng dữ liệu trên báo cáo sắp xếp theo trường được chọn). Report wizard cho phép tối đa mức ưu tiên sắp xếp dữ liệu được đánh số từ đến 4. Trường nào thiết lập trước, sẽ được ưu tiên sắp xếp trước.Trong trường hợp các giá trị trường đó trùng nhau, Access sẽ chuyển đến các mức tiếp theo để sắp xếp. Kiểu sắp xếp (theo chiều tăng hoặc giảm) có thể thiết lập khi nhấn nút Ascending hoặc Descending bên cạnh trường được chọn.
  53. Bước 5: Chọn TenKhoa và click Next. Giao diện này cung cấp 3 lựa chọn bố cục báo cáo (Layout) là: Columnar, Tabular, Justified và 2 cách bố trí hướng trang giấy (Orentation) là: Portrait và Landscape. Mỗi tùy chọn trên Access đều cung cấp hình ảnh xem trước (Preview). Bước 6: Giữ nguyên tùy chọn mặc định và click Next Trong giao diện này Access cung cấp danh sách các phong cách (style) để chọn.
  54. Bước 7: Chọn Formal và click Next. - Đặt tiêu đề hiển thị cho Report, tiêu đề này cũng sẽ là tên của Report (tuy nhiên tên Report có thể được thay đổi ở cửa sổ các đối tượng CSDL mà không ảnh hưởng đến tiêu đề Report). - Lựa chọn Preview the report: hiển thị Report sau khi click Finish - Lựa chọn Modify the report’s design: mở giao diện Report Design để chỉnh sửa Nếu lựa chọn hiển thị Report thì Xem 4 trang cùng lúc Chuyển đổi chế độ xem/sửa báo cáo Hiển thị trang trước đó Hiển thị trang đầu tiên Hiển thị trang cuối cùng
  55. Bước : Chỉnh sửa báo cáo Click Report Design. Chỉnh sửa nội dung báo cáo như sau: Chuyển qua chế độ View để xem báo cáo
  56. 8.3. Tạo báo cáo có phân nhóm Trong thực tế có rất nhiều báo cáo hiển thị dữ liệu theo từng nhóm. Ví dụ: Hiển thị danh sách sinh viên theo từng khoa, hiển thị danh sách hàng được mua theo từng đơn đặt hàng Microsoft Access cũng hỗ trợ việc tạo ra các báo cáo có phân nhóm một cách đơn giản thông qua Report Wizard. Phần này minh họa việc tạo báo cáo hiển thị danh sách sinh viên theo từng khoa. Phân nhóm (Group header) Detail Bước 1: Trong cửa sổ CSDL đang sử dụng, click chọn Reports → Create report by using wizard. Chọn table Khoa và sau đó chọn cột TenKhoa.
  57. Bước 2: Tiếp theo chọn table SinhVien và các trường MaSV, HoSV, TenSV, NgaySinh, GioiTinh, HocBong.
  58. Bước 3: Trong giao diện Grouping, ta chọn nhóm “By Khoa” rồi click nút (>) Trong khung Preview chúng ta thấy báo cáo sẽ hiển thị MaSV, HoSV và TenSV theo từng TenKhoa. Bước 4: Click Next
  59. Bước 5: Chọn MaSV và click Next. Giao diện này cung cấp 6 lựa chọn bố cục báo cáo (Layout) và 2 cách bố trí hướng trang giấy (Orentation). Mỗi tùy chọn trên Access đều cung cấp hình ảnh xem trước (Preview). Bước 6: click Next chọn Style là “Corporate” và click Next
  60. Bước : Nhập vào tên Report và nhấn Finish Chỉnh sửa báo cáo như sau: Chuyển qua chế độ View để xem báo cáo Report Header: Xuất hiện duy nhất trong trang đầu tiên của báo cáo. (Report footer xuất hiện duy nhất trong trang cuối của báo cáo) TenKhoa Header: Xuất Page Header: Xuất hiện trong mọi trang hiện lại khi dữ liệu trong của báo cáo. (Page Footer cũng tương tự - nhóm đã hiện thị hết Giống như header và footer trong Word) Report Detail: hiển thị dữ liệu trong bảng
  61. CHƯƠNG . BÀI TẬP THỰC HÀNH 9.1. Bài tập – Quản lý Sinh viên Tạo Database với tên DaiHoc.mdb. Thực hiện lại bài tập đã học trong phần lý thuyết về cơ sở dữ liệu DaiHoc như sau: 1) Thiết kế cơ sở dữ liệu gồm các bảng sau: (Chú ý thực hiện mối liên hệ giữa các bảng và thiết kế lookup cho các thuộc tính khóa ngoại) Khoa(MaKhoa, TenKhoa) Field Name Data Type Field Size Format Required MaKhoa Text 2 > Yes TenKhoa Text 50 Yes SinhVien(MaSV, HoSV, TenSV, NgaySinh, GioiTinh, HocBong, MaKH) Field Name Data Type Field Size Format Required MaSV Text 4 > Yes HoSV Text 50 Yes TenSV Text 0 Yes NgaySinh Date/Time Short Date Yes GioiTinh Yes/No Nam, Nữ Yes HocBong Number Long Integer Yes MaKh Text 2 Yes MonHoc(MaMH, TenMH, SoTinChi) Field Name Data Type Field Size Format Required MaMH Text 3 > Yes TenMH Text 50 Yes SoTinChi Number byte Yes LopHoc(MaLop, MaMH, HocKy, NamHoc, GiaoVien) Field Name Data Type Field Size Format Required MaLop Text 2 > Yes MaMH Text 3 Yes HocKy Number byte Yes NamHoc Number Long Integer Yes GiaoVien Text 50 Yes KetQua(MaSV, MaLop, Diem) Field Name Data Type Field Size Format Required MaSV Text 4 > Yes MaLop Text 2 > Yes Diem Number Decimal
  62. Mối liên hệ: 2) Nhập dữ liệu cho các bảng theo hình bên dưới Khoa MonHoc MaKhoa TenKhoa MaMH TenMH SoTinChi CN Công nghệ Thông tin 02 Quản trị học 2 KT Kinh tế 207 Cấu trúc dữ liệu 3 NN Ngoại ngữ 306 Tin học cơ sở 2 403 Kế toán tài chính 3 SinhVien MaSV HoSV TenSV NgaySinh GioiTinh HocBong MaKH 5202 Lê Cường 2 /5/ 99 Nam 200 KT 5207 Nguyễn Sơn 7/7/ 990 Nữ 800 KT 5209 Ngô Hòa 6/8/ 990 Nam 200 CN 5306 Huỳnh Thị Nga 22/3/ 992 Nữ 400 CN 5308 Phạm Thị Trang 2/7/ 990 Nữ 800 CN LopHoc KetQua MaLop MaMH HocKy NamHoc GiaoVien MaSV MaLop Diem 0 306 20 0 Tuấn 5202 0 4 02 403 20 0 Nga 5202 02 7 03 306 2 20 Sơn 5202 03 8 04 207 20 0 Nam 5202 04 9 5207 02 8 5207 03 7 5209 0 5 5306 02 6 5306 04 8 5308 0 3 5308 02 9 5308 03 9
  63. 3) Thực hiện các câu truy vấn sau: Truy vấn chọn (Select Query) 1. Cho biết tên khoa của sinh viên có mã số ‘ 2 2’. Liệt kê các thông tin MaSV, HoSV, TenSV, NgaySinh, TenKhoa. 2. Cho biết thông tin môn học của lớp có mã lớp ‘ 2’. Liệt kê các thông tin MaLop, MaMH, TenMH, SoTinChi, HocKy, NamHoc, GiaoVien. 3. Liệt kê các sinh viên sinh năm và có học bổng trên 500. 4. Liệt kê các sinh viên đạt mức học bổng từ đến 500 5. Liệt kê các sinh viên có ngày sinh vào tháng . 6. Liệt kê các sinh viên có tên bắt đầu là ‘T’ hoặc là ‘K’ 7. Liệt kê những sinh Nữ mà họ có chứa chữ ‘Thị’ gồm các thông tin: MaSV, HoSV, TenSV 8. Cho biết những SV có ngày sinh từ ngày đến ngày gồm các thông tin: MaSV, HoSV, TenSV, NgaySinh, HocBong. 9. Tương tự như câu nhưng tạo cột HoTenSV thay cho hai cột HoSV và TenSV. 10. Hiển thị danh sách SV gồm các thông tin: MaSV, HoSV, TenSV, NamSinh, Tuoi và Tuoi được sắp xếp giảm dần. Biết rằng Tuoi được tính như sau: Tuoi = năm hiện hành – năm sinh. 11. Hiển thị bảng điểm các sinh viên gồm các thông tin: MaSV, HoTenSV, TenMH, Diem, KetQua. Biết rằng nếu Diem < 5 thì KetQua = “Rớt”, ngược lại thì KetQua = “Đậu”. 12. Hiển thị danh sách SV có tuổi từ 2 đến 2 , thông tin gồm: HoTenSV, Tuoi, TenKhoa. 13. Cho biết hai sinh viên đạt mức học bổng cao nhất. 14. Cho biết hai kết quả thi cao nhất. Gồm các thông tin: HoSV, TenSV, TenMH, NamHoc, HocKy, Diem. 15. Cho biết tên các môn học chưa mở lớp 16. Cho biết tên của các khoa chưa có sinh viên. 17. Liệt kê các kết quả học tập và cho biết thông tin sinh viên tương ứng. Gồm MaSV, HoTenSV, MaLop, Diem. Truy vấn trên từng nhóm (Group By Select Query) 18. Tính số lượng sinh viên và tổng học bổng của từng khoa. Gồm MaKhoa, TenKhoa, SoSV, TongHB. 19. Tính số lượng sinh viên nữ của từng khoa. 20. Cho biết sĩ số của từng lớp học: gồm MaLop, NamHoc, HocKy, TenMH, SiSo. 21. Tính tổng số tín chỉ và điểm trung bình học kỳ năm 2 của các sinh viên. Gồm MaSV, HoSV, TenSV, TongTinChi, DiemTB
  64. 22. Cho biết họ tên của hai sinh viên có điểm trung bình học kỳ năm 2 cao nhất. 23. Cho biết họ tên của sinh viên nữ xuất sắc nhất học kỳ năm 2 . 24. Cho biết bảng điểm tất cả các môn học của sinh viên có mã số ‘ 2 2’. (nếu một môn học 2 lần thì chọn điểm số cao nhất). Gồm: MaSV, HoSV, TenSV, TenMH, SoTinChi, Diem. 25. Cho biết điểm cao nhất của môn học ‘Tin học cơ sở’ Truy vấn chéo ( Crosstab query) 26. Cho biết số lượng sinh viên của từng Khoa theo từng giới tính nam, nữ. Gồm: MaKhoa, TenKhoa, SoSVNu, SoSVNam. 27. Cho biết số lượng sinh viên của từng Khoa theo từng giới tính nam, nữ. Gồm: MaKhoa, TenKhoa, SoSVNu, SoSVNam, TongSoSV. 28. Cho biết bảng thống kê điểm cuối cùng của từng sinh viên theo từng môn học như hình bên dưới. MaSV HoTen Cấu trúc dữ liệu Kế toán tài chính Tin học cơ sở 5202 Lê Cường 5308 Phạm Trang Truy vấn thêm xóa sửa 29. Từ bảng SinhVien, KetQua, LopHoc, MonHoc hãy tạo ra bảng sau có tên BangDiem_SV gồm các thông tin: MaSV, HoTenSV, TenMH, SoTinChi, Diem, KetQua. Trong đó KetQua sẽ là “Đậu” nếu Diem>= ngược lại là “Rớt”, và có sắp xếp theo thứ tự MaSV tăng dần. 30. Hãy tạo ra bảng có tên Diem_TB_HK1_2010 gồm các thông tin: MaSV, HoTenSV, SoTinChi, DiemTB. Bảng này lưu số tín chỉ và điểm trung bình của từng sinh viên trong học kỳ năm học 2 . 31. Tăng thêm học bổng cho các SV khoa ‘Công nghệ Thông tin’ mỗi người 2 32. Tăng học bổng cho các sinh viên nữ thêm 50%. 33. Cộng thêm . điểm thi môn “Tin học cơ sở” cho những SV đã thi có điểm thấp hơn . 34. Cộng thêm điểm cho môn “Kế toán tài chính” cho SV thuộc khoa ’Kinh tế’, điểm tối đa của môn này là . 35. Hãy chuyển các sinh viên đang học khoa ‘Kinh Tế’ sang khoa có mã là ‘CN’ 36. Xóa tất cả điểm thi của các sinh viên thuộc khoa ‘Công nghệ Thông tin’ đã thi môn “Tin học cơ sở”. 37. Hủy bỏ kết quả của các lớp học trong học kỳ 2 năm 2 . Truy vấn có tham số 38. Liệt kê các sinh viên có học bổng cao hơn giá trị nhập từ bàn phím.
  65. Thực hiện các biểu mẫu (Form) : Hãy dùng công cụ Wizard để tạo biểu mẫu 1) Tạo Form cho phép nhập dữ liệu vào bảng Khoa, SinhVien, MonHoc 2) Tạo Form Main-Sub Form cho phép nhập dữ liệu vào bảng Lớp Học và nhập kết quả cho các sinh viên trong lớp học đó. Main-Form lấy dữ liệu từ bảng LopHoc và Sub-Form lấy dữ liệu từ Query 17
  66. 4) Dùng Report Wizard để tạo các báo cáo sau: 1) Lập báo cáo danh sách các môn học. 2) Danh sách sinh viên theo từng khoa. Lấy dữ liệu từ hai bảng Khoa và SinhVien
  67. 3) Cho biết bảng điểm của lớp học có mã số ‘ 2’: Dữ liệu lấy từ Query 2 và Query 4) Bảng điểm học tập theo của sinh viên có mã số ‘ 2 2’. Lấy dữ liệu từ bảng SinhVien và Query 24.
  68. 9.2. Bài tập – Quản lý Bán hàng Tạo file CSDL có tên là QLBH.MDB (Quản lý bán hàng) 1) Thiết kế cơ sở dữ liệu gồm các bảng sau : NhaCungCap(MaNhaCC, TenNhaCC) Field Name Data Type Description Field Properties MaNhaCC Text Mã nhà cung cấp Field size : 2 Input Mask : 00 Required : Yes Indexed : Yes (No Duplicates) TenNhaCC Text Tên nhà cung cấp Field size : 50 NhanVien(MaNV, HoNV, TenNV, GioiTinh, DienThoai, Luong) Field Name Data Type Description Field Properties MaNV Text Mã số nhân viên Field size : 2 Input Mask : 00 Required : Yes Indexed : Yes (No Duplicates) HoNV Text Họ nhân viên Field size : 35 TenNV Text Tên nhân viên Field size : 10 GioiTinh Yes/No Format : ;”Nam”;”Nu” Display control : TextBox DienThoai Text Số điện thoại nhân viên Field size : 15 Luong Curency Lương của nhân viên KhachHang(MaKH, HoKH, TenKH, DiaChi, DienThoai) Field Name Data Type Description Field Properties MaKH Text Mã số khách hàng Field size : 5 Input Mask : LL000 Required : Yes Indexed : Yes (No Duplicates) HoKH Text Họ khách hàng Field size : 35 TenKH Text Tên khách hàng Field size : 0 DiaChi Text Địa chỉ khách hàng Field size : 50 DienThoai Text Điện thoại khách hàng Field size : 15 LoaiMH(MaLoaiMH, TenLoaiMH) Field Name Data Type Description Field Properties MaLoaiMH Text Mã loại mặt hàng Field size : 2 Input Mask : 00 Required : Yes Indexed : Yes (No Duplicates) TenLoaiMH Text Tên loại mặt hàng Field size : 30
  69. MatHang(MaMH, TenMH, DVT, MaLoaiHH, MaNhaCC) Field Name Data Type Description Field Properties MaMH Text Mã mặt hàng Field size : 2 Input Mask : 00 Required : Yes Indexed : Yes (No Duplicates ) TenMH Text Tên mặt hàng Field size : 30 Required : Yes DVT Text Đơn vị tính Field size : 5 MaLoaiMH Text Mã loại mặt hàng Dùng LOOKUP (làm tương tự) Row Source : LOAIMH MaNhaCC Text Mã nhà cung cấp Dùng LOOKUP (làm tương tự) Row Source : NHACUNGCAP HoaDonBan(SoHDB, NgayBan, MaKH, MaNV) Field Name Data Type Description Field Properties SoHDB Text Số hóa đơn bán Field size : 4 Input Mask : L000 Required : Yes Indexed : Yes (No Duplicates) NgayBan Date/Time Ngày bán Format : dd/mm/yy Input Mask : 00/00/00 MaKH Text Mã khách hàng Thẻ Lookup : Display Control : Combo Box Row Source Type : Table/Query Row Source : KHACHHANG MaNV Text Mã nhân viên Dùng LOOKUP (làm tương tự ) Row Source : NHANVIEN CTHDB(SoHDB, MaMH, SoLuong, DonGiaBan) Field Name Data Type Description Field Properties SoHDB Text Số hóa đơn bán Dùng LOOKUP (làm tương tự) Row Source : HOADONBAN MaMH Text Mã mặt hàng Dùng LOOKUP (làm tương tự) Row Source : MATHANG SoLuong Number Số lượng bán Field size : Long Integer DonGiaBan Number Đơn giá bán Field size : Long integer 2) Thiết lập mối quan hệ giữa các bảng đã cho
  70. 3) Nhập dữ liệu (tham khảo) NhanVien MaNV HoNV TenNV GioiTinh DienThoai Luong 0 Nguyễn Thị Anh Nữ 600 000 02 Lê Thị Anh Nữ 09 4 23456 700 000 03 Nguyễn Văn Hùng Nam 800 000 04 Đỗ Văn Hoàng Nam 700 000 05 Lê Thị Minh Nữ 700 000 06 Nguyễn Văn Lợi Nam 09 2456789 800 000 07 Hoàng Thị Liên Nữ 500 000 KhachHang MaKH HoKH TenKH DiaChi DienThoai KH001 Nguyễn Thị Minh Trang 12 Trần Phú, Nha Trang KH002 Lê Công Thành Trí 34 Bắc Sơn, Nha Trang KH003 Nguyễn Văn Nghĩa 78 Hồ Văn Huê, TpHCM 09 4235688 KH004 Đỗ Văn Bá Hòa 56 Võ Văn Tần, Đà Nẵng 09 4246899 KH005 Lê Anh Đoàn Trần Nghiệp KH006 Nguyễn Bình Nguyễn Đình Chiểu LoaiMH NhaCungCap MaLoaiMH TenLoaiMH MaNhaCC TenNhaCC 0 Thức uống 0 Cty trà Thái Nguyên 02 Gia vị 02 Văn phòng đại diện sữa Hà Lan 03 Đồ làm sẵn 03 Cty sữa VinaMilk 04 Bơ sữa 04 Cty sữa đường Khánh Hòa 05 Trái cây khô 05 Cty nước giải khát Bến Thành 06 Vải 06 Công ty rượu Bình Tây 07 Cửa hàng bánh ngọt Nha Trang 08 Công ty Bia Bến Thành 09 Chợ Đầm 2
  71. MatHang MaMH TenMH DVT MaLoaiMH MaNhaCC 0 Trà Lipton Gói 0 0 02 Nước khoáng Thanh Da Chai 0 05 03 Xúc xích Cây 03 09 04 Lạp xưởng Kg 03 09 05 Sữa Lon 04 03 CTHDB HoaDonBan SoHDB MaMH SoLuong DonGiaBan SoHDB MaKH MaNV NgayBan B001 0 0 0000 B001 KH001 0 0 /0 /20 0 B002 02 200 3000 B002 KH002 02 08/03/20 0 B003 0 20 20000 B003 KH00 02 4/06/20 0 B003 03 70 7000 B004 KH003 03 2 /06/20 0 B001 04 30 5000 B005 KH001 04 3 /07/20 0 B004 05 70 7000 B006 KH003 04 / 0/20 0 B002 04 30 5000 B007 KH004 04 2 / 2/20 0 4) Thực hiện các truy vấn sau : Truy vấn chọn (Select Query) 1. Liệt kê danh sách nhân viên bán hàng có trong cửa hàng. 2. Liệt kê danh sách mặt hàng có trong cửa hàng (Mã MH, Tên MH, DVT, Tên loại MH). 3. Liệt kê danh sách nhà cung cấp hàng hóa cho cửa hàng (Mã nhà cung cấp, Tên nhà cung cấp) 4. Lập danh sách các khách hàng mua hàng từ 2 đến ngày 2 (Mã KH, Tên KH, Địa chỉ, Điện thoại, Ngày mua hàng), sắp xếp theo tên, nếu tên trùng nhau thì sắp xếp theo họ. 5. Lập danh sách các khách hàng mua hàng trong tháng 6 năm 2 (Mã KH, Tên KH, Địa chỉ, Điện thoại, Ngày mua hàng). 6. Tìm tên và địa chỉ các khách hàng đã mua hàng trước ngày 2 , sắp xếp theo ngày bán hàng. 7. Tìm tên và địa chỉ các khách hàng đã mua hàng vào ngày 2 . 8. Liệt kê danh sách khách hàng có ký tự đầu của tên là H. 9. Liệt kê các chi tiết hóa đơn với các thông tin bổ sung (Số HD bán, Ngày bán, Mã MH, Tên mặt hàng, Số lượng, Đơn giá bán, Thành tiền). Truy vấn trên từng nhóm (Group by) 10. Liệt kê danh sách các hóa đơn đã bán trong cửa hàng (Số HD bán, Ngày bán, Mã KH, Họ Tên KH, Mã NV, Họ tên NV, Thành tiền HĐ). 11. Hãy liệt kê toàn bộ tên khách hàng và tổng số hoá đơn của mỗi khách hàng.
  72. 12. Liệt kê các mặt hàng cùng với tên loại MH, giá trung bình, giá cao nhất, giá thấp nhất khi bán ra. 13. Như câu 2 nhưng chỉ đối với mặt hàng có tên “Thức uống“ 14. Như câu 2 nhưng chỉ đối với mặt hàng được cung cấp bởi nhà cung cấp có tên “Chợ Đầm”. 15. Liệt kê mỗi khách hàng nếu phân theo từng mặt hàng thì đã đặt bao nhiêu mặt hàng. 16. Như câu nhưng chỉ quan tâm đến khách hàng có tên là Anh. 17. Thống kê mỗi khách hàng có bao nhiêu hóa đơn trước ngày 2 . 18. Lập danh sách các khách hàng đã mua các mặt hàng nào, số lượng bao nhiêu trong khoảng thời gian từ 2 đến 26/11/20 . 19. Tính số lượng và số tiền bán hàng của từng mặt hàng trong tháng đầu năm 2 . 20. Tính tổng số tiền bán hàng theo từng loại mặt hàng. 21. Tính số tiền bán hàng của từng loại mặt hàng trong tháng đầu năm 2 . 22. Thống kê số tiền bán hàng theo tháng, theo quí, theo năm (tạo từng query). 23. Hiển thị thông tin 2 khách hàng có số tiền mua hàng cao nhất. Truy vấn có tham số (Parameter query) 24. Liệt kê Họ, tên khách hàng và tổng số hóa đơn của khách hàng với tên nhập từ bàn phím. 25. Liệt kê các thông tin về nhân viên với mã nhân viên được nhập từ bàn phím. 26. Lập danh sách các khách hàng mua hàng trong khoảng thời gian từ ngày x đến ngày y (với x, y được nhập từ bàn phím) (Mã KH, HọTên KH, Địa chỉ, Điện thoại). 27. Thực hiện lại câu số 10 chỉ hiện thị một hóa đơn với số hóa đơn nhập từ bàn phím. 28. Lập danh sách các khách hàng đã mua các mặt hàng, số lượng bao nhiêu trong khoảng thời gian từ ngày x đến ngày y (với x, y được nhập từ bàn phím). Truy vấn chéo ( Crosstab query) 29. Thống kê các khách hàng đã mua các mặt hàng hóa nào với số lượng bao nhiêu. 30. Tính số tiền bán hàng cho mỗi khách hàng trong từng quí năm 2 . 31. Tính số tiền bán hàng của khách hàng có tên là “Anh” trong từng quí năm 2 . Truy vấn thêm, xóa, sửa 32. Tạo một bảng mới gồm các hàng hóa có mã số của nhà cung cấp là “ 2”. 33. Xóa các bản ghi của bảng HANGHOA do nhà cung cấp có mã số là “ 2” cung cấp. 34. Thêm lại các bản ghi đã bị xóa từ bản HANGHOA bởi bảng đã tạo ra ở câu 2. 35. Giảm giá 10% các mặt hàng đã bán do nhà cung cấp có mã số là “ ” cung cấp. 36. Tăng lương cho các nhân viên là nữ. 37. Đổi ký hiện “B” trong số hóa đơn của tất cả các hóa đơn thành “H”. Ví dụ “B ” thành “H ”. (chú ý mối liên hệ giữa HoaDonBan và CTHDB phải là Cascade Update). Truy vấn khác:
  73. 38. Tính số tiền phải trả của các khách hàng mua hàng từ ngày 1/4/2 đến ngày 2 . Biết rằng : Nếu số tiền > 2 thì được giảm đi . 39. Liệt kê những nhân viên không tham gia bán hàng trong thời gian qua. 40. Liệt kê những mặt hàng chưa bán được trong thời gian qua. 5) Thực hiện các biểu mẫu (Form) : Hãy dùng công cụ Wizard để tạo biểu mẫu 1. Tạo các biểu mẫu cho bảng NhanVien, KhachHang, MatHang Ví dụ form NhanVien. Thao tác: Nhập mới một số nhân viên và quan sát sự thay đổi của dữ liệu trong bảng NhanVien. 2. Tạo biểu mẫu Loại Mặt Hàng dạng Main Sub Form. Trong đó Form chính : bảng LoaiMatHang, Form phụ : bảng MatHang. Thao tác: Nhập mới một số loại mặt hàng và một số mặt hàng, quan sát sự thay đổi của dữ liệu trong bảng LoaiMH và MatHang.
  74. 3. Tạo biểu mẫu Hóa Đơn Bán dạng Main Sub Form để theo dõi chi tiết đơn đặt hàng. Trong đó Form chính : bảng Query 10, Form phụ : Query 9. Thao tác: Bổ sung thêm một số chi tiết bán cho hóa đơn, quan sát sự thay đổi của số tiền tổng cộng hóa đơn 6) Thực hiện các báo cáo (Report): Hãy dùng công cụ Wizard để tạo báo cáo 1. Lập báo cáo hiển thị danh sách mặt hàng. 2. Tạo report Hóa Đơn Bán để in được hóa đơn ra giấy, sử dụng dữ liệu từ Query 2 , và Query 9.
  75. 3. Lập báo cáo Danh Sách Nhân Viên Bán Hàng để theo dõi quá trình bán hàng của nhân viên. Dữ liệu lấy từ bảng NhanVien và Query 10. 4. Lập báo cáo Tổng Hợp Bán Hàng để theo dõi doanh số từng mặt hàng. Dữ liệu lấy từ bảng MatHang và Query 9.
  76. 9.3. Bài tập – Quản lý Thư viện Tạo file CSDL có tên là ThuVien.mdb 1) Thiết kế cơ sở dữ liệu gồm các bảng sau : LoaiSach(MaLoaiSach, TenLoaiSach, ThoiHanMuon) Field Name Data Type Description Field Properties MaLS Text Mã loại sách Field size : 2 Required : Yes Indexed : Yes (No Duplicates) TenLoaiSach Text Tên loại sách Field size : 50 ThoiHanMuon Number Số ngày được mượn của Field size: Long Integer sách thuộc loại này Sach(MaSach, TenSach, MaLS, TacGia, SoTrang, GiaBia, SoDauSach) Field Name Data Type Description Field Properties MaSach Text Mã số của sách Field size : 4 Input Mask : 0000 Required : Yes Indexed : Yes (No Duplicates) TenSach Text Tên sách Field size : 00 MaLS Text Mã loại sách FieldSize: 2 Dùng LOOKUP Row Source : LoaiSach TacGia Text Tên các tác giả viết sách Field size : 100 SoTrang Number Số trang của quyển sách Field size: Long Integer GiaBia Number Giá bìa của sách Field size: Long Integer SoDauSach Text Số bản sách thư viện mua Field size: Long Integer DocGia(MaDG, HoTenDG, NgaySinh, DiaChi, DienThoai) Field Name Data Type Description Field Properties MaDG Text Mã số độc giả Field size : 5 Input Mask : LL000 Required : Yes Indexed : Yes (No Duplicates) HoTenDG Text Họ tên độc giả Field size : 50 NgaySinh DateTime Ngày sinh DiaChi Text Địa chỉ độc giả Field size : 00 DienThoai Text Điện thoại độc giả Field size : 15
  77. PhieuMuon(MaPhieu, NgayMuon, NgayTra, MaDG) Field Name Data Type Description Field Properties MaPhieu Text Mã phiếu Field size : 4 Input Mask : L000 Required : Yes Indexed : Yes (No Duplicates ) NgayMuon DateTime Ngày mượn sách Required: Yes NgayTra DateTime Ngày trả sách (nếu Required: No bằng NULL nghĩa là chưa trả sách) MaDG Text Mã độc giả FieldSize: 5 Dùng LOOKUP, Row Source : DocGia ChiTietPM(MaPhieu, MaSach) Field Name Data Type Description Field Properties MaPhieu Text Mã phiếu mượn Field size : 4 Dùng LOOKUP Row Source : PhieuMuon MaSach Text Mã sách mượn Field size : 4 Dùng LOOKUP Row Source : Sach 2) Thiết lập mối quan hệ giữa các bảng đã cho 3) Nhập dữ liệu cho các bảng LoaiSach MaLS TenLoaiSach ThoiHanMuon VH Văn học 0 KT Kinh tế 20 KH Khoa học kỹ thuật 5 DS Đời sống 0 Sach MaSach TenSach MaLS TacGia SoTrang GiaBia SoDauSach 0 0 Đất phương nam VH Sơn Nam 300 20 000 5 0 02 Thời xa vắng VH Lê Lựu 400 50 000 0 0 03 Nhắm mắt thấy Paris VH Dương Thụy 250 45 000 5 020 Microsoft Access KH Thiện Tâm 200 30 000 20 030 Chiến lược đại dương xanh KT Mauborgne 370 55 000 25 040 Đời thay đổi khi chúng DS Mathews 220 32 000 30 ta thay đổi
  78. DocGia MaDG HoTenDG NgaySinh DiaChi DienThoai DG00 Lê Hoàng Anh 2/ 0/ 99 20 Trần Phú Q2 DG002 Mai Xuân Thủy 30/07/ 985 22 Ngô Quyền Q5 DG003 Nguyễn Hồng Nam 5/06/ 987 55 Trần Hưng Đạo 09 4235688 DG004 Lê Bích Phượng 08/03/ 990 23 Trần Phú 09 4246899 DG005 Nguyễn Xuân Sơn 23/07/ 989 0 Lý thường Kiệt PhieuMuon MaPhieu NgayMuon NgayTra MaDG P001 2/ 0/20 0 20/ 2/20 0 DG002 P002 22/0 /20 DG001 P003 7/ 0/20 0 25/ 0/20 0 DG001 P004 03/ /20 0 DG003 P005 03/ 2/20 0 DG004 P006 0/02/20 20/02/20 DG00 ChiTietPM MaPhieu MaSach P001 0 0 P00 0 02 P002 020 P002 030 P003 0 02 P004 030 P005 0 03 P006 0 0 4) Thực hiện các truy vấn sau : 1. Cho biết các quyển sách mà độc giả ‘Lê Hoàng Anh’ đã mượn. 2. Khi mượn sách, nếu sách có trị giá trên . thì độc giả phải đặt cược 20% giá bìa. Hãy cho biết số tiền đặt cược của tất cả các cuốn sách được mượn trong năm 2 . Gồm: MaPhieu, NgayMuon, MaSach, TenSach, GiaBia, TienCuoc. 3. Liệt kê các cuốn sách đang được mượn chưa trả. (MaDG, TenDG, MaSach, TenSach, NgayMuon) 4. Liệt kê các quyển sách đã hôm nay đã quá hạn trả nhưng độc giả chưa trả. Cho biết số ngày trễ hạn (MaDG, TenDG, MaSach, TenSach, NgayMuon, SoNgayTre) 5. Khi trả sách trả quá hạn, độc giả sẽ bị phạt 5.000 cho mỗi ngày trễ hạn của mỗi cuốn sách. Tính số tiền bị phạt của phiếu mượn ‘P ’. 6. Hãy cho biết số lượng đang mượn và số lượng trong kho của quyển sách ‘Đất phương nam’ (TenSach, SoDauSach, SoLuongMuon, SoLuongCon) 7. Tính tổng số tiền đặt cược trong tháng 10 năm 2 (tiền đặt cược độc giả nộp vào ngày mượn sách)
  79. 8. Tính tổng số tiền phạt trong tháng năm 2 (tiền phạt độc giả nộp vào ngày trả sách) 9. Thống kê số lần mượn sách của từng độc giả trong từng tháng năm 2 10 (crosstab) 10. Cho biết tên hai cuốn sách được mượnar nhiều lần nhất trong năm 2 . 11. Cho biết tên độc giả mượn nhiều sách nhất trong năm 2 12. Cho biết tên các độc giả đã mượn hai cuốn sách trở lên. 13. Liệt kê các quyển sách chưa được mượn lần nào. 5) Thực hiện các biểu mẫu (Form) : Hãy dùng công cụ Wizard để tạo biểu mẫu 1. Tạo các biểu mẫu cho bảng LoaiSach, Sach, DocGia 2. Tạo biểu mẫu Phiếu Mượn dạng Main Sub Form để theo dõi chi tiết phiếu mượn. 6) Thực hiện các báo cáo (Report): Hãy dùng công cụ Wizard để tạo báo cáo 1. Lập báo cáo bảng Sach. 2
  80. 2. Tạo report Phiếu mượn để in được phiếu mượn ra giấy
  81. 9.4. Bài tập 4 – Quản lý Dự án Tạo file CSDL có tên là DuAn.mdb 1) Thiết kế cơ sở dữ liệu gồm các bảng sau : PhongBan(MaPB, TenPB, MaTruongPhong) Field Name Data Type Description Field Properties MaPB Text Mã phòng ban Field size : 2 Required : Yes Indexed : Yes (No Duplicates) TenPhongBan Text Tên phòng ban Field size : 50 MaTruongPhong Number Mã nhân viên của Field size: 3 trưởng phòng Required : No LOOKUP Row Source : NhanVien NhanVien(MaNV, HoNV, TenNV, NgayVaoLam, Luong, MaPB) Field Name Data Type Description Field Properties MaNV Text Mã số nhân viên Field size : 4 Input Mask : 0000 Required : Yes Indexed : Yes (No Duplicates) HoNV Text Họ nhân viên Field size : 50 TenNV Text Tên nhân viên Field size : 0 GioiTinh Yes/No Giới tính nhân viên Format: “;Nam;Nữ” NgayVaoLam DateTime Ngày nhân viên vào làm việc tại công ty Luong Number Lương nhân viên FieldSize: Decimal MaPB Text Mã phòng ban của nhân FieldSize: 2 viên Dùng LOOKUP Row Source : PhongBan DuAn(MaDA, TenDA, DiaDiem, NgayBD, MaPB) Field Name Data Type Description Field Properties MaDA Text Mã số dự án Field size : 3 Input Mask : L00 Required : Yes Indexed : Yes (No Duplicates) TenDA Text Tên dự án Field size : 50 DiaDiem Text Địa điểm thực hiện dự Field size : 50 án NgayBD DateTime Ngày bắt đầu dự án MaPB Text Mã phòng ban quản lý Field size : 2 dự án Dùng LOOKUP Row Source : PhongBan
  82. PhanCong(MaDA, MaNV, SoGio) Field Name Data Type Description Field Properties MaDA Text Mã dự án Field size : 3 Dùng LOOKUP Row Source : DuAn MaNV Text Mã nhân viên FieldSize: 4 Dùng LOOKUP Row Source : NhanVien SoGio Number Số giờ nhân viên được phân FieldSize: công thực hiện dự án Decimal, Scale:18, Precision:1 ThanNhan(MaNV, TenThanNhan, NgaySinh, QuanHe) Field Name Data Type Description Field Properties MaNV Text Mã nhân viên FieldSize: 4 Dùng LOOKUP Row Source : NhanVien TenThanNhan Text Tên thân nhân của Field size : 50 nhân viên NgaySinh DateTime Ngày sinh của thân nhân QuanHe Text Mối quan hệ của thân Field size : 30 nhân và nhân viên 2) Thiết lập mối quan hệ giữa các bảng đã cho 3) Nhập dữ liệu cho các bảng PhongBan (chú ý: mã trưởng phòng nhập sau khi đã nhập thông tin nhân viên) MaPB TenPB MaTruongPhong KT Kế toán V04 KD Kinh doanh N01 PX Phân xưởng N05 NhanVien MaNV HoNV TenNV GioiTinh NgayVaoLam Luong MaPB N01 Hoài Nam Nam 2/ 0/ 99 3 000 000 KD V02 Bình Phương Nữ 30/07/ 985 4 000 000 KT N03 Mỹ Hòa Nam 5/06/ 987 5 000 000 KD V04 Phương Anh Nữ 08/03/ 990 5 000 000 KT N05 Sơn Thủy Nữ 23/07/ 989 4 500 000 PX
  83. DuAn MaDA TenDA DiaDiem NgayBD MaPB D1 Hồ Con Rùa Sài Gòn 27/03/20 KD D2 Chùa Tây Phương Hà Nội 0/06/2009 KD D3 Chùa Linh Sơn Nha Trang 6/08/20 KD D4 Dinh Bảo Đại Nha Trang 22/0 /20 0 KT D5 Chùa Thầy Hà Nội 23/05/20 0 KT PhanCong MaDA MaNV SoGio D1 N01 2 D1 N03 5 D2 N01 6 D2 V02 8 D3 V02 0 D3 V04 7 D3 N01 9 D4 N03 4 ThanNhan MaNV TenThanNhan NgaySinh QuanHe N01 Nam 2/ 0/ 990 Con gái N01 Quốc 22/0 / 98 Con trai V02 Sơn 7/ 0/200 Vợ chồng N03 Hà 03/ / 998 Con gái V04 Việt 03/ 2/2002 Con trai V04 Nam 0/02/ 985 Vợ chồng 4) Thực hiện các truy vấn sau : 1. Tìm các nhân viên lương ít hơn . . ở ‘Phòng Kinh doanh’ hoặc ít hơn . . ở ‘Phòng Kế toán’. 2. Liệt kê các phòng ban và tên trưởng phòng của từng phòng ban (họ tên đầy đủ). 3. Tìm tên những nữ nhân viên và tên người thân của họ. 4. Liệt kê các đề án ở "Nha Trang" cùng với tên phòng ban chủ trì đề án, họ tên trưởng phòng và ngày vào làm của người ấy. 5. Với mỗi nhân viên, cho biết họ tên nhân viên và họ tên trưởng phòng của phòng ban mà nhân viên đó làm việc. 6. Liệt kê những nhân viên và tên đề án mà nhân viên đó tham gia, với điều kiện đề án đó do một phòng ban khác quản lý. 7. Với mỗi đề án thực hiện tại Nha Trang, liệt kê tên đề án và tổng số giờ làm việc của tất cả các nhân viên tham dự đề án đó. 8. Với các phòng ban có mức lương trung bình trên . .000, liệt kê tên phòng ban và số lượng nhân viên của phòng ban đó.
  84. 9. Cho biết lương trung bình của tất cả các nữ nhân viên. 10. Với mỗi giờ làm việc cho dự án, một nhân viên sẽ được thưởng 1% tiền lương. Tính số tiền thưởng của từng nhân viên. 11. Với mỗi giờ làm việc cho dự án, một nhân viên mà có thân nhân sẽ được thưởng 2% tiền lương. Tính số tiền thưởng của các nhân viên này. 12. Tính số tiền thưởng của từng nhân viên theo từng dự án (crosstab). 5) Thực hiện các biểu mẫu (Form) : Hãy dùng công cụ Wizard để tạo biểu mẫu 1. Tạo các biểu mẫu dạng columnar cho bảng PhongBan, DuAn 2. Tạo biểu mẫu Main/Sub Form cho bảng NhanVien (main) và ThanNhan (sub) 3. Tạo biểu mẫu Main/Sub Form cho bảng DuAn (main) và NhanVien (sub) 6) Thực hiện các báo cáo (Report): Hãy dùng công cụ Wizard để tạo báo cáo 1. Lập báo cáo bảng NhanVien. 2. Lập báo cáo thống kê các dự án, mỗi dự án có những nhân viên nào tham gia với số giờ là bao nhiêu.
  85. TÀI LIỆU THAM KHẢO [1] Cơ sở dữ liệu 1 - Nguyễn Đức Thuần - Trường Đại học Nha Trang, 2009. [2] Hệ quản trị CSDL Access - Nguyễn Quỳnh Diệp - Khoa CNTT Trường Đại học Sư Phạm Hà nội, 2007. [3] Giáo Trình Microsoft Access 2003 tập 1 - Nguyễn Thiện Tâm - Đại học Quốc gia TP. Hồ Chí Minh, 2008. [4] Fundamental of Database System 4th Edition – Elmasri, Navathe - Addison Wesley, 2003.