Lập trình quản lý 1
Bạn đang xem 20 trang mẫu của tài liệu "Lập trình quản lý 1", để 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:
- lap_trinh_quan_ly_1.pdf
Nội dung text: Lập trình quản lý 1
- LỜI NÓI ĐẦU Lập trình quản lý 1 là môđun ứng dụng kiến thức của môn Cơ Sở Dữ Liệu (CSDL) đã được giảng dạy trước trong hệ thống chương trình của ngành Công Nghệ Thông Tin. Nhằm làm rõ thêm các kiến thức về CSDL đã học, với số liệu cụ thể và kết quả đạt được sau khi thực thi các câu lệnh SQL sẽ giúp học sinh có cái nhìn rõ hơn, thực tế hơn đối với môn CSDL. Sau khi học xong môđun này học sinh - sinh viên sẽ đạt được những kiến thức sau: Hiểu các đặc tính và chức năng của phần mềm Access; Biết cách thiết kế và quản trị với các cơ sở dữ liệu trên Access; Hiểu cách thức truy vấn đến cơ sở dữ liệu bằng công cụ QBE trên Hiểu được các cách tạo các báo biểu và biểu mẫu; Thao tác thành thạo với phần mềm Access; Tạo và quản trị cơ sở dữ liệu trên Access; Thực hiện được các truy vấn dữ liệu với các bảng; Thiết kế được nhiều dạng biểu mẫu và báo biểu; Chủ động, sáng tạo trong việc tìm hiểu các tài liệu phục vụ cho môn học. NỘI DUNG BẢNG DỮ LIỆU Hiểu được cấu trúc và cách thiết kế bảng; Hiểu cách tạo quan hệ giữa các bảng; Hiểu cách nhập dữ liệu cho các bản ghi; Thiết kế hoàn chỉnh được một cơ sở dữ liệu; NỘI DUNG TRUY VẤN DỮ LIỆU Biết được khái niệm và phân loại truy vấn dữ liệu; Hiểu các cách tạo truy vấn; Sử dụng được công cụ QBE NỘI DUNG THIẾT KẾ BIỂU MẪU Biết các dạng mẫu biểu thông dụng; Hiểu được chức năng và thuộc tính của các đối tượng trên mẫu biểu; Biết được các cách thiết kế mẫu biểu: Form Winzard, DesignView, ; Thiết kế được các form nhập liệu, form tra cứu dữ liệu cơ bản làm tiền đề cho việc tạo ra các sản phẩm phần mềm hoàn thiện; NỘI DUNG THIẾT KẾ BÁO BIỂU Biết được chức năng và các cách tạo báo biểu trên Access; Thiết kế chỉnh sửa được các báo biểu với từng yêu cầu cụ thể; 1
- Từ các kiến thức này học sinh có thể tự viết một chương trình quản lý sử dụng hệ quản trị CSDL Microsoft Access phục vụ cho nhu cầu thực tế. Đây là tài liệu được tổng hợp lại từ các giáo trình khác và quá trình giảng dạy rút kinh nghiệm của người biên soạn. Do đó không tránh khỏi các thiếu sót, mong bạn đọc thông cảm và góp ý kiến để hoàn thiện hơn. Chân thành cảm ơn 2
- MỤC LỤC MỤC LỤC 3 BÀI 1: TẠO BẢNG (TABLE) 5 I. CÁC KHÁI NIỆM CƠ BẢN 5 1. Bảng 5 2. Trường (Thuộc tính, cột) 5 3. Khóa 5 4. Khóa ngoại 5 5. Mối quan hệ 5 6. Bộ (Dòng) 6 7. Các kiểu dữ liệu cơ bản 6 II. TẠO CẤU TRÚC BẢNG (TABLE ) 6 III. TẠO MỐI QUAN HỆ GIỮA CÁC BẢNG 8 IV. NHẬP DỮ LIỆU CHO BẢNG 9 BÀI 2: TRUY VẤN DỮ LIỆU 11 I. SELECT QUERY 11 1. Lưới Query 11 2. Các hàm cơ bản 12 a. Các hàm về ngày tháng 12 b. Các hàm về chuỗi 12 c. Hàm IIF () 12 d. Cách tạo cột mới trong query 12 II. TẠO QUERY CÓ ĐIỀU KIỆN 13 1. Các phép toán so sánh 13 a. Các phép so sánh thông thường (=; >; =; ) 13 b. Các phép toán logic 13 2. Cách tạo query có điều kiện 14 III. TOTAL QUERY 16 1. Các hàm tính toán thường gặp 16 a. Min – Max: Tìm giá trị nhỏ nhất/ lớn nhất 16 b. Count – Sum: Đếm các giá trị/ tính tổng các giá trị 16 c. Avg: Tính giá trị trung bình 16 2. Cách tạo 16 IV. CROSSTAB QUERY 18 BÀI 3: TẠO FORM 21 I. KHÁI NIỆM VỀ FORMS 21 II. SỬ DỤNG FORM WIZARDTẠO FORM 21 1. Cấu trúc Form 21 2. Cách tạo Form 21 3. Nút lệnh 24 4. Danh sách hành động của nút lệnh 25 III. TẠO SUB-FORM 26 1. Tạo Sub_Form 26 2. Tổng hợp dữ liệu trên Form 28 3. Tạo Sub_Form có giá trị tổng hợp 30 4. Tạo Sub_Form liên kết qua Combo Box 32 BÀI 4: TẠO REPORT 36 I. KHÁI NIỆM VỀ REPORT 36 II. SỰ DỤNG REPORT WIZARD 36 1. Các thành phần của Report 36 a. Page Header 36 b. Page Footer 36 3
- c. Detail 36 d. Report Header 36 e. Report Footer 37 2. Cách tạo Report 37 III. REPORT GOM NHÓM 38 IV. THAM SỐ CHO REPORT 41 BÀI TẬP 44 Bài tập Query 44 Bài tập Form 53 Bài tập Report 54 Đề ôn tập 1 56 Đề ôn tập 2 58 Đề ôn tập 3 60 Đề ôn tập 4 61 Tài liệu tham khảo 64 4
- BÀI 1: TẠO BẢNG DỮ LIỆU (TABLE) Trong môn học cơ sở dữ liệu chúng ta đã học cách phân tích và thiết kế cơ sở dữ liệu (CSDL) hoàn chỉnh trên văn bản và bây giờ cần phải đưa CSDL vào máy tính thông qua hệ CSDL. Bài này sẽ ôn lại các khái niệm cơ bản trong CSDL và cung cấp các kỹ năng cơ bản để xây dựng một CSDL trong môi trường làm việc của hệ CSDL Microsoft Access. I. CÁC KHÁI NIỆM CƠ BẢN Ví dụ: CSDL quản lý điểm của học sinh 1. Bảng Mỗi bảng có một tên và tên bảng thường gợi nhớ đến đối tượng được lưu trữ. Tên bảng không được trùng nhau, không nên có khoảng cách và ký tự đặt biệt (Nếu có thì trong quá trình sử dụng truy vấn phải thêm dấu [,] trước và sau tên bảng) 2. Trường (Thuộc tính, cột) Trường là đặt tính, tính chất mô tả cho đối tượng. Một trường tương ứng với một cột (thuộc tính), mỗi trường đều có tên, kiểu dữ liệu cụ thể 3. Khóa Khóa chính là tập các thuộc tính mà căn cứ vào giá trị của chúng ta phân biệt được các dòng trong một bảng. 4. Khóa ngoại Khóa ngoại là khóa chính của bảng này được đưa vào bảng kia khi chuyển đổi từ mô hình thực thể sang mô hình quan hệ. 5. Mối quan hệ - Một - một Ví dụ: một vợ một chồng xét tại một thời điểm - Một - nhiều (Nhiều - một) Ví dụ: Một người mẹ có nhiều người con, một người con chỉ có một người mẹ - Nhiều - nhiều Ví dụ: Một học sinh tham gia nhiều lớp học, mỗi lớp học có nhiều học sinh 5
- tham gia. 6. Bộ (Dòng) Bộ là dòng dữ liệu trong bảng. Ví dụ: Bảng DIEM trong CSDL quản lý điểm MAHS MON DIEM DOT_THI 001 Toán 5 1 002 Toán 10 2 Thuộc tính Kiểu dữ liệu Diễn giải MAHS Text (5) Mã học sinh MON Text (10) Môn thi DIEM Number (Single) Điểm đạt được DOT_THI Number (Byte) Đợt thi 7. Các kiểu dữ liệu cơ bản STT TÊN KDL MIỀN DỮ LIỆU 1 Boolean True/False 2 Byte 1 byte 3 Integer 2 byte 4 Long 4 byte 5 Single 4 byte, dấu chấm động với 7 chữ số có nghĩa 6 Double 8 byte, dấu chấm động với 15 chữ số có nghĩa 7 Currency 8 byte, dấu chấm động với 19 chữ số có nghĩa 8 String kiểu cố định từ 0 đến 65.535 ký tự (216) , kiểu động có thể dài hơn 2 tỷ ký tự (231) II. TẠO CẤU TRÚC BẢNG (TABLE ) Ví dụ: Tạo bảng DIEM trong CSDL quản lý điểm Tên thuộc tính Kiểu dữ liệu Ghi chú MAHS Text (5) Thuộc tính khóa chính. Khóa ngoại nối với bảng DANHSACH MON Text (10) Thuộc tính khóa chính DIEM Number (Single) DOT_THI Number (Byte) Thuộc tính khóa chính Các bước thực hiện Bước 1: Khởi động chương trình, tạo mới một File trắng và lưu trữ trên ổ đĩa. Bước 2: Vào mục Create\ Table Design 6
- Bước 3: Điền tên các trường vào mục Field Name Bước 4: Chọn kiểu dữ liệu cho trường ở mục Data Type Xác định miền giá trị và định dạng cho trường ở phần Fiedl properties Bước 5: Chú thích thêm cho trường vừa tạo ở mục Description Tiếp tục thực hiện như vậy đối với các trường còn lại Bước 6: Chọn các trường tham gia làm khóa chính, nhấn nút Primary key trên thanh công cụ Bước 7: Lưu bảng và đặt tên bảng. Kết quả Lưu ý: Khi xác định kiểu dữ liệu (KDL)và miền giá trị cho trường cần lưu ý các trường làm khóa ngoại phải có KDL và miền giá trị hoàn toàn trùng khớp với khóa chính tương ứng. Ví dụ: MAHS trong bảng DANHSACH và MAHS trong bảng DIEM phaỉ có KDL và miền giá trị trùng khớp nhau. 7
- III. TẠO MỐI QUAN HỆ GIỮA CÁC BẢNG Ví dụ: Tạo mối quan hệ trong CSDL quản lý điểm Yêu cầu: Đã tồn tại các bảng DANHSACH, DIEM, TRUONG Các bước thực hiện Bước 1: Vào menu lệnh Database Tool \ Relationships Bước 2: Chọn các bảng vừa tạo trong cửa sổ Show Table rồi nhất nút Add. Bước 3: Dùng chuột chọn một khóa chính bất kỳ rồi kéo qua khóa ngoại tương ứng của bảng khác Ví dụ: MATRUONG trong bảng TRUONG và MATRUONG trong DANHSACH Mối quan hệ giữa hai bảng được thể hiện trong cửa sổ Edit Relationships Bước 4: Click chuột chọn các ô vuông trong của sổ Edit Relationships để Microsoft Access tự động kiểm tra các ràng buộc toàn vẹn khi ta nhập dữ liệu. Sau đó nhấn nút Create. Tiếp tục làm vậy đối với các bảng còn lại Kết quả Lưu ý: Nếu cửa sổ Show Table không hiển thị ta nhấp phải chuột vào cửa sổ Relationships rồi chọn Show Table. 8
- IV. NHẬP DỮ LIỆU CHO BẢNG Sau khi đã tạo cấu trúc bảng, nối quan hệ cho các bảng thì việc cuối cùng để hoàn thiện CSDL là nhập dữ liệu cho bảng. Các bước thực hiện Bước 1: Mở bảng cần nhập dữ liệu Chọn bảng \ nhấn nút open (hay click đôi vào tên bảng) Bước 2: Sử dụng bàn phím nhập dữ liệu vào theo đúng tên cột và hàng. Lưu ý: Nhập dữ liệu từ bảng ở đầu 1 trước Dữ liệu ở trường làm khóa ngoại phải tồn tại trong bảng mà nó làm khóa chính. Ví dụ: Nhập dữ liệu cho CSDL quản lý điểm phải theo thứ tự các bảng bảng TRUONG bảng DANHSACH bảng DIEM 9
- BÀI 2: TRUY VẤN DỮ LIỆU Bài một đã cung cấp các kiến thức và kỹ năng để xây dựng một CDSL hoàn tất từ cấu trúc đến dữ liệu, vậy tiếp theo chúng ta sẽ tìm hiểu về Query để có thể truy xuất dữ liệu từ CSDL tạo được ở bài trước. I. SELECT QUERY 1. Lưới Query Chọn tên trường cần lấy Chọn bảng chứa trường Chọn hình thức sắp xếp tăng/ giảm Hiển thị / không hiển thị trường Điều kiện truy xuất dữ liệu Các bước tạo select query đơn giản Ví dụ: Liệt kê danh sách học sinh gồm: MAHS, Họ, Tên Các bước thực hiện Bước 1: Chọn đối tượng Query, trên thanh menu chọn Create\ Query Design Bước 2: Chọn các bảng cần sử dụng trong cửa sổ Show Table rồi nhấn nút ADD phía dưới. Sau đó đóng cửa sổ Show Table lại Bước 3: Chọn các trường cần hiển thị ra tại dòng Field của lưới Query Bước 4: Sau đó nhấn nút Run trên menu lệnh Kết quả Kết quả là một bảng gồm các cột đã chọn và số liệu tương ứng Cần phải lưu bảng kết quả lại để sử dụng lại sau này. Tên query không được có 11
- Lưu khoảng trắng và ký tự đặt biệt ý: T a c ó t h ể chọn nhiều bảng trong cùng một câu Query, nhưng các bảng tham gia phải có liên kết với nhau thông qua mối quan hệ nếu không kết quả sẽ bị nhân tích descartes. Trường hợp khi bảng là kết quả của câu Query khác thì mối quan hệ có thể không có. Lúc này ta phải tự kéo các trường tương đương nhau trong các bảng lại để tạo quan hệ. 2. Các hàm cơ bản a. Các hàm về ngày tháng Day (chuỗi ngày tháng năm): Trích giá trị ngày trong chuỗi ngày thánh năm Month(chuỗi ngày tháng năm): Trích giá trị tháng trong chuỗi ngày thánh năm Year(chuỗi ngày tháng năm): Trích giá trị năm trong chuỗi ngày thánh năm Now(chuỗi ngày tháng năm): Lấy ngày hiện tại của máy b. Các hàm về chuỗi Left (chuỗi ký tự, số ký tự): trích các ký tự từ bên trái chuỗi ký tự Right(chuỗi ký tự, số ký tự): trích các ký tự từ bên phải chuỗi ký tự Mid(chuỗi ký tự, vị trí bắt đầu, số ký tự): lấy các ký tự ở giữa từ vị trí bắt đầu Dấu & dùng để nối chuỗi c. Hàm IIF () IIF (Biểu thức điều kiện, giá trị trả về khi BT đúng, giá trị trả về khi BT sai) Lưu ý: Biểu thức phải chứa phép toán so sánh (>;<;= ) Nêu đặt biểu thức sao cho khi biểu thức đúng chỉ có duy nhất một giá trị trả về d. Cách tạo cột mới trong query Ví dụ: Liệt kê danh sách học sinh gồm: MAHS, Họ và Tên, Giới tính (Nam/ nữ), Tuổi (Tính tới hiện tại) 12
- Các bước thực hiện Bước 1: Bước 2: Tương tự khi tạo query select đơn giản Bước 3: Bước 4: Tại dòng Field ứng dụng các hàm đã học viết công thức tính Tên cột mới: công thức tính Họ và tên : [HO] & “ ” &[TEN] Giới tính: iif([PHAI] = -1, “Nữ”, “Nam”) Tuổi: Year(Now()) – Year([NGAYSINH]) Kết quả Lưu ý: Khi đặt tên mới cho cột thì khải dùng dấu hai chấm (:) Tên cột được đặt trong dấu ngoặc vuông [] II. TẠO QUERY CÓ ĐIỀU KIỆN 1. Các phép toán so sánh a. Các phép so sánh thông thường (=; >; =; ) Phép toán so sánh được đặt trong các biểu thức điều kiện và có kết quả trả về là đúng / sai b. Các phép toán logic AND Phép toán AND cho kết quả đúng khi các biểu thức tham gia đều có kết quả đúng Ví dụ: Xét kết quả của biểu thức : x>=5 AND y = 5 đúng; y =5 AND y < 2 đúng 13
- OR Phép toán OR cho kết quả đúng khi một trong các biểu thức tham gia có kết quả đúng Ví dụ: Xét kết quả của biểu thức : x>=5 OR y = 5 đúng; y =5 OR y =5) Nếu x =5, x >= 5 đúng; NOT(x>=5) sai; LIKE Phép toán so sánh gần giống (có giá trị tươgn đương) chỉ sử dụng cho chuỗi. ALL / IN / NOT IN Phép toán so sánh trên tập hợp, dùng kết hợp với các phép toán so sánh khác ALL : tất cả IN: thuộc vào tập hợp NOT IN không thuộc vào tập hợp Ví dụ: Xét biểu thức x > ALL (100, 32, 42, 75, 10). Nếu x có giá trị lớn hơn tất cả các số trong tập hợp thì biểu thức có giá trị đúng, ngược lại là sai Khi x = 99 sai Khi x = 101 đúng Xét biểu thức x IN (100, 32, 42, 75, 10). Khi x = 99 sai Khi x = 75 đúng Xét biểu thức x NOT IN (100, 32, 42, 75, 10). Khi x = 99 đúng Khi x = 75 sai 2. Cách tạo query có điều kiện Ví dụ: Thống kê danh sách học sinh nữ gồm: MAHS, Họ, Tên, Phái Các bước thực hiện Bước 1: Tương tự khi tạo query select đơn giản 14
- Bước 2: Lưu Bước 3: ý : Bước 4: Đặt điều kiện tại dòng Criteria (Điều kiện là học sinh nữ, với quy ước K nữ là Yes (-1 ), Nam là No (0) ) h i s o Bước 5: Sau đó nhấn nút Run trên menu lệnh s Kết quả á n h b ằ n g có thể bỏ qua dấu so sánh mà viết dữ liệu trực tiếp Khi so sánh với KDL chuỗi thì phải đặt chuỗi trong dấu “” và nên dùng phép toán so sánh Like. Dấu * đại diện cho các ký tự liên tục nhau Dấu ? đại diện cho 1 ký tự Khi so sánh với KDL ngày tháng phải dùng dấu # Khi có nhiều điều kiện thì cần dùng các phép toán logic để kết hợp các biểu thức điều kiện với nhau. AND : các biểu thức được đặt trên cùng dòng Criteria OR: các biểu thức được đặt khác dòng nhau ở dòng OR Ví dụ: Tìm các học sinh có MAHS bằng 0002 Tìm các học sinh có tên bắt đầu bằng chữ L Tìm các học sinh có tên bắt đầu bằng chữ C và tên có 3 ký tự 15
- Tìm các học sinh có ngày sinh trước ngày 1/1/1984. Lưu ý sinh trước năm 1984 là sinh từ năm 1983 trở về trước nên so sánh nhỏ hơn. Tìm các học sinh thi đợt 1 và có điểm > =5 Tìm các học sinh nữ đăng ký trường Lê Hồng Phong hoặc học sinh nam đăng ký trường Lê Quý Đôn Câu lệnh SQL tương ứng cho query select SELECT FROM WHERE ; III. TOTAL QUERY Total Query dùng để tính toán tổng hợp trên một nhóm các đối tượng có cùng điều kiện 1. Các hàm tính toán thường gặp a. Min – Max: Tìm giá trị nhỏ nhất/ lớn nhất b. Count – Sum: Đếm các giá trị/ tính tổng các giá trị c. Avg: Tính giá trị trung bình 2. Cách tạo Ví dụ: Cho biết tổng số học sinh nam và tổng số học sinh nữ gồm: Giới tính, Tổng học sinh Đếm các học sinh trong nhóm cùng phái Trường làm điều kiện gom nhóm là: PHAI Trường tham gia tính toán là MAHS vì đại diện cho 1 học sinh làm MAHS. Các bước thực hiện 16
- Bước 1: Lưu ý: Bước 2: Tương tự khi tạo query select đơn giản N Bước 3: ế Bước 4: u Chọn nút Total trên thanh công cụ Bước 5: Tại dòng Total trong lưới query y Xác định trường làm điều kiện gom nhóm chọn Group by ê Xác định trường cần tính toán chọn phép toán u c ầ u Bước 6: Đặt tên lại cho phù hợp yêu cầu c ó đ i ề Bước 7: u Sau đó nhấn nút Run trên menu lệnh Kết quả k i ệ n k èm theo thì tại dòng Total của trường xét điều kiện chọn Where. Trường làm điều kiện sẽ không được hiển thị ở kết quả. Nếu phải tạo cột mới thì tại dòng Total của cột mới chọn Expression Ví dụ: Cho biết tổng số học sinh nam và tổng số học sinh nữ đăng ký vào trường Lê Quý Đôn gồm: Giới tính, Tổng học sinh Cho biết điểm trung bình và kết quả thi của môic học sinh trong đợt thi thứ 2. Với điểm trung bình >= 5 là đậu,ngược lại là rớt 17
- Trường gom nhóm MAHS, trường tính điểm trung bình là DIEM, trường điều kiện là DOT_THI, cột mới là kết quả Câu lệnh SQL tương ứng cho total query SELECT FROM WHERE GROUP BY ; IV. CROSSTAB QUERY Crosstab query dùng để tổng hợp dữ liệu chéo. Trong câu Crosstab query có các khái niệm như sau Row Column heading heading Value Row heading là tiêu đề các dòng, có chứa các giá trị của các trường nào đó làm tiêu chí thống kê. Mỗi Crosstab 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 nào đó làm tiêu chí thống kê. Mỗi Crosstab chỉ có duy nhất 01 trường làm Column heading; Value là vùng dữ liệu tổng hợp (là các con số). Chỉ có duy nhất một trường làm Value, tương ứng với nó là một phép tổng hợp hoặc: đếm, tính tổng, tính trung bình cộng, max, min, Ví dụ: Tính tổng số nam nữ theo từng trường, vậy cần thống kê như hình mẫu Tên trường làm tiêu dòng Phái làm tiêu Cột Số học sinh được đếm trên MAHS như ví dụ ở phần Total query Tên Trường Nam Nữ Trường PTTH Bùi Thị Xuân ? ? Trường PTTH Chuyên Lê Hồng Phong ? ? Trường PTTH Lê Quý Đôn ? ? Trường PTTH Nguyễn Thượng Hiền ? ? Trường PTTH Nguyễn Thị Minh Khai ? ? Trường PTTH Trương Vương ? ? 18
- Các bước thực hiện Bước 1: Bước 2: Tương tự khi tạo query select đơn giản Bước 3: Bước 4: Chọn nút Crosstab query trên thanh công cụ Bước 5: Trên dòng Crosstab Chọn mục Row heading cho trường làm tiêu đề dòng Chọn mục Column heading cho trường làm tiêu đề cột Chọn mục Value cho trường sẽ mang đi tính toán Trên dòng Total chỉ chọn phép toán cần thống kê đối với trường Value. Bước 6: Sau đó nhấn nút Run trên menu lệnh Kết quả Lưu ý: Khi tạo Crosstab query cần xác định tên trường dựa vào giá trị của nó. Vì trong yêu cầu không nhắc đến tên trường trực tiệp. Trường làm tiêu đề cột thường có miền giá trị ít hơn trường làm tiêu đề dòng. Trong một câu Crosstab query có thể có 2 trường tham gia làm Row heading. Trường thứ hai làm Row heading thường dùng để tổng hợp dữ liệu theo dòng. (Tổng trên một dòng ) Ví dụ: Tính tổng số nam nữ theo từng trường và tổng số học sinh của trường đó. 19
- Câu lệnh SQL tương ứng cho Crosstab query TRANSFROM Hàm tính toán (Tên côt làm value) SELECT FROM GROUP BY PIVOT ; 20
- BÀI 3: THIẾT KẾ MẪU BIỂU (FORM) I. KHÁI NIỆM VỀ FORMS Đối với người dùng việc thao tác và viết lệnh khi sử dụng phần mềm là khá phức tạp. Vì vậy phần mềm cần có một công cụ trung gian để giao tiếp với người dùng đó là giao diện, cửa sổ của phần mềm (Form) do người lập trình thiết kế. Form cần được thiết kế thân thiện và dễ hiểu để người dùng cảm thấy thoải mái khi sử dụng phần mềm. II. SỬ DỤNG FORM WIZARDTẠO FORM 1. Cấu trúc Form 2. Cách tạo Form Ví dụ: Tạo Form nhập Thông Tin Học Sinh Các bước thực hiện Bước 1: Chọn mục Create trên thanh công cụ, chọn nút Bước 2: - Chọn nguồn dữ liệu cho Form từ một bảng \ query - Chọn các trường cần hiển thị trên Form bằng nút di chuyển >,>> - Nhấn Next để tiếp tục Bước 3: - Chọn bố cục hiển thị, có 4 loại như hình. - Nhấn Next để tiếp tục 21
- Bước 4: - Đặt tên/ tiêu đề cho Form - Chọn chế độ hiển thị xem hay thiết kế Form - Nhấn Finish hoàn tất Kết quả 22
- Phần Header của Form Dữ liệu trong CSDL sẽ được hiển thị tại các ô Text Box Các nút di chuyển và thêm mới một dòng dữ - Sau khi hoàn tất chúng ta nên cân chỉnh lại vị trí các điều khiển và các dòng ghi chú trên Form sao cho thích hợp. - Các dòng ghi chú là Label - Các ô chứa dữ liệu là Text box Lưu ý: Khi xác định nguồn dữ liệu có thể chọn một bảng hay một Query. Do đó, khi thấy dữ liệu trên Form là dữ liệu tổng hợp từ nhiều bảng thì ta nên tạo một query làm nguồn dữ liệu cho Form. Để chuyển đổi qua lại các chế độ xem hay Design của Form thì nhấn nút View Các thuộc tính đơn giản của Form Chọn bảng thuộc tính của Form Caption: tiêu đề của Form Record source: nguồn dữ liệu Record selectors: ký hiệu đánh dấu dòng được lựa chọn Navigation Button: hiển thị các nút di chuyển giữa các dòng 23
- Close button: nút đóng Form Scroll bar: thanh cuộn của Form Dividing lines: đường gạch ngăn cách giữa header và detail 3. Nút lệnh Sau khi tạo Form xong chúng ta sẽ thêm các nút điều khiển Ví dụ: Tạo nút thóat cho Form Thông Tin Học Sinh Các bước thực hiện Bước 1: - Chọn thuộc tính Navigation Button : No, để bỏ các nút điều khiển tự động. Bước 2: - Chọn mục Design của Form trên thanh công cụ - Chọn nút điều khiển Button Bước 3: - Dùng chuột vẽ một hình chữ nhật trên Form tại vị trí cần đặt nút điều khiển. cửa sổ Command Button Winzard xuất hiện. - Chọn hành động cho nút lệnh - Nhấn nút Next để tiếp tục Bước 4: - Chọn biểu tượng / chữ hiện thị trên nút - Nhấn nút Next để tiếp tục Bước 5: - Đặt tên cho nút để sau này có thể phân biệt trong quá trình viết lệnh - Nhấn nút Finish để hoàn tất 24
- Kết quả Lưu ý: Khi tạo nút sử dụng chế đệ tự động cần mở chức năng Use Control Winzards 4. Danh sách hành động của nút lệnh STT NHÓM LỆNH Ý NGHĨA 1 Record Navigation Nhóm định hướng bản ghi 1.1 - Goto First Reocord - Chuyển về bản ghi đầu 1.2 - Goto Last Reocord - Chuyển đến bản ghi cuối cùng 1.3 - Goto Next Reocord - Chuyển bản ghi kề sau 1.4 - Goto Previous - Chuyển bản ghi kề trước 2 Record Operations Các xử lý với bản ghi 2.1 - AddNew Reocord - Thêm bản ghi mới 2.2 - Delete Reocord - Xoá bản ghi hiện tại 2.3 - Update Reocord - Cập nhật bản ghi hiện tại 2.4 - Undo Reocord - Phục hồi thay đổi dữ liệu bản ghi 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 25
- 4 Report Operations Các xử lý với Report 4.1 - Preview report - Xem trước nội dung (Preview) report 4.2 - Print report - In report 4.3 - Send report to file - 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 III. TẠO SUB-FORM Sub-Form: là một Form bình thường được đặt trong một Form khác. Form chứa gọi là Main-Form. 1. Tạo Sub_Form Ví dụ: Tạo Form theo mẫu Dữ liệu trong Form truy xuất từ hai bảng: DANHSACH, DIEM Các bước thực hiện Bước 1: Chọn mục Create trên thanh công cụ, chọn nút Bước 2: Chọn nguồn dữ liệu cho Form từ một bảng \ query Chọn các trường cần hiển thị trên Form bằng nút di chuyển >,>> Chọn tiếp tục cho bảng thứ 2 Nhấn Next để tiếp tục 26
- Bước 3: Chọn cách sắp xếp dữ liệu theo dạng Sub-Form Bước 4: Chọn bố cục hiển thị, có 2 loại như hình: Tabular và Datasheet Nhấn Next để tiếp tục Bước 5: Đặt tên/ tiêu đề cho Form, lúc này sẽ có 2 Form: Main-Form và Sub-Form Chọn chế độ hiển thị xem hay thiết kế Form Nhấn Finish hoàn tất Kết quả 27
- Sau đó ta cân chỉnh và trang trí lại các Form để đạt kết quả là Form giống mẫu yêu cầu. Lưu ý: Trong Sub-Form ta bỏ TextBox chứa MAHS đi vì sẽ trung với MAHS Khi tạo trên Main_Form. Tuy nhiên trong nguồn dữ liệu của Sub_Form vần có Sub- MAHS để liên kết ngầm với Main_Form. Bạn có thể xem ở mục Form ListField thì dữ liệu trong hai Form phải thống nhất với nhau, để di chuyển giữa các dòng dữ liệu thì dữ liệu trong hai Form cũng thay đổi theo. Kiểm tra kết nối giữ hai Form thông qua thuộc tính Link Master Fields và Link Child Fields, hai thuộc tính này phải trùng nhau. 2. Tổng hợp dữ liệu trên Form Ví dụ: Xét kết quả từng môn học cho từng học sinh gồm: MAHS, Tên môn, Điểm, Kết quả. Biết nếu điểm >= 5 thì đậu, ngược lại thì rớt. Tính điểm trung bình và giá trị nhỏ nhất của cột điểm. Các bước thực hiện Bước 1: Tạo Query tính điểm cao nhất của các môn của tùng học sinh: Bước 2: Tạo Form gồm các cột: MAHS, MON, DIEM Nguồn dữ liệu từ Query trên Bố cục Form dạng Tabular Bước 3: Trong Form phần Detail tạo một Text box 28
- Chọn nút Text box trên hộp công cụ Vẽ một hình chữ nhật vào vùng Detail của Form Xóa phần label Đặt tên cho Text box tại thuộc tính Name: txt_kq Chọn thuộc tính control source của ô Text box, nhấn vào nút Gõ công thức tính =IIf([Diem_Max]>=5,"Dau","Rot") vào ô trống Nhấn nút OK Cân chỉnh lại vị trí cho Text box. Bước 4: Trong Form phần Header tạo một Label Chọn nút Label trên hộp công cụ Vẽ một hình chữ nhật vào vùng Header của Form Gõ dữ liệu vào ô trông Bước 5: Trong Form phần Footer tạo 2 Text box như hướng dẫn phía trên Text box 1: Name: txt_dtb Control source: avg([Diem_max]) Label ghi chú: Điểm trung bình Text box 1: Name: txt_min Control source: Min([Diem_max]) Label ghi chú: Điểm nhỏ nhất Cân chỉnh vị trí 2 Text box cho thích hợp với yêu cầu Bước 6: Nhấn nút View để xem kết quả 29
- Kết quả Kết quả như mẫu yêu cầu Lưu ý: Các hàm: Sum, Count, Min, Max, Avg chỉ sử dụng ở phần Footer vì hàm tính trên toàn cột không tính trên dòng. Tham số của các hàm phải là các trường dữ liệu nằm trong Fiedl List 3. Tạo Sub_Form có giá trị tổng hợp Ví dụ: Sử dụng lại Form trên làm Sub_Form, tạo Form như mẫu để xét kết quả cuối cùng cho từng học sinh. Biết: Điểm trung bình >= 5 và không có môn nào dưới 5 thì Đậu Ngược lại thì Rớt Các bước thực hiện Bước 1: Tạo Main_Form có cấu trúc như phần trên Bước 2: Ở chế độ Design của Main_Form Mở rộng phần Detail Dùng chuột giữ và rê Form diem_max ở phần 2 thả vào phần Detail của Main_Form 30
- Bước 3: Xác định thuộc tính kết nối Nhấn phải chuột vào Sub_Form ( Form diem_max) Chọn thuộc tính Link Master Fields và Link Child Fields là: MAHS Bước 4: Ở chế độ Design của Main_Form Trong phần Detail tạo 2 Text box Text box 1: Label ghi chú: Điểm trung bình Control source: truy xuất từ dữ liệu trong ô Text box tên txt_tb trong Sub_Form Chọn nút Trong cửa sổ Expression Builder chọn tên Textbox cần truy xuất dữ liệu và click đôi chuột. Cú pháp truy xuất: Tên Sub_Form . Form ! tên điều khiển [diem_max].Form![txt_tb] Text box 2: Control source: truy xuất dữ liệu từ 2 ô Text box tên txt_tb, txt_min trong Sub_Form Viết câu lệnh cho thuộc tính Control source = iif([diem_max].Form![txt_tb]>=5 AND [diem_max].Form![txt_min]>=5, “Đậu”,”Rớt” ) Label ghi chú: Kết quả cuối cùng Bước 5: Cân chỉnh các Text box cho đúng theo mẫu Nhấn nút View để xem kết quả Kết quả Kết quả như mẫu yêu cầu Lưu ý: Khi lấy dữ liệu từ Sub_Form ra Main_Form thì cần phải gọi đúng tên và đúng cú pháp của câu lệnh Phải đặt tên dễ gợi nhớ Cú pháp câu lệnh: Tên Sub_Form . Form ! tên điều khiển Để không lặp lại các giá trị tổng hợp ở cả hai Form ta nên để ẩn các Text box trong Sub-Form bằng cách chọn thuộc tính Visible của Text box là No. Không thể xóa mà chỉ để ẩn vì nếu xóa thì trong Main_Form không thể tạo dữ liệu tổng hợp. Quy tắc chung khi tổng hợp là dữ liệu của Form nào thì Form đó sử dụng. 31
- 4. Tạo Sub_Form liên kết qua Combo Box Vị dụ :Tạo Form xem thông tin học sinh theo từng trường Các bước thực hiện Bước 1: Tạo Main_Form chứa một Combo box Chọn nút tạo Form Design trên thanh công cụ Bước 2: Tạo một Combo box Chọn điều khiển Combo box Vẽ một hình chữ nhật lên phần Detail của Form. Cửa sổ Combo Box Winzard xuất hiện, đồng ý sử dụng nguồn dữ liệu từ bảng hay query. Chọn Next để tiếp tục. Chọn tên bảng/ Query cần lấy dữ liệu. Chọn Next để tiếp tục. Chọn các trường sẽ đưa vào Combo box. Chọn Next để tiếp tục. 32
- Chọn cách sắp xếp các trường theo thứ tự ( Có thể bỏ qua). Chọn Next để tiếp tục. Chọn lựa có hiển thị thuộc tính khóa trong Combo box không. Chọn Next để tiếp tục. Chọn tên trường sẽ được hiển thị trên Combo box và lưu trữ xuống CDSL khi người dùng chọn lựa. nhấn nút Finish để hoàn tất công việc tạo Combo box. 33
- Bước 3: Xác định các thuộc tính của Combo box Name: cmb_ma Column widths : 2.54, 0,0. Để khi hiển thị chỉ có 1 cột trong 3 cột dữ liệu. Hai cột còn lại sẽ được lấy dữ liệu ra và điền vào các Text box. Column count : 3. Tổng số cột dữ liệu Bound column : 1. Cột sẽ được lưu trữ giá trị xuống CSDL Bước 4: Tạo thêm hai Text box để hiển thị tên trường và điểm chuẩn khi mã trường trong combo box được chọn. Text box1 : Name :txt_ten Control source : cmb_ma.column(1) Text box2 : Name :txt_diem Control source : cmb_ma.column(2) Bước 5: Tạo Sub_Form có dạng như sau: Nguồn dữ liệu của Sub_Form là câu Query điều kiện Điều kiện là trường đăng ký (TRUONG_DKY) phải có mã trường trùng với mã trường được chọn trong Combo box. 34
- Bước 6: Dùng chuột kéo Sub_Form vào Main_Form Bước 7: Kiểm tra thuộc tính kết nối Kết quả Lưu ý : Trong một Combo box có nhiều cột dữ liệu được đánh số thứ tự vị trí từ 0 Cú pháp truy xuất dữ liệu trong Combo box : tên combo box.column(vị trí cột cần lấy) Trong câu Query của Sub_Form phải ghi chính xác tên của Combo box và đặt trong ngoặc vuông []. 35
- BÀI 4: THIẾT KẾ BÁO BIỂU (REPORT) Ngoài việc tổng hợp dữ liệu và báo cáo thì in dữ liệu ra cũng là việc quan trọng. Để thiết kế một bảng báo cáo và in ra Microsoft Access sử dụng đối tượng Report. Bài này sẽ trình bày những khái niệm căn bản về thiết kế và in ấn Report. I. KHÁI NIỆM VỀ REPORT Muốn in các báo cáo trong Access bạn có thể sử dụng Report- một công cụ in ấn rất mạnh. Ứng với mỗi mẫu báo cáo có thể thiết kế các thông tin lên một report. 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. II. SỰ DỤNG REPORT WIZARD 1. Các thành phần của Report a. 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ế. b. Page Footer Là phần cuối cùng của mỗi trang báo cáo. Giống như khái niệm Page footer 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ế. c. 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). d. Report Header Là phần tiêu đề của trang đầu tiên Report, nằm tiếp theo phần Page header và nằm trên phần Detail. Mỗi Report sẽ chỉ 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ế. 36
- e. Report Footer Là phần tiêu đề cuối của trang cuối cùng Report, nằm tiếp theo phần Detail và phía trước phần Page Footer. Mỗi Report sẽ chỉ có nhiều nhất 1 Report footer. Phần này có thể có hoặc không có thông tin tuỳ vào người thiết kế. 2. Cách tạo Report Ví dụ: Tạo Report thống kê danh sách học sinh Các bước thực hiện Bước 1: Chọn menu Create, chọn nút tạo Report bằng Winzard Bước 2: Chọn nguồn dữ liệu cho report. Nhấn nút Next để tiếp tục Bước 3: Gom nhóm dữ liệu. Nhấn nút Next để tiếp tục Bước 4: Chọn bố cục cho Report Cách trình bày dữ liệu (Layout) Trang in theo chiều ngang / dọc (Orientation) Gom tất cả dữ liệu vào một trang (Adjust ) Nhấn nút Next để tiếp tục Bước 5: Đặt tên / tiêu đề cho Report Chọn xem/ chuyển sang chế độ Design Nhấn nút Finish để hoàn tất 37
- Bước 6: Cân chỉnh lại các điều khiển giống như trong phần Form để đạt kết quả như yêu cầu Các điều khiển được đưa vào trong phần Detail Trang trí bằng điều kiển Rectangle / Line Chọn màu nền (Back color), màuviềng (Border color) Vẽ một Text box thay thể cho trường Phái và viết lệnh như trong Form. Kết quả Đây là Report dạng nhãn. Lưu ý: Chuyển sang chế độ Design bằng nút Close Cuối Report có phần chèn thêm ngày tháng và số trang khi nội dung quá nhiều. - Now(): Hàm lấy ngày hệ thống - [Page]: Số trang hiện tại của báo cáo, [Pages]: Tổng số trang III. REPORT GOM NHÓM Ví dụ: Tạo Report gom nhóm theo Trường và tính tổng số học sinh đăng ký vào trường. 38
- Các bước thực hiện Bước 1: Giống quy trình tạo Report đã hướng dẫn phía trên Bước 2: Nguồn dữ liệu từ 2 bảng : TRUONG, DANHSACH Bước 3: Gom nhóm dữ liệu theo trường. Nhấn nút Next để tiếp tục Bước 4: Chọn bố cục cho Report Cách trình bày dữ liệu (Layout) Trang in theo chiều ngang / dọc (Orientation) Gom tất cả dữ liệu vào một trang (Adjust ) Nhấn nút Next để tiếp tục Bước 5: Đặt tên / tiêu đề cho Report Chọn xem/ chuyển sang chế độ Design Nhấn nút Finish để hoàn tất Bước 6: Cân chỉnh theo hình mẫu Di chuyển các Label và Text box sao cho hợp lý Đánh số thứ tự cho các dòng: MATRUONG header: vẽ một Label và ghi chú là STT Detail : Vẽ một Textbox để đánh số thứ tự 39
- Bỏ phần ghi chú Thuộc tính Control source của Text box gõ =1 Thuộc tính Data / Running Sum : Over Group Bước 7: Hiển thị phần footer của thuộc tính gom nhóm Nhấn phải vào ô vuông góc trên bên trái của Report Chọn Sorting and Grouping Nhấn vào nút More Chọn with a footer section Tạo Text box tổng hợp Tại phần MATRUONG footer của vẽ một Text box Ghi chú: Tổng số học sinh Control source: Count ([MAHS]) Bước 8: Cân chỉnh lại các điều khiển giống như trong phần Form để đạt kết quả như yêu cầu Kết quả Đây là Report dạng gom nhóm. 40
- Lưu ý: Trong phần design của Report xuất hiện TRUONG header/footer tại đây ta có thể gom các dữ liệu theo từng nhóm để tổng hợp dữ liệu. Khi tính tổng hợp có thể dùng các hàm đã học nhưng chỉ áp dụng cho các trường nằm trong nguồn dữ liệu của Form. IV. THAM SỐ CHO REPORT Report được gọi khi có lệnh từ Form Ví dụ: sử dụng Form ở phần Sub-Form và Report gom nhóm ở tên. Tạo một nút In Báo Cáo. Khi nhấn nút thì sẽ gọi Report thống kê danh sách học sinh ở trường đó. Các bước thực hiện Bước 1: Tạo Report như mẫu Bước 2: Tạo Form như mẫu Đặt tên Combo box là cmb_ma Bước 3: Trong Query của Report tạo điều kiện cho trường MATRUONG Tại dòng Criteria của trường MATRUONG nhấn phải chọn Build Trong cửa sổ Expression Element chọn Form Trong cửa sổ Expression Categories chọn điều khiển Combo box tên cmb_ma, click đôi. Cấu trúc truy xuất dữ liệu từ Form: Forms. Tên Form! Tên đối tượng 41
- Bước 4: Trên Form tạo một nút để gọi report Vẽ nút lên Form Chọn hành động của nút Kết quả Khi nhấn nút In Báo Cáo thì Report xuất hiện với dữ liệu tương ứng trên Form 42
- Lưu ý: Nhớ đặt tên cho điều khiển để có thể dễ sử dụng sau này Viết đúng câu lệnh truy xuất: Forms. Tên Form! Tên đối tượng 43
- BÀI TẬP Bài tập tạo bảng Bài 1. Xây dựng CSDL QuanLyLuongCanBo một cơ quan có cấu trúc như sau : 1. Thiết kế cấu trúc bảng như sau: (Các trường in đậm là các thuộc tính khóa) Bảng Canbo: Filed name Data type Filed size Format Caption MaCB Text 4 Mã cán bộ MaPB Text 4 Mã phòng ban MaCV Text 4 Mã chức vụ Hoten Text 30 Họ tên Ngaysinh Date/time Short date Ngày sinh Giơitinh Yes/no Giới tính Hesoluong Number Double Hệ số lương Ladangvien Yes/no Là đảng viên Vaocongdoan Yes/no Vào công đoàn Hinh OLE Object Hình Ghichu Text 30 Ghi chú Bảng Phongban: Filed name Data type Filed size Format Caption MaPB Text 4 Mã phòng ban TenPB Text 30 Tên phong ban Bảng Chucvu: Filed name Data type Filed size Format Caption MaCV Text 4 Mã chức vụ Tenchucvu Text 30 Tên chức vụ PCCV Number Double Phụ cấp chức vụ 2. Thiết lập thuộc tính khóa 3. Thiết lập thuộc tính LOOKUP cho các trường Bound Column Column List Filed name Row source column count width width CANBO.MaCV SELECT 1 2 0.5”;1.5” 2” chucvu.maCV, chucvu.tenCV FROM chucvu; CANBO.MaPB SELECT 1 2 0.5”;1.5” 2” phongban.maPB, phongban.tenPB 44
- FROM phongban; 4. T h iết lập mối quan hệ giữa các bảng theo sơ đồ sau: 5. Nhập dữ liệu cho các bảng: Bảng cán bộ: Bảng phòng ban Bảng Chức vụ Bài 2: Xây dựng CSDL QuanLyVanTai Tạo Bảng, xác định khoá chính và nối các bảng lại với nhau căn của vào số liệu sau: 45
- Bài 3: Xây dựng CSDL QuanLySachThuVien như sau: 1. Xây dựng cấu trúc các bảng sau: Bảng NXB: Filed name Data type Filed size Format Caption maNXB Text 4 > Mã nhà xuất bản tenNXB Text 30 Tên nhà xuất bản Bảng DANHMUC: Filed name Data type Filed size Format Caption maDM Text 4 > Mã danh mục tenDM Text 30 Tên danh mục Bảng SACH: Filed name Data type Filed size Format Caption Masach Text 4 > Mã sách Tensach Text 30 Ten sách maTG Text 4 > Mã tác giả maNXB Text 4 > Mã nhà xuất bản maDM Text 4 > Mã danh mục Sotrang Text 10 > Số trang NamXB Text 10 Năm xuất bản 46
- Soluong Number Long Interger Số lượng Bảng TACGIA: Filed name Data type Filed size Format Caption maTG Text 4 > Mã tác giả tenTG Text 30 Tên tác giả Diachi Text 30 Địa chỉ Coquan Text 30 Cơ quan 2. Thiết lập thuộc tính khóa cho các bảng 3. Thiết lập thuộc tính LOOKUP cho các bảng Filed name Row source Bound Colum Colum List column n count n width width SACH.maTG SELECT tacgia.maTG, 1 2 0.5”;1” 2” tacgia.tenTG FROM tacgia; SACH.maNXB SELECT nxb.maNXB, 1 2 0.5”;1” 2” nxb.tenNXB FROM nxb; SACH.maDM SELECT danhmuc.MaDM, 1 2 0.5”;1” 2” danhmuc.tenDM FROM danhmuc; 4. Thiết lập mối quan hệ giữa các bảng 5. Nhập dữ liệu cho các bảng nxb Mã nhà xuất bản Tên nhà xuất bản KD Kim đồng PN Phụ nữ TN Thanh Niên danhmuc Mã danh mục Tên danh mục HCM Hồ Chí Minh TrN Truyện ngắn 47
- danhmuc Mã danh mục Tên danh mục TT Thơ tình Tacgia Mã tác giả TênTG Địa chỉ Cơ Quan HCM Hồ Chí Minh 12A Trần Hưng Đạo NXB Hoà Bình NB Nguyễn Bính 10/35/12 Hùng Vương Hội Nhà Văn HN NC Nam Cao 03/50 Nguyễn Thị Minh Khai Tự Do PK Puskin Nước ngoài Nước ngoài TH Tố Hữu 35A An Bình Tụ Do sach Mã Mã Mã nhà xuất Mã danh Số Năm xuất Số Tên sách sách TG bản mục trang bản lượng H01 Đi Đường HCM PN HCM 78 1983 300 H02 Nhật ký HCM KD HCM 312 1985 300 trong tù H03 Giải đi sớm HCM TN HCM 100 1987 50 NB01 Ghen NB TN TT 100 1987 500 NB02 Gửi cố nhân NB KD TT 56 1979 60 NC01 Chí Phèo NC TN TRN 700 1979 40 NC02 Đôi mắt NC TN TRN 135 1984 200 P01 Vô tình PK TN TT 50 1982 200 P02 Nhớ PK KD TT 60 1978 45 P03 Sao PK KD TT 50 1991 80 TH01 Từ ấy TH KD TT 50 1980 100 TH02 Truyện Kiều TH TN TRN 1024 1984 50 Bài 4: Xây dựng CSDL QuanLyBangHang một cơ quan có cấu trúc như sau : 1. Tạo thêm trong ngăn TABLE bảng mới tên DANH MUC CO SO có nội dung sau: MACS TEN_CS DIA_CHI AT01 ANTIEN Informatics 73A Bùi Thị Xuân – Đà Lạt AT02 ANTIEN Factory 1/1 Hồ Tùng Mậu – Đà Lạt AT03 ANTIEN Tea - Coffee 20A Pasteur – Đà Lạt Đặt Primary Key tại vùng tin MACS. 48
- 2. Tạo thêm trong ngăn TABLE bảng mới tên DANH MUC VAT TU có nội dung sau: MAVT TÊN_VT QUI_CACH DV_TINH DON_GIA DVDW DVD Write PC CÁI 550.000 HDS1 Đĩa cứng SEGATE 250 250 Gb Ổ 800.000 HDS2 Đĩa cứng SEGATE 500 500 Gb Ổ 1.250.000 KEYB KEYBOARD CÁI 150.000 LCD1 MONITOR LCD SAMSUNG 1742 17 INCH CÁI 2.250.000 LCD2 MONITOR LCD SAMSUNG 1943 19 INCH CÁI 2.680.000 MAIN MAIN BOARD GIGABYTE 975 CÁI 1.100.000 MOUS CHUỘT QUANG CÁI 120.000 RAMD RAM DDR2 Bus 1066 1 Gb THẺ 250.000 SPEA SPEAKER A8800 4.1 BỘ 750.000 USB1 USB KINGMAX 2 Gb CÁI 120.000 USB2 USB KINGMAX 4 Gb CÁI 210.000 Đặt Primary Key tại vùng tin MAVT. 3. Tạo thêm trong ngăn TABLE bản mới tên NHAP XUAT có nội dung sau: STT NGAY LOAI HTEN MACS MAVT SOLG 1 04/03/2005 X Nguyễn Ngọc Long AT01 USB1 50 2 16/03/2005 N Sài Gòn AT02 MAIN 100 3 20/03/2005 X Lê Anh Vũ AT01 USB2 60 4 23/03/2005 N Sài Gòn AT03 LCD1 100 5 25/03/2005 X Hoàng Việt Hà AT01 HDS1 2 6 13/09/2005 X Lưu Việt Tiến AT02 MOUS 20 7 21/09/2005 X Trần Lan Phương AT03 HDS2 2 8 02/10/2005 N Sài Gòn AT01 HDS1 50 9 13/12/2005 N Sài Gòn AT02 SPEA 750 10 22/12/2005 N Sài Gòn AT02 RAMD 16 11 23/12/2005 N Hà Nội AT02 MOUS 1 12 12/01/2006 N Sài Gòn AT01 DVDW 200 13 15/01/2006 N Sài Gòn AT02 KEYB 12 14 07/02/2006 X Đoàn Quốc Văn AT03 MAIN 2 15 14/02/2006 N Nguyễn Văn Hiếu AT02 USB1 10 16 24/03/2006 N Lê Công Trường AT02 USB1 25 17 01/04/2006 X Trần Định AT01 HDS1 2 18 15/05/2006 N Sài Gòn AT02 HDS2 5 19 18/05/2006 X Lê Thành Danh AT03 USB2 10 20 12/07/2006 N Đà Nẵng AT03 SPEA 20 Đặt Primary Key tại Field [STT]. Field [STT] dùng kiểu dữ liệu Auto Number. Bài tập Query Bài 1: Thực hiện các câu Query theo CSDL QuanLyLuongCanBo sau: 1. Liệt kê thông tin của các phòng ban 2. Liệt kê thông tin của tất cả các nhân nhân viên của phòng tài chính 3. Liệt kê Cán bộ ở phòng kinh doanh: hoten, ngay sinh, gioi tinh, ten phong 49
- 4. Liệt kê Cán bộ đã vào đảng 5. Liệttkê Cán bộ chưa tham gia công đoàn 6. Liệt kê Cán bộ nữ là đảng viên 7. Liệt kê Cán bộ phòng kinh doanh chưa vào đảng 8. Liệt kê các trưởng phòng và tên phòng họ quản lý 9. Liệt kê Cán bộ nam có giữ chức vụ 10. Liệt kê đảng viên không giữ chức vụ 11. Liệt kê trưởng phòng đã vào công đoàn nhưng phải là đảng viên 12. Thống kê danh sách cán bộ trong cơ quan 13. Thống kê danh sách các chức vụ trong cơ quan gồm các thuộc tính sau: Tên chức vụ, phụ cấp chức vụ 14. Thống kê danh sách cán bộ trong cơ quan gồm các thuộc tính sau: Mã cán bộ, Họ và tên, Ngày Tháng Năm Sinh, Chức vụ, Tên phòng 15. Thống kê danh sách các Trưởng phòng 16. Thống kê danh sách cán bộ thuộc phòng kinh doanh 17. Thống kê danh sách cán bộ sinh năm 80 18. Thống kê danh sách các phó giám đốc nam 19. Cho biết thông tin của trưởng phòng tài nguyên môi trường 20. Thống kê danh sách cán bộ Đảng viên Nữ hoặc là Công đoàn viên Nam 21. Thống kê danh sách cán bộ trong cơ quan gồm các thuộc tính: Mã cán bộ, Họ và tên, Ngày sinh, Phái 22. Thống kê danh sách cán bộ trong cơ quan gồm các thuộc tính: Mã cán bộ, Họ và tên, tuổi (chính xác theo ngày) 23. Thống kê danh sách cán bộ gồm các thuộc tính: Mã cán bộ, Họ và tên, Hệ số lương, Lương hệ số = hệ số lương * 730000 + phụ cấp chức vụ. 24. Thống kê danh sách cán bộ gồm các thuộc tính: Mã cán bộ, Họ và tên, Hệ số lương, Lương hệ số, Khoảng phải nộp, Phụ cấp Đảng viên, Thực lĩnh Với điều kiện: Nếu là Đảng viên nộp lệ phí Đảng 25.000 Nếu vào công đoàn phải nộp lệ phí công đoàn 10.000 Thực lĩnh = Lương hệ số - Khoảng phải nộp Phụ cấp Đảng viên: Nếu là Đảng viên thì phụ cấp là 100.000 Nếu là Đảng viên nữ thì phụ cấp 120.000 50
- 25. Tìm mức thực lĩnh cao nhất 26. Tìm hệ số lương cao nhất 27. Tìm khoảng phải nộp ít nhất 28. Đếm số cán bộ là đảng viên 29. Tính mức lương trung bình của mỗi cán bộ 30. Tính tổng các khoảng phải nộp 31. Tính tổng tiền Đảng phí phải nộp của cả cơ quan 32. Tính tổng tiền công đoàn phải nộp theo từng phòng ban 33. Tính tổng số Giám đốc là công đoàn viên nhưng chưa vào Đảng 34. Tính tổng số nữ Đảng viên là nhân viên 35. Tính mức lương trung bình của nhân viên không vào công đoàn Bài 2: Thực hiện các câu Query theo CSDL QuanLyVanTai sau: (Số liệu tuwk nhập) 1. Tạo query tên CuocPhiVanTai gồm các field SoXe, MaLoTrinh, SoLuongVT, NgayDi, NgayDen, ThoiGianVT, CuocPhi. Trong đó: ThoiGianVT: là 1 nếu vận chuyển trong ngày, là (NgayDen-NgayDi) trong trường hợp ngược lại. CuocPhi: là SoLuongVT x DonGia 2. Tạo query tên BangChietTinhCPVT gồm các field SoXe, TenLoTrinh, SoLuongVT, NgayDi, NgayDen, CuocPhi. 3. Tạo query tên Câu 3 để lập danh sách các xe có lộ trình vận tải là Hà Nội. Query gồm các field SoXe, MaTrongTai, SoLuongVT, NgayDi, NgayDen. 4. Tạo query tên Cau 4 để lập danh sách các xe có lộ trình vận tải là Nha Trang hoặc có SoLuongVT vượt trọng tải qui định. Query gồm các field SoXe, TenLoTrinh, SoLuongVT, TronTaiQD, NgayDi, NgayDen. 5. Tạo query tên Cau5 thống kê tổng số chuyến đi theo từng SoXe theo từng lộ trình 6. Tạo query tên Cau6 cho biết SoXe có ThoiGianVT là lớn nhất 51
- 7. Tạo query tên Cau7 cho biết SoXe có TongCuocPhi là ít nhất 8. Tạo query tên Cau8 cho biết SoXe có số lần vượt thời gian quy định là nhiều nhất Bài 3: Thực hiện các câu Query theo CSDL QuanLyBangHang sau: 1. Tạo các câu Query thực hiện chức năng. - Tổng số lần Nhập hàng. - Tổng số lần Xuất hàng. - Tổng số lần Nhập hàng và Xuất hàng. - Tổng số lần Nhập hàng và Xuất hàng ở từng Sơ Sở ( có 3 Cơ Sở) - Tính tổng số số lượng, số lượng nhiều nhất., số lượng ít nhất trên từng nhóm vật tư theo từng loại Nhập hoặc Xuất. - Tìm số lượng hàng Xuất lớn nhất của vật tư có kí hiệu đầu là “U” tại Cơ Sở 1. - Tìm số lường hàng Nhập ít nhất của vật tư có ký hiệu đầu là “U” hoặc “L” tại Cơ Sở 2 trong 2 năm 2005 và 2006. 2. Tạo các Query khai thác dữ liệu từ Table [NHAP XUAT], yêu cầu thực hiện như sau: - Cho ra danh sách các khách hàng mua hàng trong tháng 3/2005 tại Cơ sở 1. Tên chiết xuất là [Ngay], [Khach hang], [Co so], [Vat tu], [So luong] thay vì sử dụng chính tên các tập tin của bảng nguồn. Lưu Query tên: [KHACH HANG 305]. - Cho ra danh sách các khách hàng mua mặt hàng có 3 ký tự đầu là “USB” với số lường >=10 hoặc Khách hàng mua mặt hàng có 2 ký tự đầu là “HD” với số lượng >=3. Khi thi hành Query tên chiết xuất các trường là: [Ten Khach Hang], [Vat Tu], [So Luong]. Lưu Query tên: [KHACH HANG USBHD]. - Cho ra danh sách khách hàng cung cấp hàng từ năm 2008 về trước hoặc những khách hàng cung cấp kể từ ngày hiện tại ( dùng hàm Date() để lấy ngày giờ hiện tại trên hệ thống) về trước 30 ngày. Khi thi hành Query , vùng tin [HTEN] chiết xuất thành [NHA CUNG CAP]. Lưu tên Query là: [NHA CUNG CAP 2008]. 3. Thêm mẩu tin ( WEBC, Webcam,cai,12.000.00) vào bảng DANHMUCVATTU. 4. Chọn Object Query, sau đó tạo 1 Query mới (Crosstab Query) mang tên: THONG KE NHAP XUAT VAT TU, với yêu cầu thực hiện việc thống kê tổng số lượng từng loại vật tư nhập – xuất ở từng Cơ sở như mẫu dưới: 5. Thực hiện Query mới mang tên [DOANH THU] . Trong đó sử dụng 2 Tabl nguồn là: [DANH MUC VAT TU] và [NHAP XUAT], thực hiện lần lượt các yêu cầu sau: - Các Field [MAVT], [LOAI], [NGAY], [SOLG], [DON_GIA] lấy từ các bảng nguồn. - Thêm vùng tin DONGIABAN = DON_GIA +(5% x DON_GIA). - Thêm vùng tin THTIEN = DONGGIABAN*SOLG. - Thêm vùng tin THUE được tính: Nếu THTIEN <=2.000.000 thì tính 5% THTIEN. Ngược lại tính 10% THTIEN. - Thêm vùng tin THUCTHU = THTIEN – THUE. Lưu ý: Việc tính DONGIABAN VA THTIEN chỉ tính cho những mẩu tin có vùng LOAI =”X” ( chỉ tính cho hàng bán). Vùng tin [LOAI] chỉ đưa vào QUERY để đặt điều kiện chứ không cho hiển thị khi thi hành Query. 52
- Bài tập Form Sử dụng CSDL QuanLyVanTai để tạo các Form như mẫu sau: 1. Tạo Form THÔNG TIN LỘ TRÌNH Thêm nút thoát vào form, khi thoát có Msg hỏi. 2. Tạo Form THÔNG TIN TRỌNG TẢI QUY ĐỊNH 3. Tạo Form THÔNG TIN CHI TIẾT CÁC CHUYẾN XE 4. Tạo Form THÔNG TIN CHI TIẾT THEO MÃ LỘ TRÌNH 53
- 5. Tạo Form THỐNG KÊ THEO SỐ XE Thêm nút IN CHI TIẾT vào form, khi nhấn nút sẽ gọi report Bảng thống kê theo đúng số xe hiển thị trên form 6. Tạo Form MALOTRINH Thêm nút IN CHI TIẾT vào form, khi nhấn nút sẽ gọi report Chi tiết lộ trình theo đúng lộ trình hiển thị trên form Bài tập Report Sử dụng CSDL QuanLyVanTai để tạo các Report như mẫu sau: 54
- Tương tự với các menu khác dùng để mở các form khác. Đề ôn tập 1 Câu 1 Thiết kế bảng , Tạo mối quan hệ, Nhập dữ liệu vào các bảng sau 1. Hoadon : (SOHD(Text, 3); NGAY(DateTime, Short Date); MA_CAYXANG(Text, 5). 2. Hanghoa : (MAHH(Text, 4); TENHANG(Text, 15); DONVITINH(Text, 10); DONGIA(Number, Single). 3. CT_banle : SOHD(Text, 3); MAHH(Text, 4); SOLUONG(N, Int) 4. Cayxang : MA_CAYXANG(Text, 5); TEN_CAYXANG(Text, 12); DIACHI (Text, 25). Lưu ý : Các từ khóa in đậm là khóa chính. Câu 2 Tạo Query thực hiện những yêu cầu sau : a. Quyery Q_TINHTIEN: Tính tiền trả khi mua hàng gồm các thông tin sau : SOHD; MAHH; TENHANG; DONVITINH; DONGIA; SOLUONG; THANHTIEN biết Thanhtien tính theo công thức : THANHTIEN = SOLUONG * DONGIA Với điều kiện nếu SOLUONG >=300 thì được giảm 5%. b. Quyery Q_CX_MAX: Thông tin danh sách những cây xăng bán nhiều tiền nhất : MA_CAYXANG; TEN_CAYXANG; DIACHI; TSTIEN (Tổng số tiền) 56
- Câu 3: Tạo Form tìm kiếm thông tin hàng hóa như mẫu (Các nút sử dụng Macro) Khi chọn mã cây xăng trong combo box: tên và địa chỉ được hiện lên trong các text box Tên cây xăng và Địa chỉ câu xăng theo mã cây xăng tương ứng đã chọn Khi nhấn nút tìm kiếm, thông tin của cây xăng đang hiện trên Form sẽ hiện ra dưới dạng query như sau: Khi nhấn nút thoát sẽ thoát form hiện hành. Câu 4: Tạo report HÓA ĐƠN như mẫu: Lưu ý: - TỔNG CỘNG = TỔNG THÀNH TIỀN - THUẾ = 10 % CỦA TỔNG CỘNG - PHẢI TRẢ = TỔNG CỘNG + THUẾ Câu 5: Tạo Form Hóa Đơn theo mẫu: (Các nút dùng Macro. Khi nhấn nút IN HÓA ĐƠN thì gọi Report trên câu 4) 57
- Câu 6: Tạo form chức năng xuất hiện đầu tiên khi mở chương trình (Dùng Macro) Gọi query Gọi query Q_TINHTIEN Q_TINHTIEN Gọi form TÌM KIẾM Gọi form HÓA ĐƠN Đề ôn tập 2 Sử dụng CSDL nhanvien.mdb để thực hiện các câu lệnh sau: Câu 1: Tạo query thống kê các nhân viên làm trưởng phòng, gồm các thuộc tính: Mã NV, Họ và Tên, Ngày Sinh, Giới tính (Nam/nữ), Trình Độ, Ngày vào Làm, Tên Phòng. Câu 2: 58
- Tạo query thống kê ngày nghỉ trong tháng 6/2001 của nhân viên tên “Phung”, gồm các thuộc tính: Mã NV, Họ và Tên, Ngày Sinh, Ngày Nghỉ, Tên Phòng. Câu 3: Tạo query tính số ngày nghỉ bệnh của nhân viên trong tháng 6/2001, gồm các thuộc tính: Mã NV, Họ và Tên, Tổng Ngày Nghỉ B75%, Tổng Ngày Nghỉ B100%, Tổng Ngày Phép Năm,Tổng Ngày Nghỉ Có Phép, Tổng Ngày Nghỉ Không Phép, Tổng Ngày Nghỉ. Câu 4: Tạo query tính tiền nghỉ bệnh của nhân viên trong tháng 6/2001, gồm các thuộc tính: Mã NV, Họ và Tên, Tổng Ngày nghỉ B100%, Tổng Ngày nghỉ B75%, Tổng tiền nghỉ B100%, Tổng tiền nghỉ B75%, Tổng tiền nghỉ bệnh - Tổng tiền nghỉ B100% = 150.000 * Tổng ngày nghỉ B100 - Tổng tiền nghỉ B75% = 150.000 * Tổng ngày nghỉ B75 *0.75 - Tổng tiền nghỉ bệnh = Tổng tiền nghỉ B100% + Tổng tiền nghỉ B75% Câu 5: Tạo Query tính tiền lương tháng 6/2001 gồm các thuộc tính sau: MaNV, HoVaTen, GioiTinh, MaPB, TongNgayNghi, SoNgayCong, LuongThang6, BaoHiemYte, BaoHiemXaHoi, ThucLanh - SoNgayCong = 26-TongNgayNghi - LuongThang6 = SoNgayCong *150.000 - BaoHiemYte = 1% * LuongThang6. - BaoHiemXaHoi = 5% * LuongThang6. - ThucLanh = LuongThang6 – BaoHiemYte – BaoHiemXaHoi. Câu 6: Tạo Report như hình 1: Thực lĩnh = Lương theo ngày công + TienNghiBenh Hình 1 Hình 2 Câu 7: 59
- Tạo From như hình 2 (Các nút dùng Macro) Thêm nút In bảng lương vào Form. Nút in bảng lương sẽ gọi report trong câu 6 với thông tin của người đang hiện trên Form. Đề ôn tập 3 Sử dụng CSDL nhanvien.mdb để thực hiện các câu lệnh sau: Câu 1: Tạo query thống kê các nhân viên có ngày nghỉ trong tháng 6/2001, gồm các thuộc tính: Mã NV, Họ và Tên, Ngày Sinh, Ngày Nghỉ, Lý Do Nghỉ. Câu 2: Tạo query thống kê các nhân viên có giờ tăng ca trong tháng 6/2001, gồm các thuộc tính: Mã NV, Họ và Tên, Ngày Tăng ca, Số giờ, Tên Phòng. Câu 3: Tạo Query tính tiền tăng ca trong tháng 6/2001 gồm các thuộc tính sau: MaNV, HoVaTen, Loại ca, Tổng giờ tăng ca , Giờ chuẩn, Tiền tăng ca - Tổng giờ tăng ca: là tổng số giờ nhân viên tăng ca theo từng loại ca. - Giờ chuẩn = Tổng giờ tăng ca *TYLE (Làm tròn 2 số thập phân) - Tiền tăng ca= Giờ chuẩn *150.000 (Làm tròn không có số lẻ) Câu 4: Tạo query tính giờ tăng ca trong tháng 6/2001 như Hình 1: 60
- Hình 1 Hình 2 Câu 5: Tạo Report như Hình 2 Câu 6: Tạo Report như Hình 3 Lương theo ngày công: - Số ngày công = 26 – Tổng ngày nghỉ - Lương theo ngày công = số ngày công * 150.000 TienBaoHiem: - BHXH = Lương theo ngày công * 5% - BHYT = Lương theo ngày công *1% - TienBaoHiem = BHXH+BHYT Thực lĩnh = Lương theo ngày công - TienBaoHiem Hình 3 Hình 4 Câu 7: Tạo Form NHANVIEN như hình 4 Nút in bảng lương sẽ gọi report phiếu lương (ở câu 5)với thông tin tương ứng trên Form Nút in bảng thống kê sẽ gọi report thống kê (ở câu 6)với thông tin tương ứng trên Form Đề ôn tập 4 Sử dụng CSDL chucvu.mdb để thực hiện các câu lệnh sau: 61
- Câu 1: Tạo query thống kê nhân viên gồm các thuộc tính sau: Mã NV, Họ và Tên, Ngày sinh, Chức vụ, Thâm niên công tác (Số năm làm việc tính theo ngày và tính tới ngày 1/1/2000 ), Tuổi (Tuổi tính theo ngàyvà tính tới ngày 1/1/2000 ) Câu 2: Tạo query thống kê số lượng nhân viên theo từng phòng và từng giới tính theo mẫu Câu 3: Tạo query tính lương của nhân viên gồm các thuộc tính sau: Mã NV, Họ và Tên, ThamNien, PhuCapTN, LuongHS, ThucLinh Biết: - Thâm niên : số năm công tác tính theo từng ngày tính tới ngày 1/1/2000 - PhuCapTN: chỉ tính cho người có thâm niên từ 5 năm trở lên, cứ mỗi 5 năm làm việc thì được hưởng 100.000đ không tính 5 năm đầu. - LươngHS: HSLuong * 820.000đ - ThucLinh: PhuCapTN + LươngHS Câu 4: Tạo query cho biết thông tin của nhân viên có thâm niên cao nhất trong cơ quan. Gồm các thuộc tính sau: MaNV, Họ và tên, Giới tính, NTNS, NgayBD, Thâm niên (Thời gian công tác tính theo năm) Câu 5: Tạo report Phiếu lương 01/01/2000 Với hệ số chức vụ tương ứng chức vụ hiện tại người đó đang giữ. Câu 6: Tạo Form Thông tin cá nhân Trong Form thêm nút in phiếu lương, gọi Report ở câu 5 với thông tin tương ứng với nhân viên trên form. 62
- Câu 7: Tạo Form Danh sách nhân viên 63
- Tài liệu tham khảo 1. Bài giảng Microsoft Access của Trường Đại Học Nông Lâm - Thành Phố Hồ Chí Minh - Trung Tâm Tin Học Ứng Dụng – Tài liệu lưu hành nội bộ 2. Hướng dẫn thực hành Microsoft Access của Mai Liên Khương 3. Giáo trình Microsoft Access 2000 của Nguyễn Sơn Hải 1. Giáo trình MS Access của Võ Trung – Hưng Đại Học Đà Nẵng – Trường Đại Học Bách Khoa – Khoa Công Nghệ Thông Tin 2. Giáo trình MS Access của Nguyễn Anh Khoa – Trung Tâm Tin Học 14 – Bà Triệu – Hà Nội 3. Giáo trình MS Access của Microsoft Office 2010 64