Bài giảng Tin học ứng dụng trong kinh tế - Nguyễn Thủy Đoan Trang

ppt 266 trang phuongnguyen 2980
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Tin học ứng dụng trong kinh tế - Nguyễn Thủy Đoan Trang", để 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:

  • pptbai_giang_tin_hoc_ung_dung_trong_kinh_te_nguyen_thuy_doan_tr.ppt

Nội dung text: Bài giảng Tin học ứng dụng trong kinh tế - Nguyễn Thủy Đoan Trang

  1. Trường Đại học Nha Trang Khoa Công nghệ Thông tin Bộ môn Hệ thống Thông tin TIN HỌC ỨNG DỤNG TRONG KINH TẾ Nguyễn Thủy Đoan Trang trangdhnt@gmail.com 2013 1
  2. Phân bổ thời gian ❖Tài liệu học tập ▪ Bài giảng Tin học Ứng dụng trong kinh tế, BM Hệ thống Thông tin, Đại học Nha Trang, 2013. ❖Tài liệu tham khảo ▪ webmonhoc.ntu.edu.vn ▪ trangdhnt.tk ▪ Thư viện trường đại học Nha Trang ▪ Các trang web khác trên Internet 2 2013
  3. Nội dung 1 Cơ sở dữ liệu theo mô hình dữ liệu quan hệ 2 Đại số quan hệ 3 Tổ chức cơ sở dữ liệu và thiết kế bảng (Table) 4 Thiết kế truy vấn (Query) 5 Thiết kế biểu mẫu nhập liệu (Form) 6 Thiết kế Báo cáo (Report) 3 2013
  4. Các khái niệm cơ bản ❖ Dữ liệu (data): Là những số liệu rời rạc, như tên, địa chỉ, số điện thoại của một khách hàng. ❖ Cơ sở dữ liệu là gì? (database) ▪ Là một sưu tập của những dữ liệu có liên quan. Ví dụ: niên giám điện thoại, danh mục sách, Các dữ liệu này có thể được lưu trên các thiết bị trữ tin khác nhau như sổ sách, băng đĩa từ, ▪ Các CSDL có thể có kích thước và độ phức khác nhau. ▪ Một CSDL có thể được phát sinh và duy trì bằng máy hoặc thủ công. 4 2013
  5. Các khái niệm cơ bản ❖Hệ quản trị CSDL là gì? (DataBase Management System - DBMS) ▪ Hệ quản trị cơ sở dữ liệu là một tập những chương trình cho phép người sử dụng tạo ra và duy trì CSDL. ▪ Hệ QTCSDL là một phần mềm hệ thống cho phép định nghĩa, xây dựng và xử lý dữ liệu. 5 2013
  6. Các khái niệm cơ bản ▪ Định nghĩa: Khai báo “bộ khung” dữ liệu cùng với các mô tả chi tiết dữ liệu. ▪ Xây dựng: Lưu giữ dữ liệu lên các thiết bị lưu trữ. ▪ Xử lý: truy vấn, cập nhật và phát sinh báo cáo. ❖Một số hệ QTCSDL: Foxpro, Access, SQL, MySQL, Oracle, DB2 ❖Hệ CSDL = CSDL + Hệ QTCSDL 6 2013
  7. Một ví dụ về CSDL KHACHHANG VANCHUYEN MSKH TÊNKH TP TP PVC S1 An HCM HCM 01 S2 Hoà HN HN 02 S3 Bình NT NT 03 S4 Trang NT MATHANG DATTHANG MSMH TÊNMH ĐG MSKH MSMH SL P1 Táo 650 S1 P1 300 P2 Cam 500 S1 P2 200 P3 Chanh 450 S1 P3 400 S2 P1 100 S2 P3 300 S3 P2 200 S4 P2 210 7 2013
  8. ▪ Định nghĩa CSDL: chỉ định cấu trúc mỗi “bảng”, bao gồm các phần tử dữ liệu và kiểu dữ liệu tương ứng. ▪ Xây dựng CSDL: Đưa dữ liệu vào các “bảng” KHACHHANG, VANCHUYEN, MATHANG, DATHANG. ▪ Xử lý CSDL: Thực hiện những truy vấn và các phép cập nhật, chẳng hạn: “Khách hàng có tên là An đặt những mặt hàng nào”, “Tên những khách hàng đã đặt mặt hàng Cam”, “Tính thành tiền” 8 2013
  9. Vấn đề đặt ra: ▪ Có bao nhiêu bảng, tên gì? ▪ Những bảng nào có quan hệ với nhau ▪ Trong một bảng có bao nhiêu cột Mục đích là để tránh trùng lắp, dư thừa dữ liệu, dữ liệu thiếu tính nhất quán. 9 2013
  10. Các khái niệm cơ bản ❖Mô hình dữ liệu: là một hệ hình thức toán học gồm có 2 phần: ▪ Một hệ thống ký hiệu để mô tả dữ liệu. ▪ Một tập hợp các phép toán thao tác trên dữ liệu đã cho. 10 2013
  11. Các mô hình dữ liệu ▪ Mô hình thực thể kết hợp (Entity Relationship Model) ▪ Mô hình dữ liệu quan hệ (Relational Data Model) ▪ Mô hình dữ liệu mạng (Network Data Model) ▪ Mô hình dữ liệu phân cấp (Hierachical Data Model) ▪ Mô hình hướng đối tượng (Object Orient Model) 11 2013
  12. Mô hình dữ liệu thực thể-kết hợp ❖Do P.P.Chen đề xuất năm 1976 ❖Các khái niệm: ▪ Thực thể (Entity) ▪ Loại thực thể (Entity Type) ▪ Thuộc tính (Entity Attribute) ▪ Khóa (Entity Key) ▪ Mối kết hợp (Entity Relationship) ▪ Số ngôi của mối kết hợp (Degree) ▪ Thuộc tính của mối kết hợp (Attribute) ▪ Bản số (RelationShip Cardinal) 12 2013
  13. Mô hình dữ liệu quan hệ ❖Do E.F.Codd đề xuất năm 1970 ❖Có cơ sở lý thuyết vững chắc: khái niệm lý thuyết tập hợp trên các quan hệ. ❖Các khái niệm: thuộc tính (Attribute), quan hệ (Relation), lược đồ quan hệ (Relation Schema), bộ (Tuple), khóa (Key). 13 2013
  14. Các khái niệm cơ bản MHDLQH ❖Thuộc tính (Attribute) ❖Quan hệ (Relation) ❖Bộ giá trị (Tuple) ❖Lược đồ quan hệ (Relation Schema) ❖Thể hiện của quan hệ ❖Khóa (Key) ❖Phụ thuộc hàm(Functional Dependency) ❖Ràng buộc toàn vẹn (Integrity ❖Constraint) 14 2013
  15. Thuộc tính (Attribute) ❖Thuộc tính: ▪ là một tính chất riêng biệt của một đối tượng. ▪ cần được lưu trữ trong CSDL để phục vụ cho việc khai thác dữ liệu về đối tượng. ❖Ví dụ: ▪ Loại thực thể MÔN-HỌC có một số thuộc tính Mãmôn,Tên-môn, Số-Đv-Học-Trình. ▪ Loại thực thể HỌC-VIÊN có một số thuộc tính Mãkhoa,Mã-học-viên, Tên-học-viên, Ngày- sinh, Quêquán. 15 2013
  16. Thuộc tính (Attribute) ❖Các đặc trưng của thuộc tính: ▪ Tên gọi (Name) ▪ Kiểu dữ liệu (Data Type) ▪ Miền giá trị (Domain) 16 2013
  17. Thuộc tính (Attribute) ❖Tên thuộc tính ▪ Có tính chất gợi nhớ ▪ Đặt đúng quy định của hệ QTCSDL ▪ Không nên đặt quá dài ❖Nếu không cần lưu ý đến ngữ nghĩa thì tên thuộc tính thường được ký hiệu bằng các chữ cái A, B, C, D, , còn X, Y, Z, W, dùng thay cho 1 nhóm thuộc tính. 17 2013
  18. Thuộc tính (Attribute) ❖Kiểu dữ liệu (Data Type): Mỗi thuộc tính đều phải thuộc một kiểu dữ liệu nhất định. ▪ Kiểu văn bản ▪ Kiểu số ▪ Kiểu luận lý ▪ Kiểu ngày giờ 18 2013
  19. Thuộc tính (Attribute) Một số kiểu dữ liệu trong SQL Server: 19 2013
  20. Thuộc tính (Attribute) ❖Miền giá trị (Domain): ▪ Mỗi thuộc tính chỉ chọn những giá trị trong một tập hợp con của kiểu dữ liệu. ▪ Tập hợp các giá trị mà một thuộc tính A có thể nhận được gọi là miền gi trị của A ❖Ký hiệu: Dom(A), MGT(A) ❖Giá trị NULL: ▪ Trong nhiều hệ QTCSDL, người ta đưa thêm vào miền giá trị của các thuộc tính một giá trị đặc biệt gọi là giá trị rỗng (NULL) 20 2013
  21. Quan hệ (Relation) ❖Một quan hệ R có n ngôi được định nghĩa trên: ▪ tập các thuộc tính U = {A1, A2, An} ▪ và một tân từ (quy tắc để xác định mối quan hệ giữa các thuộc tính Ai) ❖Ký hiệu: R (A1, A2, An). ❖Ví dụ: ▪ KHOA (Mã-khoa, Tên-khoa), là một quan hệ 2 ngôi. ▪ Tân từ: "Mỗi khoa có một tên gọi và một mã số duy nhất để phân biệt với tất cả các khoa 21 khác của trường". 2013
  22. Bộ giá trị (Tuple) ❖Một bộ giá trị: ▪ là các thông tin của một đối tượng thuộc quan hệ. ▪ còn được gọi là mẫu tin (Record),dòng (Row) ❖Về mặt hình thức, một bộ q là: ▪ một vectơ gồm n thành phần ▪ thuộc tập hợp con của tích Đề-các miền giá trị của các thuộc tính thỏa mãn tân từ của quan hệ: q = (a1, , an) ∈ (MGT(A1) x x MGT(An)) ❖Ví dụ: ❖Bộ giá trị của quan hệ KHOA: ❖q = (111,CNTT) 22 2013
  23. Lược đồ quan hệ (Relation Schema) ❖Lược đồ quan hệ: ▪ là sự trừu tượng hóa của quan hệ ▪ ở mức độ cấu trúc của một bảng hai chiều. ❖Khi nhắc đến lược đồ quan hệ tức là đề cập đến cấu trúc tổng quát của một quan hệ ❖Khi đề cập tới quan hệ thì đó là một bảng có cấu trúc cụ thể hoặc một định nghĩa cụ thể trên một lược đồ quan hệ với các bộ giá trị của nó. 23 2013
  24. Thể hiện của quan hệ ❖Thể hiện (tình trạng) của quan hệ R ▪ ký hiệu bởi TR ▪ là tập hợp các bộ giá trị của quan hệ R vào một thời điểm. ➔ Tại những thời điểm khác nhau thì quan hệ sẽ có những thể hiện khác nhau. ❖Ví dụ: Quan hệ MÔN-HỌC 24 2013
  25. Các đặc tính của quan hệ ❖Trong một lược đồ quan hệ, có thể có nhiều thuộc tính có cùng miền. ❖Thứ tự của các thuộc tính thuộc tính không được xét đến. ❖Thứ tự của các bộ trong quan hện không được xét đến, trong quan hệ không có hai bộ giống nhau. ❖Giá trị của mỗi thuộc tính trong một bộ có thể nhận giá trị từ miền giá trị hay giá trị rỗng (null). 25 2013
  26. Khóa (Key) ❖Siêu khóa của lược đồ quan hệ Q: ▪ là tập hợp các thuộc tính có thể dùng làm cơ sở để phân biệt 2 bộ khác nhau tùy ý trong 1 quan hệ bất kỳ được định nghĩa trên lược đồ quan hệ Q. ❖1 lược đồ có ít nhất 1 siêu khóa và có thể có nhiều siêu khóa. ❖Ví dụ: ▪ SINHVIEN (MaSV, HoTen, NSinh, DC) ▪ Siêu khóa: {MaSV}, {MaSV, HoTen}, {MaSV,NSinh}, 26 2013
  27. Khóa (Key) ❖Khóa chỉ định: ▪ Trong số những siêu khóa của 1 lược đồ quan hệ Q chọn ra những Siêu khóa “nhỏ nhất” gọi là khóa chỉ định (Khóa nội). ❖1 lược đồ có ít nhất 1 khóa chỉ định và có thể có nhiều khóa chỉ định. ❖Ví dụ: ▪ SINHVIEN (MaSV, HoTen, NSinh, DC) ➔Khóa chỉ định: {MaSV} 27 2013
  28. Khóa (Key) ❖Khóa chính (Primary Key): ▪ Trong trường hợp lược đồ quan hệ Q có nhiều khóa chỉ định. ▪ Khi cài đặt trên 1 hệ QTCSDL: • user chọn 1 khóa chỉ định làm khóa chính • những khóa còn lại gọi là Khóa tương đương. ❖Chú ý: ▪ Thuộc tính có tham gia vào 1 khóa gọi là thuộc tính khóa, ngược lại – thuộc tính không khóa. ▪ Thuộc tính khóa không chứa giá trị NULL ▪ Giá trị khóa không được phép trùng lặp (ràng 28 buộc về khoá). 2013
  29. Khóa (Key) ❖ Khóa ngoại (Foreign Key): ▪ Giả sử có 2 quan hệ R, S. ▪ Một tập thuộc tính K của R được gọi là khóa ngoại của R nếu K là khóa nội (khóa chính) của S. ❖ Ví dụ: ▪ Mã-khoa trong LỚP-HỌC là khóa ngoại vì nó là khóa nội của quan hệ KHOA. ▪ Mã-lớp trong HỌC-VIÊN là khóa ngoại vì nó là khóa nội của quan hệ LỚP-HỌC ▪ TP là khoá ngoại của KHACHHANG tham chiếu đến VANCHUYEN ▪ KHACHHANG(MSKH, TÊNKH, TP) 29 2013
  30. Khóa ngoại - Chú ý: ▪ Giá trị tại cột khóa ngoại có thể lấy giá trị từ bảng mà cột đó làm khóa chính hoặc bằng giá trị trống (null). ▪ Trong 1 lược đồ quan hệ, một thuộc tính có thể vừa tham gia vào khoá chính, vừa tham gia vào khóa ngoại. ▪ Khoá ngoại có thể tham chiếu đến khóa chính của cùng một lược đồ quan hệ. Ví dụ: NHANVIEN(MaNV, HoTen, MaNguoiPhuTrach) ▪ Có thể có nhiều khóa ngoại tham chiếu đến cùng một khóa chính. 30 2013
  31. Liên kết các bảng dữ liệu ❖ Liên kết các bảng dữ liệu là một kỹ thuật trong thiết kế CSDL quan hệ. Chúng là mối liên kết giữa 2 bảng với nhau theo thiết kế cho trước để đảm bảo được mục đích lưu trữ dữ liệu cho ứng dụng. ❖ Trong Access tồn tại 2 kiểu liên kết: ▪ liên kết 1-1 ▪ liên kết 1-n (một-nhiều) 31 2013
  32. Liên kết 1-1 ❖ Liên kết 1 – 1: mỗi bản ghi của bảng này sẽ 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ụ liên kết 1-1: 32 2013
  33. Liên kết 1-1 ❖Mô tả dữ liệu 2 bảng này như sau: 33 2013
  34. Các phép toán cập nhật trên quan hệ ❖Có 3 phép cập nhật cơ bản trên quan hệ: thêm, xoá, sửa. ▪ Phép thêm (INSERT) ▪ Phép xóa (DELETE) ▪ Phép sửa (UPDATE) ❖Mỗi khi sử dụng các phép toán này, cần đảm bảo ràng các ràng buộc toàn vẹn không bị vi phạm. 34 2013
  35. Liên kết 1-n ❖ Liên kết 1-n: mỗi trường của bảng 1 sẽ có thể liên kết với một hoặc nhiều bản ghi của bảng nhiều (n). Ngược lại, mỗi bản ghi của bảng nhiều sẽ liên kết tới duy nhất 1 trường của bảng 1. ❖ Ví dụ liên kết 1-n: 35 2013
  36. Liên kết 1-n ❖ Có thể tham khảo mỗi cha có thể có nhiều con qua 2 bảng sau: 36 2013
  37. Các phép toán cập nhật trên quan hệ ❖Có 3 phép cập nhật cơ bản trên quan hệ: thêm, xoá, sửa. ▪ Phép thêm (INSERT) ▪ Phép xóa (DELETE) ▪ Phép sửa (UPDATE) ❖Mỗi khi sử dụng các phép toán này, cần đảm bảo ràng các ràng buộc toàn vẹn không bị vi phạm. 37 2013
  38. Chú ý khi cài đặt ! Các hệ QTCSDL yêu cầu người sử dụng phải khai báo: - khoá chính, buộc phải nhập dữ liệu vào và không được trùng nhau. - khóa ngoại (phải tồn tại trong bảng mà nó làm khoá chính và phải cùng miền giá trị với thuộc tính khoá chính đó) - Khóa ngoại có thể trùng tên với khóa chính nhưng kiểu dữ liệu phải giống nhau. 38 2013
  39. Ràng buộc toàn vẹn (Integrity Constraint) ❖Khái niệm ràng buộc toàn vẹn (RBTV) ▪ Các phép cập nhật trên CSDL không nên được thực hiện một cách tuỳ tiện, có thể đưa CSDL đến một tình trạng “xấu”, không còn phản ánh đúng thế giới thực mà nó đại diện. ▪ Các phép cập nhật trên CSDL phải tuân thủ theo một số qui tắc, ràng buộc nhất định. Các quy tắc, ràng buộc này được gọi là Ràng buộc toàn vẹn (Intergrity constraints) ▪ Ví dụ: Mức lương nhân viên không vượt quá mức lương trưởng phòng 39 2013
  40. Ràng buộc toàn vẹn (Integrity Constraint) ❖Xuất xứ RBTV: ▪ Các quy tắc, quy luật, luật trong quản lý ▪ Bản thân mô hình dữ liệu 40 2013
  41. Ràng buộc toàn vẹn (Integrity Constraint) ❖Các đặc trưng của RBTV ▪ Nội dung ▪ Bối cảnh ▪ Bảng tầm ảnh hưởng 41 2013
  42. Ràng buộc toàn vẹn (Integrity Constraint) ❖Nội dung: ▪ Nội dung của RBTV có thể được phát biểu bằng ngôn ngữ tự nhiên hoặc một ngôn ngữ hình thức (Phép tính quan hệ, Đại số quan hệ, mã giả, ) ▪ Ngôn ngữ tự nhiên: Dễ hiểu nhưng không chặt chẽ, logic. ▪ Ngôn ngữ hình thức: Chặt chẽ, cô đọng nhưng đôi lúc khó hiểu. ▪ Ví dụ: Đơn giá của một mặt hàng phải là số dương ▪ Điều kiện trên có thể phát biểu lại bằng ngôn ngữ hình thức như sau: 42 ▪  p MATHANG, p.ĐG2013> 0
  43. Ràng buộc toàn vẹn (Integrity Constraint) ❖Bối cảnh ▪ Bối cảnh của một RBTV là tập các quan hệ mà khi thực hiện cập nhật có khả năng làm cho RBTV đó bị vi phạm. 43 2013
  44. Ràng buộc toàn vẹn (Integrity Constraint) ❖Bảng tầm ảnh hưởng Ri Thêm Xóa Sửa Quan hệ 1 + + + Quan hệ n - - +A(*) ❖ Dấu + : Có thể gây nên vi phạm RBTV ❖ Dấu - : Không thể gây ra vi phạm RBTV ❖ (*): gây nên vi phạm RBTV khi sửa trên thuộc tính A. 44 2013
  45. Ràng buộc toàn vẹn (Integrity Constraint) ❖Phân loại RBTV: Có 2 nhóm RBTV: ▪ Nhóm RBTV trên một Lược đồ quan hệ ▪ Nhóm RBTV trên nhiều Lược đồ quan hệ 45 2013
  46. Ràng buộc toàn vẹn (Integrity Constraint) ❖RBTV miền giá trị : Ràng buộc loại này qui định các giá trị mà một thuộc tính có thể nhận. ❖Ví dụ: ▪ DOM(NAM) = {1, 2, 3, 4} ▪ DOM(XEPLOAI) = {‘GIOI’, ‘KHA’, ‘TRUNGBINH’, ‘YEU’} 46 2013
  47. Ràng buộc toàn vẹn (Integrity Constraint) ❖. RBTV liên bộ - ràng buộc về khoá: Sự tồn tại của một hoặc nhiều bộ phụ thuộc vào sự tồn tại của một hoặc nhiều bộ khác trong cùng quan hệ. ❖Ví dụ: ▪ SINHVIEN(MASV, HOTENSV, GIOITINH, NAMSINH) ▪ R1: “Hai bộ khác nhau sẽ khác nhau tại giá trị khóa” ▪  t1, t2 SINHVIEN: t1 t2 t1[MASV] t2[MASV] ▪ Bảng tầm ảnh hưởng: R1 Thêm Xóa Sửa SINHVIEN + - + MASV 47 2013
  48. Ràng buộc toàn vẹn (Integrity Constraint) ❖Chú ý: ▪ Ràng buộc về khóa (khoá chính) là một trường hợp đặc biệt và khá phổ biến của RBTV liên bộ. ▪ Ràng buộc về khóa (key constraint): 2 bộ khác nhau trong cùng một quan hệ phải có giá trị tại khoá khác nhau. 48 2013
  49. Ràng buộc toàn vẹn (Integrity Constraint) ❖ RBTV liên thuộc tính: Là ràng buộc giữa các thuộc tính trong cùng một quan hệ. ❖ Ví dụ: ▪ BIENLAI(MAKH, MALH, MAHV, SOBL, DIEM, KETQUA, XEPLOAI, TIENNOP) ▪ R2: Với mọi ghi danh, kết quả cuối khóa là “đậu” nếu điểm từ 5 trở lên, ngược lại là “không đậu” (ràng buộc giữa KETQUA và DIEM) ▪  t BIENLAI, (t[DIEM] 5  t[KETQUA] = “đậu”)  (t[DIEM] < 5  t[KETQUA] = “không đậu”) ▪ Bảng tầm ảnh hưởng: R2 Thêm Xóa Sửa BIENLAI -(*) - +DIEM, KETQUA (*) ở thời điểm thêm một bộ vào BIENLAI, giá trị bộ đó tại DIEM và KETQUA đều49 trống. 2013
  50. Ràng buộc toàn vẹn (Integrity Constraint) ❖Ví dụ: KHOAHOC(MAKH, TENKH, BD, KT) ▪ R3: Mỗi khóa học kéo dài ít nhất là 3 tháng. ▪  t KHOAHOC, t[KT] – t[BD] 90 (ngày) ▪ Bảng tầm ảnh hưởng: R3 Thêm Xóa Sửa KHOAHOC + - +KT, BD 50 2013
  51. Ràng buộc toàn vẹn (Integrity Constraint) ❖RBTV tham chiếu - ràng buộc khoá ngoại: Giá trị của một bộ tham chiếu đến khoá chính của một bảng khác thì trị khoá chính phải tồn tại trước. ❖ Ví dụ: ▪ R4: Mọi đơn đặt hàng phải là đặt những mặt hàng trong danh mục các mặt hàng của công ty. ▪  t DATHANG,  s MATHANG: s[MSMH] = t[MSMH]) ▪ (viết tắt: DATHANG[MSMH]  MATHANG[MSMH]) ▪ Bảng tầm ảnh hưởng: ▪ R4Thêm Xóa Sửa DATHANG+-+MSMHMATHANG-++MSMH R4 Thêm Xóa Sửa DATHANG + - +MSMH MATHANG - + +MSMH 51 2013
  52. Ràng buộc toàn vẹn (Integrity Constraint) ❖Chú ý: ▪ Trong 1 lược đồ quan hệ, một thuộc tính có thể vừa tham gia vào khoá chính, vừa tham gia vào khóa ngoại. ▪ Khoá ngoại có thể tham chiếu đến khóa chính của cùng một lược đồ quan hệ. 52 2013
  53. Ràng buộc toàn vẹn (Integrity Constraint) ? Xác định khoá ngoại cho các bảng trong csdl trong bài thực hành (chỉ rõ tham chiếu đến bảng nào - vẽ) ??Thêm vào bảng HANGHOA (hàng hóa) có khả năng vi phạm RBTV không? ?? Xoá 1 dòng ở bảng LOAIHH (loại hàng hóa)? ???Sửa trong bảng LOAIHH? 53 2013
  54. Ràng buộc toàn vẹn (Integrity Constraint) !!! Phải khai báo khoá ngoại (ràng buộc tham chiếu) nếu hệ QTCSDL cho phép để hệ QTCSDL tự kiểm tra. ❖Với hệ QTCSDL Access ta khai báo mối kết hợp (Relationship): 54 2013
  55. Ràng buộc toàn vẹn (Integrity Constraint) - Để tránh nhập sai, đối với các thuộc tính khóa ngoại, khi tạo cấu trúc cho Table ta khai báo Lookup: 55 2013
  56. Ràng buộc toàn vẹn (Integrity Constraint) ❖? Muốn thêm một hóa đơn bán cho một khách hàng mới (chưa có trong bảng khách hàng) phải làm sao? ❖??Hãy đề xuất thứ tự nhập cho các bảng trong bài thực hành? ❖??? Nhận xét về thứ tự nhập dữ liệu cho các bảng? 56 2013
  57. Bài tập 1. Cho biết thông tin các khách hàng ở TP HCM 2. Cho biết tên các khách hàng ở TP HCM 3. Cho biết thông tin các khách hàng không ở TP HCM 4. Hãy cho biết tên và thành phố của tất cả các khách hàng. 5. Cho biết tên và đơn giá của các mặt hàng có đơn giá lớn hơn 450 6. Hãy cho biết các thành phố có quan hệ kinh doanh (không được chứa những dòng trùng nhau) 57 2013
  58. Bài tập 8. Cho biết mã số khách hàng đặt mặt hàng có mã số là P1. 9. Cho biết mã số và tên khách hàng đặt mặt hàng có mã số là P1. 10. Cho biết mã số và tên khách hàng đặt mặt hàng có tên là Táo 11. Cho biết tên và thành phố các khách hàng đặt những mặt hàng có đơn giá >300 12. Cho biết các khách hàng vừa đặt mặt hàng P1 vừa đặt mặt hàng P2 58 2013
  59. Phần 2. Hệ QTCSDL Microsoft Access 1. Tổ chức cơ sở dữ liệu và thiết kế bảng (Table) 2. Thiết kế truy vấn (Query) 3. Thiết kế biểu mẫu nhập liệu (Form) 4. Thiết kế Báo cáo (Report). 59 2013
  60. Các thao tác cơ bản ❖ Giới thiệu Access; ❖ Cách khởi động; ❖ Tạo tệp Access mới; ❖ Mở tệp Access đã tồn tại; ❖ Thoát khỏi Access. 60 2013
  61. Cách khởi động ❖ Từ Start Screen (Windows 8) 61 2013
  62. Tạo tệp Access mới 62 2013
  63. Tạo tệp Access mới Chọn nơi lưu tập tin cơ sở dữ liệu Tên tập tin cơ sở dữ liệu 63 2013
  64. Giới thiệu ❖ Tệp Access có phần mở rộng *.MDB ❖ Các thành phần chính trên một tệp: - Tables: nơi chứa toàn bộ các bảng dữ liệu; - Queries: nơi chứa toàn bộ các truy vấn dữ liệu đã được thiết kế; - Forms: nơi chứa các mẫu giao diện phần mềm; - Reports: nơi chứa các mẫu báo cáo đã được thiết kế; - Macro: nơi chứa các Macro lệnh phục vụ dự án; - Modules: nơi chứa các khai báo, các thư viện chương trình con phục vụ dự án. 64 2013
  65. 2.1. Cấu trúc logic của một Table 2.2. Thiết kế Table – Chế độ Design view 2.3. Chế độ Datasheet 2.4. Thiết lập quan hệ giữa các Table 2.5. Nhập dữ liệu 2.6. Một số thao tác xử lý dữ liệu trên bảng 2.7. Qui trình xây dựng CSDL Access 2.8. Sao chép, xóa, đổi tên Table 65 2013
  66. Cấu trúc logic của một Table ❖ Bảng dữ liệu (Tables) là một phần quan trọng nhất của CSDL, là nơi lưu trữ dữ liệu cho ứng dụng. ❖ Một bảng dữ liệu trên Access bao gồm các thành phần: ▪ Tên bảng ▪ các trường ▪ dữ liệu ▪ trường khoá ▪ 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. 66 2013
  67. Datasheet (nhập, xem, sửa dữ liệu): Tên bảng Mỗi cột là một trường (Field) Mỗi dòng là một bản ghi (Record) Bản ghi đặc biệt cuối cùng gọi là EOF 67 2013
  68. Design view (đang thiết kế cấu trúc): Trường khóa (Primary key) Tập hợp các thuộc tính của trường dữ liệu 68 2013
  69. Tên bảng ❖ Mỗi bảng có một tên gọi. Tên bảng thường được đặt sau khi tạo xong cấu trúc của bảng. ❖ Không nên sử dụng dấu cách (Space), các ký tự đặc biệt hoặc chữ tiếng Việt có dấu trong tên bảng. 69 2013
  70. Trường dữ liệu (Field) ❖Mỗi cột dữ liệu của bảng sẽ tương ứng với một trường dữ liệu hay còn gọi là thuộc tính. ❖Mỗi trường dữ liệu có một tên gọi và tập hợp các thuộc tính miêu tả trường dữ liệu đó ví dụ như: kiểu dữ liệu, miền giá trị, định dạng, ❖Không nên sử dụng dấu cách (Space), các ký tự đặc biệt hoặc chữ tiếng Việt có dấu trong tên trường. 70 2013
  71. Kiểu dữ liệu TT Kiểu dữ liệu Độ lớn Lưu trữ 1 Number Tuỳ thuộc kiểu cụ Số: số thực, số nguyên theo thể nhiều kiểu 2 Autonumber 4 bytes Số nguyên tự động được đánh số. 3 Text tuỳ thuộc độ dài xâu Xâu ký tự 4 Yes/No 1 byte Kiểu logic 5 Date/Time 8 bytes Lưu trữ ngày, giờ 6 Currentcy Sing Lưu trữ dữ liệu kèm ký hiệu tiền tệ 7 Memo tuỳ thuộc giá trị kiểu ghi nhớ 8 Hyperlink tuỳ thuộc độ dài Lưu trữ các siêu liên kết xâu (hyperlink) 9 OLE tuỳ thuộc dữ liệu Âm thanh, hình ảnh, đồ hoạ, (Objects) 71 2013
  72. Bản ghi (Record) ❖Mỗi dòng dữ liệu của bảng được gọi là 1 bản ghi. ❖Mỗi bảng có một con trỏ bản ghi. ❖Con trỏ bản ghi đang nằm ở bản ghi nào, người dùng có thể sửa được dữ liệu bản ghi đó. ❖Đặc biệt, bản ghi trắng cuối cùng của mỗi bảng được gọi EOF. 72 2013
  73. Thiết kế Table – Chế độ Design view ❖ Bước 1: Khởi động trình thiết kế cấu trúc bảng ở chế độ Design View: Tables/New/Design View →OK Hoặc nhấn 73 2013
  74. Thiết kế Table – Chế độ Design view → Hộp thoại thiết kế cấu trúc một bảng xuất hiện: 74 2013
  75. Thiết kế Table – Chế độ Design view ❖ Bước 2: Định nghĩa các trường dữ liệu: + Filed Name: Gõ tên trường dữ liệu + Data Type: Chọn kiểu dữ liệu + Description: mô tả (có hoặc không) + Field Propperties: khai báo các thuộc tính của trường (nếu cần) • Khai báo thẻ General. • Nếu là thuộc tính khóa ngoại, khai báo thẻ Loopkup. 75 2013
  76. Thiết kế Table – Chế độ Design view Chọn kiểu dữ liệu Gõ tên trường (hoặc nhấn ký tự đầu) 76 2013
  77. Thiết kế Table – Chế độ Design view ❖ Bước 3. Thiết lập khóa chính cho bảng: ▪ Chọn các trường muốn thiết lập khoá bằng cách: dùng chuột kết hợp giữ phím Shift đánh dấu đầu dòng các trường muốn thiết lập khoá; ▪ Edit | Primary key để thiết lập thuộc tính khoá cho các trường vừa chọn. (hay nhấn nút Primary key trên thanh công cụ) ❖ Bước 4. Lưu lại cấu trúc bảng (Ctrl S) và đặt tên cho bảng ➔ OK Chú ý: Tên bảng không nên chứa dấu cách, các ký tự đặc biệt khác hoặc chữ Việt có dấu. 77 2013
  78. Khai báo Field Propperties: ❖Field size: ▪ Để thiết lập kích thước dữ liệu. Chỉ áp dụng cho các trường có kiểu dữ liệu Number và Text. ▪ Đối với các trường kiểu số, Field size cho biết trường đó nhận giá trị loại số nào. 78 2013
  79. ❖Field size: ▪ Để thiết lập kích thước dữ liệu. Chỉ áp dụng cho các trường có kiểu dữ liệu Number và Text. ▪ Đối với các trường kiểu số, Field size cho biết trường đó nhận giá trị loại số nào. ▪ Đối với các trường kiểu Text, thuộc tính này cho biết chiều dài tối đa của xâu ký tự. Ví dụ: Với trường Hoten thì Field size khoảng 30. 79 2013
  80. TT Loại số Độ lớn 1 Byte số nguyên 2 byte 2 Integer số nguyên 4 byte 3 Long Integer số nguyên 6 byte 4 Single số thực 8 byte 5 Double số thực 12 byte 6 Decimal số thực 16 byte 80 2013
  81. ❖ Format ▪ Để thiết lập định dạng dữ liệu khi hiển thị. Thuộc tính này áp dụng cho hầu hết các kiểu dữ liệu trừ kiểu: Memo, OLE, Yes/No. ▪ Đối với các trường kiểu số, Field size cho biết trường đó nhận giá trị loại số nào. ▪ Đối với các trường kiểu Text, thuộc tính này cho biết chiều dài tối đa của xâu ký tự. • Ví dụ1: Với trường Hoten thì Field size khoảng 30. • Ví dụ2: Để định dạng ký tự nhập vào trở thành chữ hoa, ta sử dụng dấu >. 81 2013
  82. ❖Input Mark ▪ Thiết lập mặt nạ nhập dữ liệu cho các trường (ràng buộc dữ liệu nhập vào). Kiểu này có thể áp dụng cho các loại trường kiểu Text, Number, Datetime, Currency. • Ví dụ1: 00: chỉ cho phép nhập 2 ký tự kiểu số. • Ví dụ2: LL00: chỉ cho phép nhập 2 ký tự kiểu chữ và 2 ký tự kiểu số. • Ví dụ 3: “KH” 00: 4 ký tự: 2 ký tự đầu là KH, 2 ký tự sau là 2 con số. 82 2013
  83. ❖Default Value ▪ Thiết lập giá trị ngầm định cho trường mỗi khi thêm mới một bản ghi. ▪ Ví dụ: • Mỗi khi thêm một bản ghi mới, ta muốn giá trị trường Số lượng tự động là 1 thì phải thiết lập thuộc tính Default Value của trường này là 1. 83 2013
  84. ❖Caption ▪ Thiết lập tiêu đề cột cho trường này khi hiển thị. Tên trường không nên chứa dấu cách và chữ Việt có dấu, nhưng Caption của các trường thì nên gõ bằng tiếng Việt có dấu sao cho dễ đọc và nhận biết. Đặc biệt giá trị thuộc tính Caption nếu có sẽ được sử dụng làm tiêu đề cho các trường tương ứng mỗi khi sử dụng công cụ Form Wizard hay Report Wizard sau này- sẽ rất tiện lợi. 84 2013
  85. ❖Validation Rule ▪ Thiết lập điều kiện kiểm tra tính đúng đắn của dữ liệu khi được nhập vào. • Ví dụ1: trường NgaySinh của học sinh phải nhập vào những ngày >= 1/1/1980 chẳng hạn. Khi đó ở thuộc tính Validation Rule của trường Ngaysinh hãy gõ vào >=#1/1/1980# • Ví dụ 2: Trường MaMH có chiều dài đúng 4 ký tự, 2 ký tự đầu là BC ta gõ: LIKE “MH??” 85 2013
  86. ❖Required ▪ Để yêu cầu phải nhập dữ liệu cho trường này (nếu thiết lập Yes) khi bắt đầu một bản ghi mới hoặc không nếu thiết lập No. 86 2013
  87. Khai báo Loopkup: ❖ Khai báo cho trường khóa ngoại (để sử dụng Combobox lấy dữ liệu từ thuộc tính khóa chính của bảng được liên kết đến) ❖ Bước 1: Mở bảng có trường cần thiết lập LOOKUP ra (bảng HOADON) ở chế độ Design View bằng cách: chọn tên bảng, nhấn nút Design; ❖ Bước 2: Kích hoạt trình LookUp Wizard bằng cách: Tại cột Data Type của trường cần thiết lập thuộc tính LOOKUP (trường khachID), chọn mục Lookup Wizard từ danh sách thả xuống: 87 2013
  88. Khai báo Loopkup: ❖ Ví dụ về thiết lập thuộc tính LOOKUP cho trường khachID của bảng HOADON sang trường khachID của bảng KHACH trong CSDL quản lý bán hàng: 88 2013
  89. Khai báo Loopkup ❖ Hộp thoại Lookup Wizard xuất hiện: Lấy dữ liệu từ bảng 89 2013
  90. Khai báo Loopkup ❖Chọn tên bảng muốn lấy dữ liệu (là bảng mà thuộc tính này làm khóa chính) 90 2013
  91. Khai báo Loopkup ❖ Giá trị những trường nào của bảng đã chọn sẽ được hiển thị trên danh sách? ❖ Lưu ý: Về nguyên tắc chỉ cần đưa trường khachID của bảng khác vào danh sách Selected Fields: là đủ, tuy nhiên nên đưa thêm trường tenkhach để thuận tiện hơn khi chọn lựa dữ liệu khi nhập sau này. 91 2013
  92. Khai báo Loopkup Ẩn cột khachID 92 2013
  93. Chế độ Datasheet - Xem table ở chế độ Datasheet: (menu View -> Datasheet view) 93 2013
  94. Chế độ Datasheet - Trở lại cửa sổ thiết kế: (menu View -> Design View) 94 2013
  95. Thiết lập quan hệ giữa các Table ❖ Bước 1: Tools | Relationship ❖ Bước 2: Đưa các bảng (Tables) tham gia thiết lập quan hệ thông qua hộp thoại Show Tables (nếu chưa thấy hộp thoại này dùng thực đơn Relationship | Show table): - Chọn bảng cần tham gia thiết lập quan hệ (thường chọn tất cả) ; - Nhấn nút Add (hay D_click) - Close 95 2013
  96. Thiết lập quan hệ giữa các Table ❖ Bước 3: Thực hiện tạo kết nối giữa từng cặp bảng theo thiết kế, cách làm như sau: ▪ Dùng chuột kéo (Drag) trường cần liên kết của bảng này (ví dụ trường hangID của bảng HANG) thả (Drop) lên trường cần liên kết đến của bảng kia (ví dụ trường hangID của bảng HANGBAN). Khi đó hộp thoại Edit Relationships xuất hiện: 96 2013
  97. ❖ Thiết lập các thuộc tính đảm bảo toàn vẹn dữ liệu (Enforce Referential Integrity): Đồng ý thiết lập các thuộc tính đảm bảo toàn vẹn dữ liệu đảm bảo toàn vẹn dữ liệu khi cập nhật dữ liệu đảm bảo toàn vẹn dữ liệu khi xoá dữ liệu 97 2013
  98. ❖ Đả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: ▪ 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 xóa dữ liệu giữa 2 bảng liên quan: ▪ 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); 98 2013
  99. ❖Hộp Relationship Type: cho biết kiểu quan hệ giữa 2 bảng đang thiết lập: Kiểu quan hệ - One – To – One: Kiểu 1-1 - One – To – Many: Kiểu 1-n (1-∞) - Indeterminate: Không xác định được kiểu liên kết 99 2013
  100. ❖ Tuỳ thuộc vào kiểu khoá của các trường tham gia liên kết mà Access tự xác định ra được kiểu liên kết giữa 2 bảng. Dưới đây là một số kiểu liên kết được Access tự động xác định: TT Bảng A Bảng B Kiểu liên kết 1 Khoá chính Khoá chính 1-1 2 Khoá chính Khoá ngoại 1-n Chú ý: - Đóng tất cả các Tables trước khi tạo quan hệ. - Phải thiết lập mối quan hệ trước khi nhập dữ liệu. - 2 trường tham gia kết nối phải cùng kiểu dữ liệu. Nếu không sẽ gặp lỗi sau đây: 10 2013 0
  101. 2.5. Nhập dữ liệu Có 2 bước để có thể nhập trực tiếp dữ liệu vào bảng: ❖ Bước 1: Mở bảng để nhập dữ liệu bằng cách: nhấn đúp chuột lên tên bảng cần nhập dữ liệu; hoặc chọn bảng cần nhập dữ liệu rồi nhấn nút Open; ❖ Bước 2: Thực hiện nhập dữ liệu vào bảng đang mở bằng bàn phím 10 2013 1
  102. Chú ý : Một số lỗi có thể xảy ra khi nhập dữ liệu ❖ Lỗi thứ 1: ❖ Lý 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: hãy 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. 10 2013 2
  103. Chú ý : Một số lỗi có thể xảy ra khi nhập dữ liệu ❖Lỗi thứ 2: ❖Lý do: Không nhập giá trị cho khoá chính. ❖Khắc phục: phải nhập đầy đủ giá trị cho khoá chính. 10 2013 3
  104. Chú ý : Một số lỗi có thể xảy ra khi nhập dữ liệu ❖ Lỗi thứ 3: ❖ Lý 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 bản ghi nào đó 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á. 10 2013 4
  105. Chú ý : Một số lỗi có thể xảy ra khi nhập dữ liệu ❖ Lỗi thứ 4: ❖ Lý do: Bản ghi vừa nhập dữ liệu đã bỏ trắng 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. 10 2013 5
  106. ❖ Lỗi thứ 5: ❖ Lý 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á). ❖ Khắc phục: Tìm và nhập cho đúng giá trị theo bảng quan hệ 1 tương ứng. Để tránh lỗi này khai báo trong thẻ loopkup để chọn. 10 2013 6
  107. a. Xoá bản ghi Bước 1: Chọn những bản ghi cần xoá. Bước 2: Edit | Delete Record hoặc nhấn nút Delete Record trên thanh công cụ hoặc nhấn phải chuột lên vùng đã chọn, tiếp theo nhấn Delete Record. 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á; - Nhấn No để huỷ lệnh xoá. Chú ý: Dữ liệu đã đồng ý xoá sẽ không thể phục hồi lại được. 10 2013 7
  108. Một số thao tác xử lý dữ liệu trên bảng Sắp xếp dữ liệu 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 : 10 2013 8
  109. 2.6. Một số thao tác xử lý dữ liệu trên bảng ❖c. Lọc dữ liệu Một ví dụ về tính hiệu quả của việc lọc dữ liệu: Sắp đến ngày Quốc tế Phụ nữ 8-3. Cơ quan quyết định thưởng mỗi chị em 100,000đ. Đã có cột thưởng trên bảng cùng danh sách tất cả cán bộ cơ quan, làm sao để có thể nhập vào giá trị cột thưởng cho chị em (không nhập cho nam giới) là nhanh nhất. 10 2013 9
  110. 2.6. Một số thao tác xử lý dữ liệu trên bảng ❖ Bước 1: Nhấn phải chuột lên trường cần lọc dữ liệu. Một menu xuất hiện: ❖ Bước 2: Thiết lập điều kiện lọc trên trường đang chọn. Có rất nhiều cách để xác định điều kiện lọc: - Nếu muốn lọc những bản ghi có cùng giá trị của bản ghi đang chọn hãy chọn mục: - Muốn lọc những bản ghi thoả mãn điều kiện nào đó, hãy gõ điều kiện lên mục: Ví dụ: >=10; <>3; Null; Nam; ❖ Muốn huỷ chế độ đặt lọc, nhấn phải chuột lên bảng dữ liệu và chọn mục: 11 2013 0
  111. 2.7. Qui trình xây dựng CSDL Access ❖ Bước 1 : Lần lượt xây dựng cấu trúc từng bảng dữ liệu trong CSDL. Với mỗi bảng dữ liệu khi khai báo cấu trúc cần giải quyết các công việc sau : - Khai báo danh sách các trường của bảng ở cột Field Name; - Chọn kiểu dữ liệu phù hợp cho các trường ở cột Data Type; - Thiết lập khoá chính cho bảng; - Thiết lập một số khác cần thiết cho các trường như : Field Size, Format, Input Mark, Requried, Validate Rule, - Đặt tên bảng 11 2013 1
  112. Qui trình xây dựng CSDL Access ❖ Bước 2 : Lần lượt thiết lập thuộc tính LOOKUP cho các trường làm khóa ngoại. ❖ Bước 3 : Thiết lập mối kết hợp giữa các bảng. ❖ Bước 4 : Thực hiện nhập dữ liệu cho các bảng nếu cần. Chú ý: Không thể nhập một giá trị vào trường khóa ngoại của bảng quan hệ nếu nó không tồn tại ở bảng nó làm khóa chính phải nhập bảng không chứa khóa ngoại trước. 11 2013 2
  113. 2.8. Sao chép, xóa, đổi tên Table ❖ Sao chép Table : ▪ Chọn Table muốn chép, Ctrl C, Ctrl V. ❖ Xóa Table : ▪ Chọn Table muốn xóa, nhấp phím Delete. ❖ Đổi tên Table : ▪ Chọn Table muốn xóa, click chuột phải →Rename. 11 2013 3
  114. Bài tập 1. Xây dựng CSDL Quản lý lương cán bộ một cơ quan có cấu trúc như sau : Yêu cầu : ❖ Thiết kế cấu trúc các bảng một cách phù hợp : kiểu dữ liệu các trường; khoá chính; thuộc tính Lookup và các thuộc tính khác; ❖ Thiết lập mối kết hợp cùng các thuộc tính đảm bảo toàn vẹn dữ liệu cho các quan hệ; ❖ Nhập dữ liệu như sau : + 4 phòng ban; + 5 loại chức vụ; + 20 hồ sơ cán bộ. 11 2013 4
  115. Bài tập 2. Xây dựng CSDL Quản lý sách một thư viện có cấu trúc như sau : Yêu cầu : ❖ Thiết kế cấu trúc các bảng một cách phù hợp : kiểu dữ liệu các trường; khoá chính; thuộc tính Lookup và các thuộc tính khác; ❖ Thiết lập mối kết hợp. ❖ Nhập dữ liệu như sau : + 5 tác giả; + 3 nhà xuất bản; + 3 danh mục sách; + 20 đầu sách. 11 2013 5
  116. Bài tập 3. Xây dựng CSDL Quản lý việc bán hàng cho một cửa hàng có cấu trúc như sau : Yêu cầu : ❖ Thiết kế cấu trúc các bảng một cách phù hợp : kiểu dữ liệu các trường; khoá chính; thuộc tính Lookup và các thuộc tính khác. ❖ Thiết lập quan hệ cùng các thuộc tính đảm bảo toàn vẹn dữ liệu cho các quan hệ. ❖ Nhập dữ liệu như sau : + 5 khách hàng; + 15 danh mục hàng hoá có bán; + lập 10 hoá đơn bán hàng; + với 25 lượt hàng hoá được bán ra. 11 2013 6
  117. Bài tập 4. Xây dựng CSDL Quản lý điểm học sinh trường phổ thông có cấu trúc như sau : Yêu cầu : ❖ Thiết kế cấu trúc các bảng một cách phù hợp: kiểu dữ liệu các trường; khoá; thuộc tính Lookup và các thuộc tính khác; - Thiết lập quan hệ. - Nhập dữ liệu mỗi bảng 10 bản ghi. 11 2013 7
  118. Bài tập 5. Xây dựng CSDL Quản lý việc nhập và bán hàng gồm các bảng sau : - NHANVIEN(MaNV, HoTenNV, GioiTinh, DienThoai, Luong) - KHACHHANG(MaKH, HoKH, TenKH, DiaChi, DienThoai) - HOADONBAN(SoHDB, NgayBan, MaKH, MaNV) - LOAIHH(MaLoaiHH, TenLoaiHH) - NHACUNGCAP(MaNhaCC, TenNhaCC) - HANGHOA(MaMH, TenMH, DVT, DonGiaBan, MaLoaiHH, MaNhaCC) - HOADONNHAP(SoHDN, NgayNhap, MaNV) - CTHDB(SoHDB, MaMH, SoLuong) - CTHDN(SoHDN, MaMH, SoLuong, DonGia) Ghi chú: - Khóa chính: gạch dưới bằng nét liền. - Khóa ngoại: gạch dưới bằng nét đứt. 11 2013 8
  119. Yêu cầu : ❖ Thiết kế cấu trúc các bảng một cách phù hợp: kiểu dữ liệu các trường; khoá chính; thuộc tính Lookup và các thuộc tính khác; ❖ Thiết lập mối kết hợp. ❖ Hãy nhập dữ liệu cho các bảng với số lượng bản ghi như sau: ▪ Nhân viên: 5 ▪ Khách hàng: 5 ▪ Loại hàng hóa: 5 ▪ Nhà cung cấp: 5 ▪ Hàng hóa: 7 ▪ Hóa đơn nhập: 10 ▪ Hóa đơn bán: 10 ▪ CTHDN, CTHDB: 20 11 2013 9
  120. Chương 3. Một số thao tác trên CSDL 3.1. Import - File/ Get External Data/ Import: chọn Database chứa đối tượng muốn Import (Table, Query, Form ) - Chọn tên đối tượng muốn Import. 3.2. Export - Chọn Table muốn Export sang một Database khác ( .mdb) - File/ Export: chọn Database đích. Đặt lại tên (nếu muốn) Export cả cấu trúc và dữ liệu Chỉ Export cấu trúc 12 2013 0
  121. 4.1. Đặt vấn đề 4.2. Khái niệm Truy vấn 4.3. Các loại Truy vấn ❖ Nhóm truy vấn xử lý dữ liệu ❖ Nhóm truy vấn hành động 12 2013 1
  122. ? Vấn Đề 12 2013 2
  123. ❖ Bài toán quản lý việc nhập và bán hàng: Crosstab Query 12 2013 3
  124.  1. Muốn biết một hoá đơn bán hàng của khách hàng nào (tên khách hàng) và do nhân viên nào bán (tên nhân viên). Select Q 12 2013 QLBH4
  125. 2. Tìm tên và địa chỉ các khách hàng mua hàng trước ngày 1/1/2004 12 Select Q 2013 QLBH5
  126. 3. Ghép Hokh và TenKh thành cột họvàtên. Select Q 12 2013 QLBH6
  127. 4. Tính tiền chi tiết cho từng hóa đơn (SoHDB, MaMH, SoLuong, DonGiaBan, ThanhTien): Select Q 12 2013 QLBH7
  128. 5. Tính thành tiền cho từng hóa đơn (nhóm dữ liệu) Group by Sum Select Q 12 2013 QLBH8
  129. 6. Thống kê khách hàng mua hàng hóa nào với số lượng bao nhiêu? To Crosstab Q 12 2013 QLBH9
  130. 7. Tạo Table từ các thông tin tìm kiếm được. Ví dụ: ? Muốn tạo Table gồm các thuộc tính KHACHMUA(SoHDB,HoTenKH,HoTenNV) 13 2013 QLBH0
  131. 8. Sửa đơn giá bán của mặt hàng Cam lên 10%. 9. Xoá tất cả các mặt hàng do nhà cung cấp Bitis cung cấp. 13 2013 QLBH1
  132. 4.1. Khái niệm ❖ Một trong những công cụ xử lý dữ liệu trực quan, hữu hiệu trên Access là Query. ❖ Có rất nhiều dạng yêu cầu xử lý dữ liệu như: trích - lọc - hiển thị dữ liệu; tổng hợp - thống kê; thêm - bớt - cập nhật dữ liệu; Vì vậy sẽ tồn tại một số loại Query tương ứng để giải quyết các yêu cầu xử lý dữ liệu trên. 13 2013 QLBH2
  133. CÁC LOẠI TRUY VẤN I. Nhóm truy vấn xử lý dữ liệu (không làm thay đổi dữ liệu trên table): ➢ Truy vấn chọn (Select Query)  Nhóm dữ liệu  Truy vấn có tham số ➢ Truy vấn chéo (Crosstab Query) II. Nhóm truy vấn hành động-Action Query(làm thay đổi dữ liệu trên Table): ➢ Truy vấn tạo bảng (Make-Table Query) ➢ Truy vấn cập nhật (Update Query) ➢ Truy vấn thêm (Append Query) ➢ Truy vấn xóa (Delete Query) 13 2013 3
  134. 4.1. Truy vấn chọn lựa (Select Query): a. Công dụng: Chọn lựa, rút trích, tổng hợp dữ liệu trên một số cột của một hay nhiều bảng theo một điều kiện nào đó (có thể có điều kiện hoặc không). Trên truy vấn chọn lựa, có thể: - Tính toán - Nhóm dữ liệu (Group) Điều kiện có thể tĩnh hoặc động. Khi điều kiện là động người ta còn gọi là truy vấn có tham số. 13 2013 4
  135. b. Các bước tạo truy vấn lựa chọn (Select Query) B1. -> Query -> New->Design View -> OK B2. Đưa các bảng (table) hoặc các truy vấn (query) liên quan đến các dữ liệu truy vấn vào cửa sổ truy vấn bằng cách đúp vào tên bảng. ( mục Table trong lưới QBE) B3. Xác định tên các cột cần xuất hiện trong kết quả truy vấn bằng cách đúp vào tên trường. (mục Field trong lưới QBE) ! Bản chất của một SELECT query là câu lệnh SQL có dạng: SELECT FROM 13 2013 5
  136. b. Các bước tạo truy vấn lựa chọn (Select Query) B4. Khai báo các thành phần của lưới QBE: - Sort: - Ascending: Xếp dữ liệu tăng dần. - Descending: Xếp dữ liệu giảm dần. - Not sorted: Không sắp xếp. - Show: -  : Cho hiện cột. - : Không cho hiện cột. Bản chất của yêu cầu sắp xếp dữ liệu thể hiện ở mệnh đề: ORDER BY [ASC] [DESC] trong câu lệnh SQL 13 2013 6
  137. b. Các bước tạo truy vấn lựa chọn (Select Query) - Criteria: - Điều kiện lọc dữ liệu (nếu có yêu cầu). Chú ý: - Điều kiện lọc đặt vào hàng Criteria và các hàng dưới. - Điều kiện hoặc giưã các cột: đặt trên những hàng khác nhau. - Điều kiện và giưã các cột: đặt trên cùng 1 hàng. - Dùng các toán tử. B5. Lưu bảng truy vấn: Ctrl + S hay File -> Save Bản chất của yêu cầu lọc dữ liệu thể hiện ở mệnh đề: WHERE trong câu lệnh SQL 13 2013 7
  138. Một số thao tác thường dùng - Xem trước kết quả truy vấn: (menu View -> Datasheet view) - Trở lại cửa sổ truy vấn: (menu View -> Design View) - Thực hiện một truy vấn: (menu Query -> Run) 13 2013 8
  139. Xem câu lệnh SQL phát sinh ❖View\SQL view 13 2013 9
  140. c. Ví dụ tạo truy vấn chọn lựa (Select Query) Tạo Query giải quyết các yêu cầu sau: 1. Muốn biết một hoá đơn bán hàng của khách hàng nào (tên khách hàng) và do nhân viên nào bán (tên nhân viên). 2. Liệt kê danh sách khách mua hàng (HọKH, TênKH, Địa chỉ, Điện thoại, Họ tên NV, Số HD bán, Ngày bán, Tên MH, Số lượng, Đơn giá), sắp xếp theo tênKH, nếu tên trùng nhau thì sắp xếp theo họ. 3. Lập danh sách nhân viên có giới tính là nữ 4. Tìm tên và địa chỉ các khách hàng có giới tính là nam mua hàng trước ngày 1/1/2004 14 2013 0
  141. Ví dụ tạo truy vấn chọn lựa (Select Query) 5.  Ghép Hokh và TenKh thành cột họvàtên. 6.  Tính tiền chi tiết cho từng hóa đơn (SoHDB, MaMH, SoLuong, DonGiaBan, ThanhTien) 14 2013 1
  142. ☺ Tạo một cột mới Tên cột mới : biểu thức Ví dụ1 : Họ và tên: [HoKH] & [TênKH] Ví dụ 2: Thành tiền : [SoLuong]*[DonGiaBan] 14 2013 2
  143. ☺ Một số toán tử được sử dụng trong biểu thức truy vấn ➢ Các toán tử so sánh: =, , >, =, =20 and <= 30 14 2013 3
  144. Một số toán tử được sử dụng trong biểu thức truy vấn ➢ Các hàm ngày, tháng, năm: Ngày = 26/10/2004 Day([ngày]) = 26 Month([ngày]) = 10 Year([ngày]) = 2004 DatePart(‘q’, [Ngày]) = 4 (quý) DatePart(‘m’, [Ngày]) =10 (tháng) DatePart(‘yyyy’, [Ngày]) = 2004 (năm) 14 2013 4
  145. Một số toán tử được sử dụng trong biểu thức truy vấn ➢ Đúng với mẫu đưa ra: Like Ví dụ: Like“40*”: tất cả những chuỗi có hai ký tự đầu là 40. Like“???C*”: tất cả những chuỗi có ký tự thứ 4 là C. ➢ Các toán tử logic: and, or, not ➢ Các phép toán số học: +, -, *, /,^(lũythừa), Mod 14 2013 5
  146. Một số toán tử được sử dụng trong biểu thức truy vấn ➢ Tên trường đặt giữa hai dấu ngoặc vuông: [tên trường] Ví dụ: [MaKH] ➢ Dữ liệu kiểu ngày đặt giữa hai dấu # và #: #25/09/75# 14 2013 6
  147. Một số toán tử được sử dụng trong biểu thức truy vấn ➢Nối hai chuỗi ký tự: & Ví dụ: Nối trường HọKH và trường TênKH thành trường HọTenKH HoTenKH = [HoKH] & [TenKH] 14 2013 7
  148. Một số toán tử được sử dụng trong biểu thức truy vấn ➢ Câu lệnh điều kiện: iif(điềukiện, kếtquảcủađiềukiệnđúng, kếtquảcủađiềukiệnsai) Vd1: iif([GioiTinh]=Yes, “NU”, “NAM”) Vd2: iif([DonGiaBan])>100000, [DonGiaBan]*1.2, [DonGiaBan]) 14 2013 8
  149. 4.2. Nhóm dữ liệu (Group) 14 2013 9
  150. Kiểm tra bài cũ ? Tính tiền chi tiết cho từng hóa đơn (SoHDB, MaMH, SoLuong, DonGiaBan, ThanhTien), sắp xếp theo số hóa đơn. 15 2013 0
  151. ❖Bài toán quản lý việc nhập và bán hàng: 15 2013 1
  152. Hãy tính tiền chi tiết cho từng hóa đơn (SoHDB, MaMH, SoLuong, DonGiaBan, ThanhTien): QLBH 15 2013 2
  153. ? Tính tổng số tiền cho từng hóa đơn ➔ Nhóm dữ liệu 15 2013 3
  154. 4.2. Nhóm dữ liệu (Group) 15 2013 4
  155. Nhóm dữ liệu (Group): - Tính toán dữ liệu theo từng nhóm có tính chất tổng cộng, thống kê tổng hợp số liệu màa. Ýkhông nghĩa-Cáchquan thựctâm hiệnđến chi tiết số liệu bên trong. - Cách thực hiện: - View→Totals để chèn thêm dòng Total vào vùng lưới QBE. - Dùng các hàm tính toán ở dòng Total để thực hiện các phép tính cho các cột trong truy vấn. 15 2013 5
  156. Hàm Ý nghĩa Group by Nhóm dữ liệu trên cột này Avg Tính trung bình cho cột này (số) Sum Tính tổng Count Đếm tổng số Min Tìm giá trị nhỏ nhất Max Tìm giá trị lớn nhất First Tìm giá trị đầu tiên Last Tìm giá trị cuối cùng Expression Biểu thức tính toán từ các cột dữ liệu khác trong bảng Where Điều kiện lọc dữ liệu cho truy vấn 15 2013 6
  157. ? Tính tổng số tiền cho từng hóa đơn Group by Sum QLBH 15 2013 7
  158. Ví dụ ❖ Vd1: Tính thành tiền cho từng hóa đơn (SoHD, ThanhTien), sắp xếp theo số hóa đơn. ❖ Vd2: Hãy liệt kê toàn bộ khách hàng và tổng số hoá đơn của mỗi khách hàng (MãKH, Tổng số HD), sắp xếp theo mã khách hàng. ❖??? Nếu chỉ liệt kê (TênKH, Tổng số HD) thì điều gì xảy ra ? ❖ Vd3: Hãy liệt kê toàn bộ khách hàng và tổng số hoá đơn của mỗi khách hàng (TênKH, Tổng số HD), sắp xếp theo tên khách hàng. 15 2013 8
  159. Ví dụ ❖ Vd4: Liệt kê mỗi khách hàng trong từng quí của năm 2004 đã mua bao nhiêu hàng hóa. ❖ Vd5: Liệt kê mỗi khách hàng nếu phân theo từng loại hàng hóa thì đã mua bao nhiêu hàng hóa trước ngày 1/1/2002. Bài tập 15 2013 9
  160. 4.3. Tham số trong truy vấn 16 Query có tham số 2013 0
  161. a. Tham số trong truy vấn ❖Thực hiện các truy vấn theo một điều kiện “động” nào đó. (do người dùng nhập) ❖Ví dụ: Hiển thị các thông tin của nhân viên với mã nhân viên nhập vào từ bàn phím. ▪ Hiển thị các thông tin của nhân viên có mã số là 05. (điều kiện “tĩnh”) 16 2013 1
  162. b. Cách tạo tham số trong truy vấn ❖ Nhập dòng thông báo nhắc nhập trong hai dấu ngoặc vuông [ và ] vào dòng điều kiện (Criteria) tại cột ta muốn lọc. ❖ Có thể dùng các toán tử, nhập nhiều tham số cho một hoặc nhiều cột. (như nhập điều kiện lọc tĩnh) Vd1: Hiển thị các thông tin của nhân viên với mã nhân viên nhập vào từ bàn phím. Vd2: Lập danh sách các khách hàng mua hàng trong khoảng thời gian nào đó do người dùng nhập vào. 16 Query có tham số 2013 2
  163. 4.4. Tạo Truy vấn chéo (Crosstab Query) 16 2013 3
  164. a. Truy vấn chéo (Crosstab Query): ❖Sử dụng dạng truy vấn này khi muốn thống kê, tổng hợp các dữ liệu theo dạng nằm ngang dù các dữ liệu được lưu trong bảng dưới dạng từng dòng: 16 2013 4
  165. a. Truy vấn chéo (Crosstab Query): Ví dụ 1: Thống kê khách hàng mua hàng hóa nào với số lượng bao nhiêu? Column heading Row heading Value 16 2013 QLBH5
  166. b. Cách tạo truy vấn chéo: ❖ B1: New/Design view và chọn các Table chứa dữ liệu nguồn ❖ B2: Query/Crosstab Query: ▪ Khai báo các dòng: như Select Query ▪ Crosstab: • Row heading: cột này làm giá trị trên hàng. • Column heading: cột này làm giá trị trên cột • Value: cột này làm giá trị cho bảng • No shown: không cho hiện cột này. Ví dụ 1: Thống kê khách hàng mua hàng hóa nào với số lượng bao nhiêu? 16 2013 6
  167. Lưu ý: Có thể có nhiều cột làm Row heading, nhưng chỉ một cột duy nhất làm Column heading, một cột duy nhất làm Value. Ví dụ: Bản chất của Crosstab query thể hiện ở câu lệnh SQL: TRANSFORM SELECT FROM GROUP BY PIVOT 16 2013 7
  168. c. Truy vấn chéo – Ví dụ Có thể có nhiều cột làm Row heading, nhưng chỉ một cột duy nhất làm Column heading, một cột duy nhất làm Value. Ví dụ: 16 2013 8
  169. 4.5. Các loại truy vấn hành động (Action Query) 16 2013 9
  170. 4.5.1. Truy vấn tạo bảng (Make-Table Query) ❖ Dùng Make-Table Query để: ▪ chép kết quả truy vấn của loại Select Query ra một Table mới. ▪ chép kết quả truy vấn của loại Crosstab Query ra một Table mới nhưng dưới dạng Select Query (Group). Chú ý: Bảng mới tạo ra không có khóa. Bản chất của Crosstab query thể hiện ở câu lệnh SQL: SELECT INTO FROM 17 2013 0
  171. ❖ Các bước tạo truy vấn tạo bảng: (Make-Table Query): ▪ B1: Tạo như Select Query. ▪ B2: Query → Make-Table Query: 1. Gõ vào tên bảng mới sẽ được tạo 2. Đặt bảng mới này trong tập tin cơ sở dữ liệu hiện hành 3. Xác định xong 2. Đặt bảng mới này bên trong một tập tin cơ sở dữ liệu khác 17 Chọn Query→Run để thực 2013hiện tạo table mới. 1
  172. 4.5.2. Tạo truy vấn xoá (Delete Query) ❖Dùng Delete Query để: ▪ Xóa các dòng dữ liệu thoả điều kiện nào đó trong một hay nhiều bảng. Cẩn thận: không thể phục hồi sau khi xoá. Bản chất của Delete query thể hiện ở câu lệnh SQL: DELETE FROM [WHERE] 17 2013 2
  173. ❖Các bước tạo truy vấn xoá bảng: B1. -> Query -> New->Design View -> OK B2. Chọn bảng (table) chứa dữ liệu muốn xóa. B3. Query → Delete Query: xuất hiện dòng Delete - Xoá các bản ghi: drag dấu * từ bảng vào lưới: từ Form xuất hiện ở hàng Delete. - Xoá có điều kiện: Double Click vào tên cột tham gia vào điều kiện: từ Where sẽ xuất hiện trên hàng Delete. Khai báo điều kiện như trong Select Query. 17 Chọn Query→Run để thực hiện2013 xoá các bản ghi. 3
  174. 4.5.3. Tạo truy vấn thêm (Append Query) ❖ Thêm dữ liệu từ bảng này vào bảng khác. 17 2013 4
  175. Các bước tạo truy vấn thêm: (Append Query): B1: Tạo như Select Query. B2: Query → Append Query: 1. Gõ tên bảng muốn thêm dữ liệu vào 2. Nếu bảng muốn thêm dữ liệu vào trong tập tin cơ sở dữ liệu hiện hành 3. Xác định xong 2. Nếu bảng muốn thêm dữ liệu vào trong tập tin cơ sở dữ liệu khác 17 Chọn Query→Run để thực2013 hiện thêm dữ liệu. 5
  176. 4.5.4. Tạo truy vấn sửa (Update Query) ❖ Các bước tạo truy vấn sửa: ▪ B1: Tạo như Select Query. ▪ B2: Query→Update Query: Xuất hiện dòng Update To ▪ Trong ô Update To của các thuộc tính muốn cập nhật: điền vào giá trị hay biểu thức dùng để thay đổi nội dung. ▪ Chọn Query→Run để thực hiện việc sửa. Bản chất của Update query thể hiện ở câu lệnh SQL: UPDATE SET [WHERE] 17 2013 6
  177. BÀI TẬP Bài 1. Trên CSDL Quản lý lương cán bộ, thực hiện các truy vấn sau: 1. Hãy tính và in ra bảng lương của cơ quan bao gồm các thông tin: Hoten, ngaysinh, tenchucvu, tenphongban, luongchinh, phucapcv, dangphi, congdoanphi, thuclinh. Trong đó: Luongchinh = hesoluong * 730 000 Dangphi = 50,000 với những ai là Đảng viên Congdoanphi = 1%Luongchinh với những ai đã vào công đoàn 2. Hãy đưa ra danh sách các cán bộ là Đảng viên mà chưa vào công Đoàn. 3. Hãy lọc ra danh sách cán bộ của một phòng ban nào đó, tên phòng ban được nhập từ bàn phím khi query được kích hoạt. 17 2013 7
  178. 4. Hãy lọc ra danh sách cán bộ là Đảng viên và có thực lĩnh lớn hơn một số nào đó- được nhập từ bàn phím khi query được kích hoạt. 5. Hãy lọc ra danh sách cán bộ mà năm sinh rơi vào trong một khoảng năm nào đó được nhập vào từ bàn phím. Ví dụ: khi kích hoạt query, Access yêu cầu nhập vào khoảng năm sinh từ năm nào, đến năm nào. Khi đó query sẽ lọc ra danh sách các cán bộ thoả mãn điều kiện đó. 6. Lọc ra danh sách cán bộ có tên được nhập vào từ bàn phím khi kích hoạt query. Ví dụ: khi query kích hoạt sẽ hỏi: Gõ vào tên cần xem? Sau khi gõ vào một tên (có thể cả họ hoặc cả họ và tên), sẽ lọc ra danh sách cán bộ thoả mãn điều kiện. 17 2013 8
  179. 7. Lọc ra danh sách cán bộ đến tuổi nghỉ hưu, biết rằng điều kiện nghỉ hưu xác định như sau: - Là Nam giới, tuổi >=60 - Là Nữ giới, tuổi >=55 8. Hãy đưa ra bảng tổng hợp số cán bộ đã vào Đảng hay chưa vào Đảng theo giới tính như sau: 9. Đưa ra bảng tổng hợp về chức vụ theo phòng ban như sau: 17 2013 9
  180. 10. Hãy đưa ra bảng tổng hợp tổng số cán bộ theo từng loại chức vụ của các phòng ban như sau: 11. Đưa ra bảng tổng hợp lương theo từng phòng ban như sau: 18 2013 0
  181. Bài 3. Trên CSDL Quản lý nhập và bán hàng, thực hiện các truy vấn sau: Câu 1 : 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 hàng hóa có trong cửa hàng (Mã MH, Tên MH, DVT, Tên loại HH). 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ừ 1/1/2003 đến ngày 1/1/2004 (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 5 năm 2003 (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 1/1/2004, 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 25/02/2003. 8. 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, Tên MH, Số lượng, Đơn giá, Thành tiền, Mã KH, Họ Tên KH, Địa chỉ, Điện thoại, Họ tên NV). 9. Liệt kê danh sách các hóa đơn đã nhập trong cửa hàng ( Số HD nhập, Ngày nhập, Tên MH, Số lượng, Đơn giá, Thành tiền, Tên nhà cung cấp, Họ tên NV), sắp xếp theo ngày nhập hàng. 10. Liệt kê danh sách khách hàng có ký tự đầu của tên là T. 18 2013 1
  182. Câu 2. Truy vấn nhóm (Group by) 1. Hãy liệt kê toàn bộ mã khách hàng, tên khách hàng và tổng số hoá đơn của mỗi khách hàng. 2. Liệt kê tên loại hàng hóa, giá trung bình của một hàng hóa, giá cao nhất, giá thấp nhất khi bán ra. 3. Như câu 2 nhưng chỉ đối với loại hàng hóa được cung cấp bởi nhà cung cấp có tên Ngọc Thanh. 4. Liệt kê mỗi khách hàng nếu phân theo từng loại hàng hóa thì đã mua bao nhiêu mặt hàng. 5. Như câu 4 nhưng chỉ quan tâm đến khách hàng có tên là Trang. 6. Thống kê mỗi khách hàng có bao nhiêu hóa đơn trước ngày 1/1/2004. 7. Lập danh sách các khách hàng đã mua các hàng hóa nào, số lượng bao nhiêu trong khoảng thời gian từ 7/5/2003 đến 26/11/2003. 8. Tính tổng số tiền bán hàng theo từng nhóm hàng hóa. 9. Tính số tiền bán hàng của từng loại hàng hóa trong 6 tháng đầu năm 2003. 10. Tính số tiền bán hàng của từng hàng hóa trong 6 tháng đầu năm 2003. 11. Thống kê số tiền bán hàng theo tháng, theo quí, theo năm (tạo từng query). 12. Hiển thị thông tin 2 khách hàng có số tiền mua hàng lớn nhất. 18 2013 2
  183. Câu 3 : Truy vấn có tham số (Parameter query) 1. 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. 2. 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. 3. 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, Tên KH, Địa chỉ, Điện thoại). 4. Lập danh sách các khách hàng đã mua các hàng hóa nào, 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). 5. Liệt kê những nhân viên không tham gia bán hàng trong thời gian qua. 18 2013 3
  184. Câu 4 : Truy vấn chéo ( Crosstab query) 1. Thống kê các khách hàng đã mua các hàng hóa nào với số lượng bao nhiêu. 2. Tính số tiền bán hàng cho mỗi khách hàng trong từng quí năm 2002. 3. Tính số tiền bán hàng của khách hàng có tên là “Trang” trong từng quí năm 2003. Câu 5 : Truy vấn hành động (Action query) 1. 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à “02”. 2. Xóa các bản ghi của bảng HANGHOA do nhà cung cấp có mã số là “02” cung cấp. 3. 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 1. 4. Giảm giá 10% các mặt hàng đã bán do nhà cung cấp có mã số là “03” cung cấp. 18 2013 4
  185. ❖ Khái niệm ❖ Tạo Form bằng Wizard ❖ Xem kết quả một Form ❖ Thiết kế Form ❖ Bài tập 18 2013 5
  186. Khái niệm ❖ Khi sử dụng một ứng dụng, đa phần công việc của người dùng làm trên các hộp thoại (Dialog), cửa sổ (Windows). Cả 2 thành phần này trong lập trình đều được gọi là Form. ❖ Form có thể hiển thị, tra cứu, cập nhật và điều khiển dữ liệu trong CSDL. 18 2013 6
  187. 5.1. Tạo Form bằng Wizard ❖ Form wizard là công cụ trên Access giúp người dùng nhanh chóng và dễ dàng tạo ra một Form dùng làm giao diện nhập dữ liệu cho các bảng trên CSDL. ❖ Dưới đây trình bày các bước để tạo một form làm giao diện nhập dữ liệu cho bảng CANBO trong CSDL Quản lý lương cán bộ. (bạn phải chắc chắn đã tạo hoàn chỉnh cấu trúc CSDL trên): 18 2013 7
  188. 5.1. Tạo Form bằng Wizard ❖ Bước 1: Kích hoạt trình Form Wizard: - Forms/New/Form Wizard → OK - Hoặc D-Click Creat Form by using Form wizard ❖ Bước 2: Chọn các thông tin cần đưa lên form. - chọn bảng nào - chọn những trường nào. 18 2013 8
  189. 5.1. Tạo Form bằng Wizard ❖ Bước 3: Chọn bố cục (Layout) cho form. ▪ Có 4 kiểu bố cục có thể thiết lập được cho form là: Columnar; Tabular; Datasheet và Justified. Hãy lần lượt nhấn lên từng kiểu bố cục (hình dưới) và xem kết quả minh hoạ (Preview) ở hộp chữ nhật bên trái hộp thoại để quyết định nên chọn loại nào: 18 2013 9
  190. 5.1. Tạo Form bằng Wizard ❖ Bước 4: Chọnkiểu dáng (Style) cho form. Có một danh sách các kiểu dáng để chọn. Hãy thử từng kiểu dáng và chọn cho form một phong cách phù hợp. ❖ Bước 5. ▪ Đặt tên cho Form → Finish 19 2013 0
  191. 5.2. Xem kết quả một Form ❖ Chọn Form, nhấn nút Open. Sử dụng Form để cập nhật dữ liệu: chuyển về bản ghi đầu tiên Đang ở bảng ghi số 1 Có tất cả 11 bản ghi chuyển đến bản ghi kề trước Thanh định chuyển đến bản ghi kề sau hướng (Navigato r bar) chuyển đến bản ghi cuối cùng Thêm 1 bản ghi mới 19 2013 1
  192. 5.3. Thiết kế Form 5.3.1. Thiết kế Form nhập dữ liệu đơn giản VD: Tạo form dùng làm mẫu nhập dữ liệu cho bảng CANBO. Bước 1: Form/New/Design View. 19 2013 2
  193. 5.3.1. Thiết kế Form nhập dữ liệu đơn giản Có 3 thành phần quan trọng: (1) Cửa sổ Form – nơi sẽ thiết kế và xây dựng các thông tin cần thiết theo yêu cầu bài toán. Cấu trúc form gồm 3 phần: ❖ Form Header - phần tiêu đề đầu form; ❖ Form Footer - phần tiêu đề cuối; ❖ Detail - phần thân form ❖ Toàn bộ các thông tin trên form đều được chứa trong các đối tượng điều khiển (Control), các đối tượng này được lấy từ thanh công cụ Toolbox. 19 2013 3
  194. 5.3.1. Thiết kế Form nhập dữ liệu đơn giản (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 bài toán. Ví dụ: - muốn tạo ô nhập Họ tên trên form: dùng đối tượng Textbox, - - - muốn đưa một chú thích (nhãn hiển thị): dùng Label, - muốn tạo một nút lệnh: dùng CommandButton, ❖ Mỗi đối tượng sẽ có tập hợp các thuộc tính (Properties) và tập các sự kiện (Events). ▪ Thuộc tính: mô tả tính chất cho đối tượng đó, ví dụ như: màu sắc, kích thước, tính chất dữ liệu, ▪ Sự kiện: gắn các mã lệnh VBA hoặc gắn các Macro lệnh để xử lý những công việc nào đó. 19 2013 4
  195. 5.3.1. Thiết kế Form nhập dữ liệu đơn giản ❖ (3) Cửa cổ Properties – nơi có thể thiết lập các thuộc tính (properties) cho form cũng như các đối tượng trên form; Bước 2: Thiết lập nguồn dữ liệu cho form ở thuộc tính Record Source. ❖ Chọn tên đối tượng Form ở hộp chọn Object trên thanh công cụ Formatting. ❖ Hoặc D_click lên ô vuông- vị trí giao giữa 2 thước kẻ ngang- dọc của form đang thiết kế. Làm sao khi tiêu đề cửa sổ Properties là Form. ❖ Record Source: chọn tên bảng CANBO. 19 2013 5
  196. 5.3.1. Thiết kế Form nhập dữ liệu đơn giản ❖ Bước 3: Mở cửa sổ Field List. ❖ Cửa sổ Field List có chứa danh sách các trường trên CSDL có trong nguồn dữ liệu của Form. ❖ Nếu chưa thấy cửa sổ này xuất hiện, hãy thực hiện hiển thị nó bằng cách mở thực đơn View | Field List hoặc nhấn nút Field List trên thanh công cụ chuẩn. 19 2013 6
  197. 5.3.1. Thiết kế Form nhập dữ liệu đơn giản ❖ Bước 4: Đưa những trường cần nhập dữ liệu từ cửa sổ Field List lên Form đang thiết kế bằng cách: ▪ Rê từng trường muốn thiết kế lên form từ cửa sổ Field List vào phần Detail của form. ▪ Mỗi khi kéo một trường từ Field List lên form, Access sẽ tự động tạo một đối tượng gắn kết tới trường dữ liệu tương ứng, đối tượng này có thể là Textbox, Combobox hay đối tượng khác tuỳ thuộc vào kiểu dữ liệu của trường tương ứng; và đối tượng Label đi kèm nhằm tạo nhãn chú thích cho trường dữ liệu. 19 2013 7
  198. 5.3.2. Tinh chỉnh cấu trúc Form a. Sửa thuộc tính ❖ Mở form để sửa ở chế độ thiết kế (Design view) bằng cách: chọn form, nhấn nút Design; hoặc nhấn nút Design trên thanh công cụ. ❖ Tuỳ từng mục đích, đối tượng làm việc cụ thể mà có các cách làm việc khác nhau. Sau đây là một số ví dụ: ❖ Sửa nhãn (Label): Sửa thuộc tính Caption hoặc có thể bấm chuột trực tiếp lên nhãn để sửa giá trị. 19 2013 8
  199. 5.3.2. Tinh chỉnh cấu trúc Form ❖ Thay đổi kích thước đối tượng (Resize): ❖ Khi trỏ chuột (chọn) lên đối tượng cần thay đổi, xẽ xuất hiện 6 điểm trên đối tượng: Khi đó có thể đặt chuột lên từng điểm (khi nào con trỏ chuột chuyển thành mũi tên 2 đầu) để điều chỉnh độ lớn bằng cách rê chuột. ❖ Di chuyển đối tượng: rê đến vị trí mới. ❖ Thay đổi Font chữ: Font Name. ❖ Thay đổi màu nền: BackColor. ❖ Thay đổi màu chữ: ForeColor ❖ Thuộc tính Format và InputMark để định dạng dữ liệu khi hiển thị cũng như mặt nạ khi nhập dữ liệu. 19 2013 9
  200. 5.3.2. Tinh chỉnh cấu trúc Form Sau khi tinh chỉnh, ta có form sau: 20 2013 0
  201. 5.3.2. Tinh chỉnh cấu trúc Form b. Sử dụng Command Button Wizard: tạo một số loại nút lệnh mà không cần biết đến lập trình. ❖ Ví dụ: Tạo nút ❖ Trước khi sử dụng tính năng này, phải đảm bảo nút Control Wizard trên thanh công cụ ToolBox đã được nhấn chìm xuống: 20 2013 1
  202. 5.3.2. Tinh chỉnh cấu trúc Form ❖ Bước 1: Dùng chuột đưa đối tượng Command Button từ thanh công cụ lên vị trí thích hợp trên Form, hộp thoại sau xuất hiện: ❖ Bước 2: Chọn hành động cần làm cho nút lệnh. Quan sát hộp thoại trên có 2 danh sách: - 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. 20 2013 2
  203. Danh sách lệnh TT Nhóm/Lệnh Ý nghĩa 1 Record Navigation Nhóm định hướng bản ghi 1. - Goto First Record - Chuyển về bản ghi đầu 1 - Goto Last Record - Chuyển đến bản ghi cuối cùng 1. - Goto Next Record - Chuyển bản ghi kề sau 2 - Goto Previous - Chuyển bản ghi kề trước 1. Record 3 1. 4 2 Record Operations Các xử lý với bản ghi 2. - AddNew Record - Thêm bản ghi mới 1 - Delete Record - Xoá bản ghi hiện tại 2. - Update Record - Cập nhật bản ghi hiện tại 2 - Undo Record - Phục hồi thay đổi dữ liệu bản20 2. 2013 ghi 3 3
  204. 3 Form Operations Các xử lý với Form 3.1 - Close Form - Đóng form 3.2 - Open Form - Mở một form khác 4 Report Operations Các xử lý với Report 4.1 - Preview report - Xem trước nội dung (Preview) 4.2 - Print report report 4.3 - Send report to file - In report - Xuất report ra một tệp tin ngoài 5 Applications Xử lý ứng dụng 5.1 - Quit Application - Thoát khỏi Access 5.2 - Run Application - Chạy một ứng dụng nào đó (tệp .exe) 6 Miscellaneos Một số thao tác khác 6.1 - Print table - In nội dung một bảng 6.2 - Run macro - Thi hành một Macro 6.3 - Run query - Thi hành một query 20 2013 4
  205. 5.3.2. Tinh chỉnh cấu trúc Form ▪ VD: Với yêu cầu đóng form, phải chọn: • Categories = Form Operations • Actions = Close Form. Chọn xong nhấn Next. ❖ Bước 3: Chọn hiển thị cho nút lệnh trên hộp thoại dưới: Hiển thị bằng chữ Hiển thị bằng hình Chọn xong nhấn Finish. 20 2013 5
  206. 5.3.3. Tạo Sub-Form ❖ Kỹ thuật thiết kế form đã trình bày ở các phần trên gọi là Single-form. ❖ Sub-form là việc 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 mẹ (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. ❖ Sub-form có thể được sử dụng trong các loại form nhập dữ liệu, hoặc sử dụng để hiển thị dữ liệu. ❖ Dưới đây minh hoạ 2 ví dụ tạo form có sử dụng kỹ thuật này. 20 2013 6
  207. VD: Sử dụng Sub-form trong form nhập dữ liệu: ❖ Bài toán: Thiết kế form nhập thông tin hoá đơn bán hàng như sau: Form chính: nhập thông tin về hóa đơn Form phụ: nhập thông tin về hàng bán cho hóa đơn tương ứng trong form chính ▪ Phải kết nối Form chính với Form phụ thông qua trường hoadonID ▪ Cách làm như sau (yêu cầu thực hiện theo đúng thứ tự công việc các bước): 20 2013 7
  208. Bước 1: Tạo form phụ - Tạo form mới ở chế độ Design View; - Vì form phụ sẽ hiển thị dữ liệu dạng bảng nên phải thiết lập thuộc tính Default View cho form phụ là Datasheet; - Thiết lập nguồn dữ liệu làm việc cho form phụ ở thuộc tính Record Source bằng cách nhấn nút (hình dưới) Form chính: nhập thông tin về hóa đơn 20 2013 8
  209. Bước 1: Tạo form phụ - Màn hình thiết kế Query xuất hiện. Hãy thiết lập Query này như sau: - Đóng màn hình thiết kế Query. - Sử dụng cửa sổ Field list để đưa các trường cần thiết lên vùng Detail của form bao gồm: hangID, donvi, dongia, soluong, thanhtien; - Ghi lại form với một tên gọi (ví dụ: frmHangban) và đóng lại, chuẩn bị tạo form chính. 20 2013 9
  210. Bước 2: Tạo form chính - Tạo Form mới ở chế độ Design View; - Thiết lập nguồn dữ liệu làm việc cho form chính ở thuộc tính Record Source bằng cách nhấn nút (hình bên) - Một màn hình thiết kế query xuất hiện. Hãy thiết lập query này như sau: - Đóng màn hình thiết kế query. 21 2013 0
  211. Bước 2: Tạo form chính - Sử dụng cửa sổ Field List để đưa các trường cần thiết lên vùng Detail của form bao gồm: hoadonID, khacID, ngayban, diachi, email; - Sử dụng đối tượng Subform\Subreport trên thanh công cụ ToolBox để đưa form phụ lên form chính. Sau khi đưa một đối tượng Subform\Subreport lên form chính, hộp thoại sau xuất hiện. Chọn tên form phụ cần đưa vào (Có thể đưa form phụ lên form chính bằng cách rê tên form con thả lên form chính) 21 2013 1
  212. Form kết quả 21 2013 2
  213. Cách khác: ❖ Khi sử dụng Form wizard, bạn cũng rất rễ dàng khi tạo form theo yêu cầu trên. Cách làm ở đây là kết hợp giữa form wizard với form Design view. Chúng tôi trình bày thêm cách này để các bạn tham khảo. ❖ Bước 1: Tạo form wizard lấy những dữ liệu sau: ▪ Bảng HOADON lấy các trường: hoadonID, khachID, ngayban; ▪ Bảng KHACH lấy các trường: diachi, email; ▪ Bảng HANGBAN lấy các trường: hangID, soluong; ▪ Bảng HANG lấy các trường: donvi, dongia. ❖ Sau bước này Access sẽ tạo được form theo yêu cầu có dạng: 21 2013 3
  214. Cách khác: ❖ Form này gần đáp ứng yêu cầu đầu bài (chỉ thiếu cột Thanhtien trong form con). ❖ Bước 2: Sửa form con để đáp ứng bài toán: - Mở form con ở chế độ Design View (thông thường tên form con này Access sẽ đặt hangban subform); - Thêm một Textbox lên vùng Detail của form con và thiết lập thuộc tính Control Source cho text box này như sau: (= [dongia]*[soluong]): 21 2013 4
  215. Sử dụng Sub-form trong form lọc dữ liệu ❖ Bài toán: Thiết kế form lọc ra danh sách cán bộ một phòng ban nào đó như sau: 2 1 Với yêu cầu này, phải tạo một form phụ cho phép hiển thị các thông tin về danh sách cán bộ cần in ra (1); ❖ Phải tạo một form chính cho phép nhập các tham số cần lọc (2); ❖ Phải thiết lập tham số cho form phụ sao cho mỗi khi chọn một phòng ban trên form chính, danh sách cán bộ ở phòng ban đó sẽ tự động hiển thị ra form phụ. 21 2013 5
  216. Cách tạo Sub-form trong form lọc dữ liệu ❖ Bước 1: Tạo form phụ - Tạo mới form ở chế độ Design View; - Vì form phụ sẽ hiển thị dữ liệu dạng bảng nên phải thiết lập thuộc tính Default View cho form con là Datasheet; - Thiết lập nguồn dữ liệu làm việc cho form con ở tuộc tính Record Source bằng cách nhấn nút (hình dưới) 21 2013 6
  217. Cách tạo Sub-form trong form lọc dữ liệu ❖ Một màn hình thiết kế query xuất hiện. Hãy thiết lập query này như sau: Gõ tham số cho form con tại trường phongbanID ❖ Sử dụng cửa sổ Field List để đưa các trường cần thiết lên vùng Detail của form bao gồm: hoten, gioitinh, ngaysinh, tenchucvu; ❖ Ghi lại form với một tên gọi (ví dụ: frmDscb_subform) và đóng lại, chuẩn bị tạo form chính. 21 2013 7
  218. Cách tạo Sub-form trong form lọc dữ liệu ❖ Bước 2: Tạo form chính - Tạo mới mới form ở chế độ Design View; - Tạo hộp Combo box chứa danh sách các phòng ban có thể chọn trên form chính bằng cách: Dùng chuột kéo đối tượng Combobox từ thanh công cụ ToolBox thả lên form chính, hộp thoại sau xuất hiện: Chọn mục này để lấy dữ liệu từ Table 21 2013 8
  219. Chọn tên Table cần lấy dữ liệu Chọn tên trường muốn hiển thị 21 2013 9
  220. Ẩn thuộc tính khóa ❖ Thiết lập thuộc tính Name cho Combo box trùng tên với tham số đã thiết lập ở form phụ là cboPhongban. 22 2013 0
  221. ❖ Sử dụng đối tượng Subform\Subreport trên thanh công cụ ToolBox để đưa form con lên form mẹ. Sau khi đưa một đối tượng Subform\Subreport lên form, một hộp thoại xuất hiện: Chọn tên form phụ cần đưa lên Kết thúc yêu cầu cơ bản của bài toán Chú ý: Giá trị thuộc tính Name của hộp Combobox trên form chính phải trùng với tham số đã đặt ở form phụ. Nếu chưa trùng nhau phải sửa lại cho khớp: hoặc sửa Name của Combo cho khớp với tham số form phụ hoặc thao tác ngược lại mở form phụ sửa tham số cho khớp Name của ô Combobox. 22 2013 1
  222. Bài tập ❖ Quản lý lương cán bộ Bài 1: Tạo form cho phép xem danh sách cán bộ từng phòng ban như sau: Yêu cầu: Mỗi khi chọn một phòng ban từ hộp chọn thì danh sách cán bộ phòng ban đó được hiển thị lên Subform. 22 2013 2
  223. Bài 2: Tạo form cho phép tìm kiếm cán bộ theo tên như sau: Yêu cầu: Sau khi gõ một tên (có thể là đệm + Tên hoặc đầy đủ họ và tên), danh sách các kết quả tìm thấy sẽ được liệt kê lên Subform. 22 2013 3
  224. Bài 3: Thiết kế form lập hoá đơn bán hàng theo mẫu: ❖ Các nút Tiến, Lùi để định vị hoá đơn cần làm việc; ❖ Nút Thêm mới để bắt đầu tạo mới một hoá đơn; ❖ Nút Xoá HĐ để xoá hoá đơn hiện tại. Yêu cầu phải có xác nhận trước khi xoá; ❖ Nút In HĐ để in chi tiết hoá đơn bán hàng ra report (chức năng này sẽ được hoàn thiện sau khi học xong Chương Report) 22 2013 4
  225. Bài 4: Thiết kế form tổng hợp thông tin bán hàng như sau: ❖ Sau khi nhập xong giá trị từ ngày và đến ngày, thông tin chi tiết về các mặt hàng bán ra trong phạm vi ngày đó được tổng hợp theo như giao diện trên. 22 2013 5
  226. Bài 5: Thiết kế form tổng hợp thông tin bán hàng cho một khác hàng nào đó trong một khoảng ngày nào đó như sau: Yêu cầu: ❖ Sau khi chọn một khách hàng, nhập vào khoảng ngày cần tổng hợp. ❖ Thông tin tổng hợp về từng mặt hàng của khách đó mua sẽ được liệt kê. 22 2013 6
  227. Bài 6: Tạo form tổng hợp thông tin hàng đã bán chi tiết theo từng ngày như sau: 22 2013 7
  228. Bài 7: Tạo form theo dõi thông tin hoá đơn bán hàng của một khách hàng nào đó: Yêu cầu: Sau khi chọn tên một khách, thông tin về các hoá đơn mua hàng được hiển thị. 22 2013 8
  229. ❖ Khái niệm ❖ Tạo Report bằng Wizard ❖ Thiết kế Report ❖ Truyền tham số ❖ In Report 22 2013 9
  230. 6.1. Khái niệm ❖ Report là công cụ dùng thiết kế in ấn dữ liệu trong Access, không làm thay đổi dữ liệu. ❖ Mỗi khi report hiển thị kết quả (preview) là lúc có thể in được nội dung báo cáo ra giấy. ❖ Thông thường mỗi report sẽ in dữ liệu của một Table hoặc một Query nào đó. Tức là phải có một nguồn dữ liệu cần in cụ thể (trường hợp đặc biệt Report không có nguồn dữ liệu sẽ nói đến phần cuối) 23 2013 0
  231. 6.2. Cấu trúc Report ❖ Cấu trúc một report thông thường gồm 5 phần: 23 2013 1
  232. Cấu trúc Report ❖ Report Header ▪ Là phần tiêu đề đầu của Report, nằm ở tiêu đề đầu của trang đầu tiên. Mỗi Report có nhiều nhất 1 Report header. Phần này có thể có hoặc không có thông tin tuỳ vào người thiết kế. ❖ Report Footer ▪ Là phần tiêu đề cuối của Report, nằm ở tiêu đề cuối của trang cuối cùng. 23 2013 2
  233. Cấu trúc Report ❖ Page Header ▪ Là phần đầu tiên của một trang báo cáo. Giống như khái niệm Page header trong Word và Excel. Phần này có thể có hoặc không có thông tin tuỳ vào người thiết kế. ❖ Page Footer ▪ Là phần cuối cùng của mỗi trang báo cáo. ❖ Detail ▪ Là phần thân của report – nơi hiển thị giá trị các bản ghi sẽ in ra. Phần này có thể bị thay đổi, phụ thuộc vào nguồn dữ liệu tại thời điểm sẽ in ra của report. ▪ Ví dụ: Danh sách học sinh lớp 10A1 là 45 khi đó Detail report sẽ in ra 45 dòng; nếu chuyển sang in danh sách học sinh lớp 10A2 có 48 học sinh, lúc này Detail report sẽ in ra 48 dòng (tương ứng với số bản ghi của nguồn dữ liệu sẽ in ra). 23 2013 3
  234. 6.3. Tạo Report bằng Wizard ❖ VD: Tạo một report in ra danh sách cán bộ từ CSDL Quản lý lương bao gồm các thông tin: Hoten, ngaysinh, tenchucvu, Tenphongban. ❖ Bước 1: Ở thẻ Reports, nhấn New, chọn Report wizard, nhấn OK. ❖ Hoặc nhấn đúp chuột lên biểu tượng: 23 2013 4
  235. 6.3. Tạo Report bằng Wizard ❖ Bước 2: Chọn dữ liệu cần in trên hộp thoại sau: Chọn bảng hay query chứa dữ liệu cần in ra. Chọn cột chứa dữ liệu cần in ra. 23 2013 5
  236. 6.3. Tạo Report bằng Wizard ❖ Bước 3: Chọn kiểu cách hiển thị dữ liệu trên report. ▪ Trong yêu cầu này có thể có 3 kiểu hiển thị dữ liệu trên report (vì dữ liệu được chọn ra từ 3 bảng khác nhau). Vì muốn in một danh sách cán bộ nên chọn kiểu by CANBO 23 2013 6
  237. 6.3. Tạo Report bằng Wizard ❖ Bước 4: Thiết lập các nhóm dữ liệu cần thiết. ▪ Muốn hiển thị dữ liệu theo nhóm giá trị của trường nào, chọn trường đó (Trong bài 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) 23 2013 7
  238. 6.3. Tạo Report bằng Wizard ❖ Bước 5: Thiết lập sắp xếp dữ liệu trên báo cáo: 23 2013 8
  239. 6.3. Tạo Report bằng Wizard ❖ Bước 6: Chọn bố cục (Layout) cho Report: Chọn bố cục cho report Chọn hướng giấy in 23 2013 9
  240. 6.3. Tạo Report bằng Wizard ❖ Bước 7: Chọn mẫu định dạng (Style) cho report. ❖ Bước 8: Hoàn thiện các thông tin cuối cùng: ▪ Gõ vào tiêu đề report cũng như tên report trên hộp What title do you want for your report?; ▪ Chọn Preview the report để hiển thị dữ liệu của report ngay sau khi kết thúc; hoặc hiển thị ngay màn hình thiết kế để sửa cấu trúc report khi chọn Modify the report’s design; ▪ Cuối cùng nhấn Finish để kết thúc các công việc sử dụng report wizard. 24 2013 0
  241. Màn hình hiển thị dữ liệu report 24 2013 1
  242. In Mở report ở chế độ Xuất (Export) thông tin trên report ra các thiết kế; loại định dạng khác của MS Office như Word, Excel, HTML. Hiển thị nhiều trang trên 1 MH Hiển thị 2 trang trên 1 màn hình Hiển thị report ra màn hình trong từng trang báo cáo; 24 2013 2
  243. Lưu ý: ❖ Với những report đơn giản, chỉ cần thực hiện Bước 1; Bước 2 đã có thể nhấn Finish để kết thúc. ❖ Tuy nhiên tuỳ vào yêu cầu in báo cáo mà muốn dừng lại ở bước nào để thiết lập các thông tin cho phù hợp hãy chuyển nhanh đến bước đó. 24 2013 3
  244. 6.4. Thiết kế Report ❖ Report wizard chỉ có thể tạo ra các report in dữ liệu từ các bảng hoặc queries theo cấu trúc đơn giản. ❖ Trong những trường hợp yêu cầu cấu trúc report phức tạp, hoặc phải in dữ liệu không phải hoàn toàn chỉ từ các bảng và queries hoặc in ấn báo cáo theo các tiêu chí, tham số động nào đó thì không thể đáp ứng được. ❖ Trong trường hợp này phải dùng đến Report design view. 24 2013 4
  245. 6.4. Thiết kế Report ❖ Bước 1: Khởi động Report design view: ▪ Từ thẻ Report nhấn nút New, chọn Design view, nhấn OK. ▪ Hoặc nhấn đúp chuột lên biểu tượng Creat report in Design view trên cửa sổ dự án: 24 2013 5
  246. 6.4. Thiết kế Report ❖ Bước 1: Khởi động Report design view: Thiết kế nội dung cần in Thanh công cụ Cửa sổ Properties 24 2013 6
  247. 6.4. Thiết kế Report ❖ Bước 2: Xây dựng nguồn dữ liệu để in ấn cho report. ▪ Report sẽ in những thông tin gì? ▪ Phạm vi như thế nào? ➔thiết lập thuộc tính Record Source cho report: 2 cách + Cách 1: chọn query cần in tại thuộc tính Record Source. 24 2013 7
  248. 6.4. Thiết kế Report ➔thiết lập thuộc tính Record Source cho report: 2 cách + Cách 2: nhấn chuột lên nút của thuộc tính Record Source để thiết kế query làm nguồn dữ liệu. 24 2013 8
  249. 6.4. Thiết kế Report ❖ Bước 3: Đưa các thông tin lên cửa sổ thiết kế report. ▪ Có rất nhiều loại thông tin phải đưa lên report. Mỗi khi có ý định đưa một thông tin lên, bạn phải trả lời được 2 câu hỏi: • Đó là thông tin gì? là tiêu đề “DANH SÁCH CÁN BỘ”. • Sẽ đặt thông tin đó lên phần nào của report? Đặt lên phần Page Header! ▪ Để hiển thị phần tiêu đề đầu và cuối Report: nhấn phải chuột lên cửa sổ thiết kế và chọn: Report Header/Footer 24 2013 9
  250. Sử dụng công cụ Label ▪ Dùng chuột nhấp nút Label trên thanh công cụ Toolbox thả lên vị trí cần đặt vào trên Report; ▪ Gõ vào nội dung tiêu đề cần in ra report; ▪ Có thể sử dụng thanh công cụ Formatting để định dạng hộp dữ liệu này. 25 2013 0
  251. Sử dụng công cụ Text box ▪ Text box là ô dùng hiển thị dữ liệu của một trường dữ liệu, hiển thị dữ liệu của một biểu thức (ví dụ tính Tổng tiền). ▪ Cách sử dụng Textbox như sau: • Dùng chuột nhấp nút Textbox trên thanh công cụ Toolbox thả lên vị trí cần đặt vào trên Report; • Gõ vào nguồn dữ liệu sẽ hiển thị lên Textbox ở thuộc tính Control Source. Giá trị thuộc tính này có thể: – Hiển thị giá trị một trường: Khi đó hãy chọn trường muốn đưa thông tin vào (hình dưới): 25 2013 1
  252. Sử dụng công cụ Text box – Hoặc hiển thị kết quả một biểu thức. Khi đó gõ biểu thức lên thuộc tính này bắt đầu một dấu bằng “=”. – Ví dụ: – Có thể sử dụng thanh công cụ Formatting để định dạng hộp dữ liệu này. 25 2013 2
  253. Sử dụng cửa sổ Field ❖ DanhListsách các trường dữ liệu có thể in ra được report thể hiện ở cửa sổ Field List (nếu chưa thấy hiển thị mở thực đơn View | Field List) ❖ Muốn in ra giá trị của trường nào lên vị trí nào của report có thể dùng đối tượng Textbox hoặc cửa sổ Field List bằng cách: dùng chuột kéo trường cần in ra từ cửa sổ Field List thả lên vị trí cần in trên cửa sổ thiết kế report (nên làm theo cách này thay vì dùng Textbox). 25 2013 3
  254. Sử dụng công cụ Image ❖ Giúp đưa ảnh từ các tệp tin ảnh in ra report. Sau khi tạo đối tượng Image, một hộp thoại xuất hiện cho phép chọn tệp tin ảnh cần đưa lên report: ❖ Tìm và chọn tệp ảnh, nhấn OK để hoàn tất công việc. 25 2013 4
  255. Sử dụng công cụ Line ❖ Dùng để vẽ các đường thẳng, bảng biểu bằng cách rê chuột. ❖ Với yêu cầu như trên, bằng cách sử dụng các công cụ như đã hướng dẫn hãy thiết kế một report như sau: 25 2013 5
  256. Sử dụng công cụ Line ❖ Trong đó: ▪ Textbox bao gồm các ô như đã đánh mũi tên chỉ dẫn. Trong đó: - hoten, ngaysinh, tenchucvu, tenphongban được tạo bằng cách kéo từ cửa sổ Field List lên phần Detail; ▪ Textbox đếm tổng số cán bộ: • Control Source là =Count([hoten]), • để ở phần Report footer. ▪ Textbox để tự động đánh số thứ tự phải thiết lập như sau: • Control Source là =1; thuộc tính Running sum là Over Group. ▪ Các hộp chữ còn lại dùng đối tượng Label; ▪ Toàn bộ bảng biểu sử dụng đối tượng Line. Chú ý các đường kẻ phải được nối khít với nhau. Nếu không khít sẽ tạo ra các khe hở và nét đứt (không liền nét). 25 2013 6
  257. 6.5. Report chứa tham số ❖ Report có tham số là loại Report có khả năng lọc dữ liệu khi in. ❖ VD: In danh sách cán bộ một phòng ban nào đó? Lúc này phải cần đến report có tham số. ❖ Có nhiều cách để thiết lập và sử dụng report có tham số như: ▪ Thiết lập tham số trên Record Source của report; ▪ Thiết lập tham số trên điều kiện lọc (Where Condition) dùng Macro; ▪ Thiết lập tham số trong câu lệnh VBA DoCmd; ▪ 25 2013 7
  258. Thiết lập tham số trên thuộc tính Record Source ❖ VD: In danh sách cán bộ một phòng ban nào đó. ▪ Phòng ban cần in được chọn từ Combo box một form như sau: ▪ Sau khi chọn tên một phòng ban từ danh sách, nhấn nút In danh sách. Danh sách cán bộ phòng đã chọn sẽ được in ra một report. 25 2013 8
  259. Bước 1: Tạo Report đáp ứng thông tin cần in như sau: 25 2013 9
  260. Bước 2: Tạo form theo yêu cầu bài toán: ▪ Có thể sử dụng Combo Wizard để tạo Combobox lấy ra danh sách các phòng ban từ bảng phongban; ▪ Có thể sử dụng Command button Wizard để tạo các nút lệnh Đóng và In danh sách; ▪ Cuối cùng được form như sau: 26 2013 0
  261. Bước 3: Thiết lập tham số cho Report: ▪ Thiết lập tham số vào thuộc tính Record Source của Report như sau: • Mở report đã tạo được ở chế độ Design View (chế độ thiết kế); • Mở query được thiết lập ở thuộc tính Record Source –nơi tạo nguồn dữ liệu và thiết lập tham số cho trường phongbanID của query như sau: 26 2013 1
  262. Bước 3: Thiết lập tham số cho Report: ▪ Trong đó: tham số cho trường phongbanID là tên (Name) của ô Combo box chứa phòng ban được chọn trên form. Cú pháp viết tham chiếu tới một đối tượng trên form như sau: Forms! ! ▪ Trong trường hợp này tên ô Combo đó là Combo1 và tên của form (Name của form) là frmIndsCB, cách viết tham số sẽ như sau: Forms!frmIndsCB!Combo1 26 2013 2
  263. Sử dụng tính năng Build Expression ❖ Có thể sử dụng tính năng Build Expression có sẵn trên Access để giúp tạo biểu thức này như sau: ▪ Nhấn phải chuột lên ô Criteria của trường phongbanID- nơi sẽ gõ vào tham số. ▪ Một menu sổ xuống xuất hiện: ▪ Chọn Build hoặc có thể nhấn nút Build trên thanh công cụ Standard, hộp thoại Expression Builder xuất hiện: 26 2013 3
  264. ❖ Chọn: Forms|All Forms| frmIndsCB – đây là form chứa đối tượng combo box phòng ban cần lọc. Khi đó một danh sách các đối tượng trên form frmIndsCB xuất hiện ở giữa hộp thoại; ❖ Hãy nhấn đúp chuột lên Combo1 - đối tượng chứa phòng ban cần lọc, được kết quả như hình sau: 26 2013 4
  265. Bài tập Trên CSDL Quản lý lương cán bộ thực hiện các yêu cầu sau: ❖ Bài số 1: Thiết kế report in danh sách cán bộ với các thông tin: canboID, hoten, ngaysinh, gioitinh (phải ghi rõ là Nam hay Nữ), tencv, tenpban. ❖ Bài số 2: In danh sách cán bộ một phòng ban nào đó như sau: ❖ Sau khi chọn tên một phòng ban, nhấn nút In danh sách cán bộ, danh sách cán bộ phòng ban đã chọn sẽ được in ra một report. ❖ Bài số 3: Thiết kế report in bảng lương cán bộ cơ quan, bao gồm các thông tin: Hoten, tencv, ngaysinh, luongchinh, phucapcv, dangphi, congdoanphi, thuclinh 26 2013 5
  266. Bài tập ❖ Bài số 4: Thiết kế query in ra bảng tổng hợp cán bộ như sau: STT Tên chức vụ Tổng số cán bộ ❖ Bài số 5: Tạo form và report để xem và in bảng lương của các phòng ban như sau: ❖ Sau khi chọn tên một phòng ban, bảng lương các cán bộ phòng đó hiển thị lên sub-form. Nhấn nút In bảng lương, bảng lương riêng phòng ban đó sẽ được in ra một report. 26 2013 6