Giáo trình Lập trình quản lý Access - Trình độ: Cao đẳng - Trường Cao đẳng cơ giới Ninh Bình

doc 101 trang Gia Huy 16/05/2022 2740
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Lập trình quản lý Access - Trình độ: Cao đẳng - Trường Cao đẳng cơ giới Ninh Bình", để 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:

  • docgiao_trinh_lap_trinh_quan_ly_access_trinh_do_cao_dang_truong.doc

Nội dung text: Giáo trình Lập trình quản lý Access - Trình độ: Cao đẳng - Trường Cao đẳng cơ giới Ninh Bình

  1. BỘ NÔNG NGHIỆP VÀ PHÁT TRIỂN NÔNG THÔN TRƯỜNG CAO ĐẲNG CƠ GIỚI NINH BÌNH GIÁO TRÌNH MÔ ĐUN 24: LẬP TRÌNH QUẢN LÝ ACCESS NGHỀ: LẬP TRÌNH MÁY TÍNH TRÌNH ĐỘ: CAO ĐẲNG Ban hành kèm theo Quyết định số: /QĐ-CĐCGNB ngày tháng năm 2017 của Trường Cao đẳng Cơ giới Ninh Bình Ninh Bình, năm 2017 1
  2. TUYÊN BỐ BẢN QUYỀN Tài liệu này thuộc loại sách giáo trình nên các nguồn thông tin có thể được phép dùng nguyên bản hoặc trích dùng cho các mục đích về đào tạo và tham khảo. Mọi mục đích khác mang tính lệch lạc hoặc sử dụng với mục đích kinh doanh thiếu lành mạnh sẽ bị nghiêm cấm. 2
  3. LỜI GIỚI THIỆU Trong hệ thống kiến thức chuyên ngành trang bị cho sinh viên nghề Lập trình máy tính, mô đun góp phần cung cấp những nội dung liên quan đến việc xây dựng các ứng dụng về cơ sở dữ liệu. Các nội dung chính được trình bày trong tài liệu này gồm các bài: - Khởi đầu với Access - Xây dựng cơ sở dữ liệu - Truy vấn dữ liệu - Thiết lập giao diện - Thiết lập báo cáo Mặc dầu có rất nhiều cố gắng, nhưng không tránh khỏi những khiếm khuyết, rất mong nhận được sự đóng góp ý kiến của độc giả để giáo trình được hoàn thiện hơn. Ninh Bình, ngày tháng năm 2017 Tham gia biên soạn 1. Chủ biên – Th.S Nguyễn Xuân Khôi 2. Th.S Nguyễn Trung Cương 3. Th.S Nguyễn Anh Văn 3
  4. MỤC LỤC LỜI GIỚI THIỆU 2 Bài 1: Khởi đầu với Access 5 1. Giới thiệu Access. 5 2. Cách khởi động. 6 3. Tạo tệp Access mới 7 4. Môi trường làm việc 8 5. Mở tệp Access đã tồn tại 9 6. Thoát khỏi Access 9 Bài 2. Xây dựng cơ sở dữ liệu 10 1. Tạo cấu trúc các bảng dữ liệu 10 2. Thiết lập thuộc tính LookUp 21 3. Thiết lập quan hệ và các thuộc tính đảm bảo toàn vẹn dữ liệu 25 4. Nhập dữ liệu cho CSDL 29 5. Qui trình xây dựng một CSDL với Access 33 Bài 3. Truy vấn dữ liệu 37 1. Sử dụng Select Query 37 2. Sử dụng Total Query 45 3. Sử dụng Crosstab Query 47 4. Sử dụng Delete Query 49 5. Sử dụng Update Query 51 6 Sử dụng Make table Query 52 Bài 4. Thiết lập giao diện 57 1. Các khái niệm về Forms 57 2. Sử dụng Form Wizard 57 3. Sử dụng Form design view 61 4. Kỹ thuật Sub-Form 70 Bài 5. Thiết lập báo cáo 83 1. Các khái niệm về Report 83 2. Sử dụng report wizard 85 4. Tham số cho report 99 4
  5. GIÁO TRÌNH MÔ ĐUN Tên mô đun: Lập trình quản lý Access Mã mô đun: MĐ 24 Vị trí, tính chất, ý nghĩa và vai trò của mô đun: - Vị trí: Mô đun được bố trí sau các môn kỹ thuật cở - Tính chất: Là mô đun chuyên môn nghề. - Ý nghĩa và vai trò: Đây là môn học cơ sở ngành của các ngành liên quan đến công nghệ thông tin, cung cấp cho sinh viên các kiến thức cơ bản về ứng dụng quản lý cơ sở dữ liệu để làm nền tảng cho việc lập trình giải quyết các vấn đề cần thiết. Mục tiêu của mô đun: - Về kiến thức: + Trình bày được các bước cài đặt hệ quản trị CSDL Access; + Trình bày được các lệnh cơ bản của hệ quản trị CSDL Access. - Về kỹ năng: + Tạo được các bảng dữ liệu và liên kết giữa chúng; + Cập nhật được dữ liệu theo yêu cầu; + Kết xuất được dữ liệu theo các định dạng phù hợp; + Tạo được báo cáo. - Năng lực tự chủ và trách nhiệm: + Trình bày được yêu cầu, tiêu chuẩn, kết quả đối với các vị trí công việc; + Có khả năng tổ chức, thực hiện các nhiệm vụ và chịu trách nhiệm đối với kết quả công việc của mình. Nội dung của mô đun: Thời gian Số Tên các bài trong mô đun Tổng Lý Thực Kiểm TT số thuyết hành tra 1 Bài 1: Khởi đầu với Access 5 3 2 2 Bài 2: Xây dựng cơ sở dữ liệu 15 5 9 1 3 Bài 3: Truy vẫn dữ liệu 25 7 17 1 4 Bài 4: Thiết kế giao diện 25 7 17 1 5 Bài 5: Thiết lập báo cáo 10 3 7 Cộng 80 25 52 3 5
  6. BÀI 1: KHỞI ĐẦU VỚI ACCESS Mã bài: MĐ24-B01 Mục tiêu: - Trình bày được ứng dụng của access; - Thực hiện được các thao tác trên hệ quản trị cơ sở dữ liệu access; - Thực hiện đựợc các biện pháp an toàn cho máy tính, vệ sinh công nghiệp Nội dung chính: 1. Giới thiệu Access. Từ cuối những năm 80, hãng Microsoft đã cho ra đời hệ điều hành Windows, đánh dấu một bước ngoặt trong phát triển các ứng dụng phần mềm trên nền Windows (giao diện GUI- Graphical User Interface). Một trong những ứng dụng nổi bật nhất đi kèm lúc đó là bộ phần mềm tin học văn phòng Microsoft Office. Từ đó đến nay, bộ phần mềm này vẫn chiếm thị phần số 1 trên thế giới trong lĩnh vực tin học văn phòng. Ngoài những ứng dụng về văn phòng quen thuộc phải kể đến như: MS Word - để soạn thảo tài liệu; MS Excel - bảng tính điện tử; MS Powerpoint - để trình chiếu báo cáo; còn phải kể đến phần mềm quản trị cơ sở dữ liệu rất nổi tiếng đi kèm: MS Access. Đến nay phiên bản mới nhất là Access 2010. Toàn bộ nội dung giáo trình này, chúng tôi giới thiệu trên Access 2000. Về cơ bản, các phiên bản từ Access 97 trở lại đây cách sử dụng gần giống nhau. Mỗi phiên bản chỉ khác một số tính năng đặc biệt và một chút về giao diện. Do đó, khi học Access 2000, bạn đọc luôn có được những kiến thức cần thiết nhất để tiếp thu những phiên bản Access mới sau này cũng như để nhìn nhận và sử dụng tốt các phiên bản cũ hơn. Access làm được gì, và những ứng dụng của nó trong thực tế? - Access là một Hệ quản trị cơ sở dữ liệu quan hệ (RDMS- Relational Database Management System), rất phù hợp cho các bài toán quản lý vừa và nhỏ. Hiệu năng cao và đặc biệt dễ sử dụng- bởi lẽ giao diện sử dụng phần mềm này gần giống hệt một số phần mềm khác trong bộ MS Office quen thuộc như: MS Word, MS Excel; - Hơn nữa, Access còn cung cấp hệ thống công cụ phát triển khá mạnh đi kèm (Development Tools). Công cụ này sẽ giúp các nhà phát triển phần mềm đơn giản trong việc xây dựng trọn gói các dự án phần mềm quản lý qui mô vừa và nhỏ. Đặc biệt những ai muốn học phát triển phần mềm thì đây là cách 6
  7. dễ học nhất, nhanh nhất giải quyết bài toán này. - Đến đây có thể khẳng định được 2 ứng dụng chính của Access là : + Dùng để xây dựng hệ cơ sở dữ liệu (chỉ là phần cơ sở dữ liệu, còn phần phát triển thành phần mềm có thể dùng các công cụ khác để làm như : Visual Basic, Visual C, Delphi, .NET, ) + Có thể dùng để xây dựng trọn gói những phần mềm quản lý qui mô vừa và nhỏ. Access 2000 có gì mới so với các phiên bản cũ (Acces97)? - Phải thừa nhận giao diện sử dụng đã có những tiến bộ vượt bậc. Các thao tác sử dụng ít đi, đơn giản hơn và giao diện rất thân thiện; - Công nghệ truy cập dữ liệu ADO – ActiveX Data Objects hoàn toàn có thể thay thế công nghệ trước đây sử dụng trong Access là DAO – Data Access Objects bởi nhiều lý do cả về cách thức sử dụng lẫn những tối ưu về kỹ thuật. Chúng tôi sẽ giới thiệu kỹ công nghệ này trong Phần 2 cuốn giáo trình; - Ngôn ngữ lập trình VBA được cải tiến, đặc biệt bản MS Access 2000 Developer còn cung cấp công cụ để đóng gói dự án Access (tức là tạo bộ cài đặt mà khi sử dụng không cần phải gài đặt Access lên máy tính) - Có khả năng tạo các ứng dụng truy cập cơ sở dữ liệu thông quan giao diện web (web-base). Điều này chưa hề có trong các phiên bản trước đây. Tuy nhiên, khả năng này vần còn một số giới hạn, chưa thể thực sự mạnh như các công cụ chuyên nghiệp khác như: ASP, PHP, .NET, 2. Cách khởi động. Có khởi động Access theo nhiều cách: - Mở lệnh Start | Programs | Microsoft Access của Window; - Hoặc có thể nhấn kép chuột lên tên tệp có phần mở rộng .MDB với biểu tượng của Microsoft Access. Sau khi ra lệnh chạy chương trình Access, thông thường màn hình tiếp theo xuất hiện cho phép chọn cách làm việc: 7
  8. - Chọn Blank Access database để bắt đầu tạo một tệp Access mới (tạo mới tệp); - Hoặc Access database wizard, page, and project để tạo một CSDL theo mẫu có sẵn (không trình bày trong giáo trình này); - Hoặc Open an existing file để mở tệp Access đã tồn tại để làm việc tiếp. 3. Tạo tệp Access mới Một dự án Access (Access project) là một hoặc nhiều tệp Access nhằm giải quyết một công việc lớn nào đó. Khuôn khổ giáo trình này chỉ trình bày những dự án có 1 tệp. Tệp Access có phần mở rộng *.MDB (ngoài ra những tệp có phần mở rộng *.DBE cũng mở được nhưng chỉ có thể thực thi chứ không chỉnh sửa được cấu trúc). Có 5 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. Thông thường mỗi tệp Access cần phải làm việc trên tất cả các thành phần trên. Để bắt đầu tạo một tệp mới, chọn mục Blank Access database ở cửa sổ mục 2, tiếp theo nhấn OK, hộp thoại sau xuất hiện yêu cầu chọn nơi (thư mục) lưu trữ và đặt tên tệp Access: 8
  9. Hãy chọn nơi lưu trữ ở hộp Save in; gõ vào tên tệp ở mục File Name; nhấn vào nút Create để ghi lại thiết lập. Đến đây đã sẵn sàng sử dụng tệp Access vừa khai báo. 4. Môi trường làm việc Sau khi một tệp Access được mở, môi trường làm việc trên Access xuất hiện với những thành phần như sau: 9
  10. (1) - Hệ thống thực đơn (menu) và các thanh công cụ (Toolbar)- nơi thực hiện các lệnh khi cần; (2) - Cửa sổ tệp Access đang làm việc bao gồm 7 phần chính: Tables, Queries, Forms, Reports, Pages, Macros và Modules. Chúng ta sẽ lần lượt học cách làm việc trên từng phần này trong các chương tiếp theo. 5. Mở tệp Access đã tồn tại Mỗi tệp Access phải tạo mới duy nhất một lần, được mở ra làm việc và ghi lại trong những lần tiếp theo. Để mở một tệp Access đã tồn tại để làm việc, làm như sau: Bước 1: Từ môi trường Access gọi thực đơn: File | Open (hoặc nhấn nút Open trên thanh công cụ), hộp thoại Open xuất hiện: Bước 2: Tìm đến tệp Access cần mở trên hộp thoại Open bằng cách: - Tìm đến thư mục – nơi chứa tệp Access cần mở ở hộp Look in; - Tiếp theo chọn tệp Access cần mở trên danh sách và nhấn nút Open hoặc Enter. Đến đây cửa màn hình làm việc Access với tệp vừa mở xuất hiện để tiếp tục làm việc. 6. Thoát khỏi Access Khi không làm việc với Access, hãy ra lệnh thoát khỏi Access bằng một trong các cách: - Mở thực đơn File | Exit; - Nhấn tổ hợp phím nóng Alt + F4; - Hoặc sử dụng nút Close trên cửa sổ Access đang mở. 10
  11. BÀI 2. XÂY DỰNG CƠ SỞ DỮ LIỆU Mã bài: MĐ 24-B02 Mục tiêu: - Trình bày được cấu trúc của bảng, quan hệ, ràng buộc của bảng và dữ liệu; - Tạo được cấu trúc của bảng; - Nhập được dữ liệu cho các các mẩu tin; - Tạo được các quan hệ, ràng buộc dữ liệu, truy vấn dữ liệu; - Thực hiện đựợc các biện pháp an toàn cho máy tính, vệ sinh công nghiệp. 1. Tạo cấu trúc các bảng dữ liệu 1.1. CSDL Access. CSDL Access là một đối tượng bao gồm tập hợp các bảng dữ liệu, các kết nỗi giữa các bảng được thiết kế một cách phù hợp để phục vụ lưu trữ dữ liệu cho một ứng dụng quản lý dữ liệu nào đó. Ví dụ: CSDL Quản lý học sinh bao gồm tập hợp các bảng dữ liệu: HOCSINH, LOP, KHOI, MONHOC, DIEM được kết nối với nhau một cách phù hợp phục vụ lưu trữ dữ liệu cho ứng dụng quản lý học sinh một trường học. Toàn bộ cấu trúc CSDL quản lý học sinh trên Access được mô tả như sau: CSDL Quản lý bán hàng bao gồm tập hợp các bảng dữ liệu: HANG, KHACH, HOADON, HANGBAN được kết nối với nhau một cách phù hợp, phục vụ ứng dụng quản lý việc bán hàng tại một cửa hang. Sơ đồ cấu trúc CSDL này như sau: 11
  12. CSDL Quản lý lương cán bộ, bao gồm các bảng: PHONGBAN, CHUCVU và CANBO được kết nối với nhau phục vụ lưu trữ dữ liệu cho ứng dụng quản lý lương cán bộ một cơ quan. Cấu trúc CDSL này được biểu diễn như sau: CSDL Quản lý việc nhập-xuất vật tư một cửa hàng. Bao gồm các bảng: VATTU, KHACH, PHIEUNHAP, PHIEUXUAT, VATTU_NHAP, VATTU_XUAT được biểu diễn như sau: 1.2. Bảng dữ liệu. 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ữ những dữ liệu tác nghiệp cho ứng dụng. Một CSDL có thể có rất nhiều bảng, các bảng phải được thiết kế sao cho có thể lưu trữ được đầy đủ dữ liệu cần thiết, đảm bảo giảm tối đa tình trạng gây dư thừa dữ liệu (dư thừa dữ 12
  13. liệu được hiểu đơn giản là tình trạng lưu trữ những dữ liệu không cần thiết trên một số bảng. Tác hại của hiện tượng này sẽ gây: sai lệch dữ liệu tác nghiệp và làm tăng dung lượng dữ liệu không cần thiết); giảm tối đa dung lượng CSDL có thể, đồng thời tạo môi trường làm việc thuận lợi cho việc phát triển ứng dụng trong các bước tiếp theo. 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 và tập hợp các bản ghi. Mô tả một bảng dữ liệu trong trạng thái Datasheet (nhập, xem, sử dữ liệu): Mô tả một bảng dữ liệu trong trạng thái Design view (đang thiết kế cấu trúc): 13
  14. 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, tuy nhiên cũng có thể đổi lại tên bảng trên cửa sổ Database như đổi tên tệp dữ liệu trên cửa sổ Windows Explorer. 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. 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. Mỗi trường dữ liệu sẽ 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, trường khoá, độ lớn, định dạng, Mỗi trường dữ liệu phải được định kiểu dữ liệu. Trong Access, trường dữ liệu có thể nhận một trong các kiểu dữ liệu sau: 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 ký tự xâu 4 Yes/No 1 bytes 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) 14
  15. 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. Bản ghi (Record) Mỗi dòng dữ liệu của bảng được gọi một 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. Trường khoá (Primary key) Trường khoá có tác dụng phân biệt giá trị các bản ghi trong cùng một bảng với nhau. Trường khoá có thể chỉ 01 trường, cũng có thể được tạo từ tập hợp nhiều trường (gọi bộ trường khoá). Ví dụ: (1)- bảng THISINH của CSDL thi tuyển sinh, trường khoá là SoBaoDanh. Vì mỗi thí sinh có thể nhiều trường có giá trị hệt nhau, nhưng SoBaoDanh thì duy nhất. (2)- bảng CANBO trường MaCanBo sẽ là trường khóa vì không thể tồn tại 2 cán bộ nào trong bảng này trùng MaCanBo (3)- bảng HANGBAN của CSDL Quản lý bán hàng, 2 trường hangID và hoadonID là một bộ trường khoá. Vì không thể trên một hoá đơn bảng hàng nào có bản một mặt hàng nào đó ghi lặp lại 2 lần. 1.3. 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 và liên kết 1-n (một- nhiều) Liên kết 1-1 là: 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: 15
  16. Mô tả dữ liệu 2 bảng này như sau: Liên kết 1-n là: 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: Có thể tham khảo mỗi cha có thể có nhiều con qua 2 bảng sau: 16
  17. Hoặc xem theo một kiểu khác: Mục này hướng dẫn cách thiết kế cấu trúc một bảng dữ liệu trên CSDL Access. Để có thể làm tốt được công việc này, đề nghị học viên nên tuân thủ theo thứ tự các bước sẽ liệt kê dưới đây. Minh hoạ này hướng dẫn cách tạo cấu trúc bảng HANG bao gồm các trường hangID, tenhang, donvi, dongia. Bước 1: Khởi động trình thiết kế cấu trúc bảng ở chế độ Design View Ở thẻ Tables, nhấn nút New, chọn Design View, nhấn OK Hoặc nhấn trên thẻ Tables. Hộp thoại thiết kế cấu trúc một bảng xuất hiện: 17
  18. Bước 2: Khai báo danh sách tên các trường của bảng: bằng cách gõ danh sách tên các trường lên cột Field Name của cửa sổ thiết kế. Chú ý: tên trường không nên chứa dấu cách (space), chữ tiếng Việt có dấu. Sau khi gõ vào danh sách tên các trường của bảng HANG, hộp thoại thiết kế sẽ có dạng: Bước 3: Khai báo kiểu dữ liệu cho các trường của bảng, bằng cách chọn kiểu dữ liệu cho từng trường ở cột Data Type tương ứng. Sau khi chọn xong kiểu dữ liệu cho các trường, hộp thoại thiết kế sẽ có dạng: 18
  19. Để chọn kiểu dữ liệu, có thể dùng chuột chọn kiểu dữ liệu từ hộp thả; mặt khác cũng có thể nhấn ký tự đầu tiên của kiểu dữ liệu cần chọn mỗi khi định vị đến ô Data Type cần làm việc. Ví dụ: Nhấn Sẽ được kiểu Nhấn Sấ đưấc kiấu A Autonumber M Memo N Number C Currency T Text H Hyperlink Y Yes/No O OLE D Date/Time Bước 4: Thiết lập trường khoá cho bảng (những bảng không có trường khoá có thể bỏ qua bước này). - 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á; - Mở thực đơn Edit|Primary key để thiết lập thuộc tính khoá cho các trường vừa chọn. Cũng có thể ra lệnh này bằng cách nhấn nút Primary key trên thanh công cụ. 19
  20. Sau khi thiết lập khoá, những trường khoá sẽ có biểu tượng như sau: Biểu tượng của trường khoá Bước 5: Lưu lại cấu trúc bảng. Nhấn tổ hợp phím Alt + S hoặc nhấn nút Save trên thanh công cụ, hộp thoai yêu cầu ghi tên cho bảng xuất hiện: Hãy gõ tên bảng và nhấn OK. Đặc biệt: - Với những bảng không thiết lập trường khoá, trong quá trình ghi lại cấu trúc bảng, máy tính sẽ hỏi: Nhấn Yes- máy tính sẽ tạo thêm một trường mới có tên ID và thiết lập trường này làm khoá. Nếu không muốn như vậy hãy nhấn No; nhấn Cancel để huỷ lệnh cất. - 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. Mỗi trường dữ liệu được khai báo trong cửa sổ trên đều có thể thiết lập được rất nhiều các thuộc tính tuỳ thuộc kiểu dữ liệu trường đó đã nhận. Các thuộc tính này có thể thiết lập tại phần Tập hợp các thuộc tính của các trường như đã trình bày ở trên. Dưới đây là danh sách một số các thuộc tính hay được sử dụng. Thuộc tính 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. 20
  21. Đố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. 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 Đố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. Thuộc tính Format: Để thiết lập định dạng dữ liệu khi hiển thị. Trường này áp dụng cho hầu hết các kiểu dữ liệu trừ ra kiểu: Memo, OLE, Yes/No Thuộc tính Input Mark: Thiết lập mặt nạ nhập dữ liệu cho các trường. Kiểu này có thể áp dụng cho các loại trường kiểu Text, Number, Datetime, Currency. Thuộc tính Default Value: Để thiết lập giá trị ngầm định cho trường mỗi khi ra lệnh thêm mới một bản ghi. Ví dụ: Trường số lượng mỗi khi thêm một bản ghi mới, giá trị trường này tự động là 1. Khi đó phải thiết lập thuộc tính Default Value của trường này là 1. Thuộc tính Caption: Thiết lập tiêu đề cột mà trường đó 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. Thuộc tính 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ụ: trường NgaySinh của học sinh phải nhập vào những ngày >= 1/1/1980 21
  22. chẳng hạn. Khi đó ở thuộc tính Validation Rule của trường Ngaysinh hãy gõ vào: >=#1/1/1980# Thuộc tính 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. Còn một số các thuộc tính khác xin mời tham khảo qua phần Help của Access. 2. Thiết lập thuộc tính LookUp Qua cách nhập dữ liệu cho bảng có quan hệ nhiều trên CSDL ta thấy việc nhập dữ liệu cho trường tham gia liên kết của bảng nhiều đòi hỏi phải có độ chính xác với dữ liệu trên bảng quan hệ 1 (phải nhớ mã để nhập). Trong thực tế với những danh mục lên đến hàng trăm, thậm chí nhiều hơn nữa thì việc nhớ mã để nhập dữ liệu quả là khó khăn: hoặc gõ sai mã, nguy hiểm hơn gõ đúng nhưng nhầm mã. Thuộc tính LOOKUP sẽ giúp giải quyết phần nào việc khó khăn trong nhập dữ liệu trên các bảng quan hệ nhiều như vậy. Thuộc tính LOOKUP được thiết lập tại trường tham gia liên kết trên bảng có quan hệ nhiều sang trường tham gia liên kết của bảng có quan hệ 1. Ví dụ: Với CSDL Quản lý bán hàng thì: - Trường khachID của bảng HOADON phải thiết lập thuộc tính LOOKUP sang trường khachID của bảng KHACH; - Trường hangID của bảng HANGBAN phải thiết lập thuộc tính LOOKUP sang trường hangID của bảng HANG; - Trường hoadonID của bảng HANGBAN phải thiết lập thuộc tính LOOKUP sang trường hoadonID của bảng HOADON. Thông thường, ứng với mỗi quan hệ 1-∞ đã được thiết kế cần phải thiết lập thuộc tính LOOKUP cho trường tham gia liên kết từ bảng quan hệ 1 sang trường tham gia liên kết của bảng quan hệ nhiều. Một trong các cách thiết lập thuộc tính này đơn giản nhất là trình LookUp Wizard của Access. Dưới đây là 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: 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: 22
  23. Hộp thoại Lookup Wizard xuất hiện: 23
  24. Hộp thoại này hỏi Dữ liệu để đưa vào danh sách chọn lấy từ đâu? Trong trường hợp này danh sách dữ liệu để chọn lấy từ bảng KHACH, nên chọn mục I want the lookup column to look up the values in a table or query. Nhấn Next để tiếp tục. Bước 3: Chọn dữ liệu cho danh sách: Hộp thoại trên trả lời câu hỏi: Bảng (query) nào chứa dữ liệu cần đưa vào danh sách?. Trong trường hợp này lấy dữ liệu từ bảng KHACH nên mục View chọn Tables; và chọn bảng KHACH. Chọn xong nhấn Next, hộp thoại sau xuất hiện: 24
  25. Hộp thoại này trả lời câu hỏi: Giá trị những trường nào của bảng (query) đã chọn sẽ được hiển thị trên danh sách? Hãy dùng các nút >, >>, <, << để đưa 2 trường khachID và tenkhach từ danh sách Available Fields: (danh sách các trường có thể chọn) sang danh sách Selected Fields: (danh sách các trường đã chọn). 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. Chọn xong nhấn Next để tiếp tục: Nếu muốn ẩn mã khách khi chọn dữ liệu hạy chọn (checked) hộp , nếu không thì bỏ qua; Nhấn Next để tiếp tục. 25
  26. Cuối cùng nhấn Finish để kết thúc tiến trình Lookup Wizard. Khi đó hộp thoại yêu cầu ghi lại cấu trúc bảng xuất hiện: Hãy nhấn Yes để đồng ý 3. Thiết lập quan hệ và các thuộc tính đảm bảo toàn vẹn dữ liệu Một bước quan trọng trong xây dựng CSDL Access là thiết lập quan hệ các bảng trong CSDL. Làm được điều này bạn sẽ gặp được rất nhiều thuận lợi trong quá trình sử dụng các trình Wizard và Design View trong Access sau này. Bước 1: Mở cửa sổ thiết lập quan hệ bởi thực đơn: 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): Cách đưa các bảng lên cửa sổ thiết lập quan hệ (Database) như sau: - Chọn bảng cần tham gia thiết lập quan hệ (thường thì chọn tất cả) ; - Nhấn nút Add; - Chọn xong toàn bộ nhấn Close để đóng cửa sổ. 26
  27. 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: Trong trường hợp muốn thiết lập các thuộc tính đảm bảo toàn vẹn dữ liệu (Enforce Referential Integrity) cho quan hệ hãy thực hiện chọn (checked) đảm bảo toàn vẹn dữ liệu khi xoá dữ liệu giữa 2 bảng liên quan. Khi đó, nếu một bản ghi ở bảng có quan hệ 1 bị xoá, toàn bộ các bản ghi có quan hệ với bản ghi hiện tại sẽ được tự động xoá ở bảng có quan hệ nhiều (nếu xoá 1 CHA, toàn bộ các con của cha đó sẽ tự động bị xoá khỏi bảng CON); đảm bảo toàn vẹn dữ liệu khi cập nhật dữ liệu giữa 2 bảng liên quan. Khi đó, nếu giá trị trường khoá liên kết ở bảng 1 bị thay đổi, toàn bộ giá trị trường khoá liên kết ở bảng nhiều cũng bị thay đổi theo. Hộp Relationship Type: cho biết kiểu quan hệ giữa 2 bảng đang thiết lập: - One – To – One Kiểu 1-1 - One – To – Many Kiểu 1-∞ - Indeterminate Không xác định được kiểu liên kết 27
  28. 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 Khoá phụ (hoặc 2 Khoá chính 1-n không khoá) Khoá phụ (hoặc Không xác định được kiểu 3 Khoá phụ không khoá) liên kết Không xác định được kiểu 4 Không khoá Không khoá liên kết Chú ý: - Khi hộp Relationships Type chỉ Indeterminate có nghĩa là quan hệ đang thiết lập không đúng về cấu trúc khoá của 2 bảng (quan hệ sai); - Trong trường hợp thiết lập các thuộc tính đảm bảo toàn vẹn dữ liệu nếu gặp phải hộp thoại thông báo lỗi: Lỗi này do một số dữ liệu đang tồn tại trong bảng quan hệ ∞ không thoả mãn với bảng quan hệ 1. Hiểu đơn giản là: có một số mặt hàng khai báo trong bảng HANGBAN chưa có trong trong danh mục hàng (bảng HANG)Æ như vậy là không hợp lý, không thoả mãn các điều kiện về toàn vẹn dữ liệu giữa 2 bảng này. - Khi gặp phải lỗi sau đây khi kết nối giữa 2 bảng: Tức là 2 trường tham gia kết nối không cùng kiểu dữ liệu. 28
  29. Ví dụ: một trường kiểu Number, trường kia kiểu Text; hoặc một trường kiểu Text, trường kia kiểu Date/Time - đều bị sai vì không cùng kiểu dữ liệu. 4. Nhập dữ liệu cho CSDL Nhập dữ liệu là yêu cầu bắt buộc đối với bất kỳ một ứng dụng nào. Dữ liệu có thể được nhập vào CSDL bằng nhiều con đường khác nhau. Trong phần này sẽ trình bày cách nhập dữ liệu từ bàn phìm vào trực tiếp các bảng dữ liệu trong Access. Đứng trước một bảng dữ liệu, có rất nhiều thao tác cần xử lý, ví dụ: sắp xếp bảng, tìm kiếm các bản ghi, xoá bản ghi nào đó, Nội dung phần này trình bày cách sử dụng một số thao tác đó. 4.1. Xoá bản ghi Xoá bản ghi là thao tác xoá bỏ một số bản ghi ra khỏi bảng. Với bảng dữ liệu đang mở có thể thực hiện 2 bước sau để xoá các bản ghi: Bước 1: Chọn những bản ghi cần xoá. Có thể chọn một hoặc nhiều bản ghi bằng cách dùng chuột đánh dấu đầu dòng những bản ghi cần chọn; Bước 2: Ra lệnh xoá bằng cách: mở thực đơn 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á. 4.2. Sắp xếp dữ liệu Sắp xếp là việc thay đổi thứ tự hiển thị một bảng dữ liệu theo một trật tự nào đó. Kết quả của việc sắp xếp giúp người dùng có thể quan sát được tốt hơn dữ liệu trên bảng, tất nhiên muốn quan sát bảng dữ liệu theo trường nào phải thực hiện sắp xếp bảng theo dữ liệu trường ấy. Cách sắp xếp dữ liệu trên bảng đang mở như sau: Bước 1: Đặt con trỏ lên trường (cột) muốn sắp xếp; 29
  30. 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 hoặc - sắp xếp giảm dần. Bạn sẽ thu được kết quả như mong muốn. 4.3. Lọc dữ liệu Lọc dữ liệu là việc lọc ra những bản ghi trên bảng có cùng một số giá trị. Kết quả việc lọc dữ liệu sẽ giúp người dùng làm việc một cách hiệu quả trên tập hợp các bản ghi họ mong muốn. 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. Nếu cứ lần mò xem ai là nữ rồi nhập 100,000 cho cột thưởng sẽ là rất lâu. Nếu làm theo cách sau: Bước 1: Lọc ra danh sách là các cán bộ nữ; Bước 2: Nhập 100,000 cho tất cả các bản ghi đã lọc. Như vậy chắc chắn những cán bộ đang hiển thị (sau khi đã lọc) đều là chị em phụ nữ, không bỏ xót ai mà cũng không nhầm một người nam nào được lọt vào danh sách thưởng! Các bước để lọc dữ liệu trên một bảng đang mở như sau: 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ụ: + Gõ >=10 - để lọc ra những bản ghi có giá trị trường đang thiết lập lọc lớn hơn hoặc bằng 10; + Gõ <>3 - lọc ra những bản ghi có giá trị trường đang lọc khác 3, + Đặc biệt: giá trị trống, rỗng được miêu tả là Null; + Lọc ra những người tên Nam gõ như sau Like '*Nam'; + Lọc ra giá trị trong khoảng 10 đến 15 gõ như sau: Between 10 30
  31. And 15 (tham khảo toán tử Like và Between ở chương sau- Queries). 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: 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 * Lỗi thứ nhất Lỗi do: Bạn đã 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, lỗi này sẽ xuất hiện. 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. Lỗi thứ 2: Lỗi do: Bạn không nhập giá trị hoặc để trống giá trị trường khoá. Đã là trường khoá luôn yêu cầu phải nhập dữ liệu cho mỗi bản ghi. 31
  32. Khắc phục: phải nhập đầy đủ giá trị cho trường khoá. Lỗi thứ 3: Lỗi do: Giá trị trường khoá trùng nhau. Giá trị trường khoá vừa nhập vào đã trùng với giá trị của một 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á. Lỗi thứ 4: Lỗi 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. Lỗi thứ 5: Lý do: Lỗi do thực hiện một thao tác vi phạm các nguyên tắc đảm bảo toàn vẹn dữ liệu. Ví dụ: Bạn đã 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. Tham khảo cách khắc phục lỗi này ở mục 5: thuộc tính LookUp. 5. Qui trình xây dựng một CSDL với Access Đến đây chúng tôi có thể khuyến cáo một qui trình tốt để xây dựng một CSDL Access theo thiết kế sẵn có : Bước 1: Lần lượt xây dựng cấu trúc từng bảng dữ liệu trong CSDL. 32
  33. 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 trường khoá 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, - Ghi tên bảng Bước 2: Lần lượt thiết lập thuộc tính LOOKUP cho các trường một cách phù hợp. Mỗi quan hệ trên bảng thiết kế sẽ cần một thao tác thiết lập thuộc tính LOOKUP (sử dụng trình LookUp Wizard) từ trường trên bảng quan hệ nhiều sang trường bảng quan hệ một; Bước 3: Thiết lập các thuộc tính đảm bảo toàn vẹn dữ liệu cần thiết cho các quan hệ tại cửa sổ Relationships (menu Tool | Relationships hoặc nhấn nút trên thanh công cụ); Bước 4: Thực hiện nhập dữ liệu cho các bảng nếu cần. Chú ý: bảng có quan hệ 1 phải được nhập dữ liệu trước bảng có quan hệ nhiều. Bài tập áp dụng 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; trường khoá; 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: + 4 phòng ban; + 5 loại chức vụ; 33
  34. + 20 hồ sơ cán bộ. 2. 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; trường khoá; 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. 3. 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; trường khoá; 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 tác giả; + 3 nhà xuất bản; + 3 danh mục sách; + 20 đầu sách. 34
  35. 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; trường khoá; 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: + 10 môn học phổ thông; + 3 khối học; + 15 lớp chia đều cho 3 khối; + 30 học sinh; + Và nhập điểm 2 học kỳ cho học sinh của một lớp nào đó. 35
  36. BÀI 3. TRUY VẤN DỮ LIỆU Mã bài: MĐ 24-B03 Mục tiêu: - Trình bày được các thành phần và các thuộc tính của đối tượng trong biểu mẫu; - Tạo được các biểu mẫu nhập dữ liệu theo yêu cầu; - Thực hiện đựợc các biện pháp an toàn cho máy tính, vệ sinh công nghiệp. 1. Sử dụng Select Query Select query là loại truy vấn dùng trích - lọc - kết xuất dữ liệu từ nhiều nguồn khác nhau từ CSDL ra một bảng kết quả. Ví dụ: - Đưa ra thông tin chi tiết bảng lương tháng 8; - Đưa ra danh sách cán bộ là Đảng viên; - Đưa ra thông tin chi tiết về các hoá đơn bán ra trong ngày hôm nay; - Đưa ra doanh thu bán hàng của một tháng nào đó; - Tất cả những yêu cầu dạng như vậy (đưa ra một danh sách kết quả) đều có thể sử dụng SELECT query để đáp ứng. Mỗi yêu cầu xử lý dữ liệu cần phải tạo ra một Select query đáp ứng; mỗi query sẽ có một tên gọi (như cách đặt tên bảng dữ liệu); query sau khi đã tạo ra đều có thể chỉnh sửa lại được cấu trúc cũng như nội dung; qui trình để đáp ứng mỗi yêu cầu trên như sau: tạo một query đáp ứng được các yêu cầu Æ thi hành query đã tạo để thu nhận kết quả. Tiếp theo minh hoạ qui trình các bước để tạo một select query đáp ứng yêu cầu đơn giản nhất: Từ CSDL Quản lý lương cán bộ, hãy đưa ra bảng lương cán bộ với những thông tin sau: canboID, hoten, ngaysinh, tencv, luongchinh, phucapcv, thuclinh. Trong đó: luongchinh = hesoluong * 290000 Thuclinh = luongchinh + phucapcv Phân tích yêu cầu: (1). Thông tin yêu cầu đòi hòi từ nhiều bảng khác nhau (bảng CANBO với các cột: canboID, hoten, ngaysinh; bảng CHUCVU với các cột tencv, phucapcv); 36
  37. (2). Có những cột thông tin đã có sẵn trên CSDL (5 cột kể trên) nhưng một số cột yêu cầu phải được tính bởi biểu thức: cột luongchinh và cột thuclinh. Bước 1: Ra lệnh tạo một Select query mới bằng cách: kích hoạt thẻ Queries, nhấn nút New, chọn Design View, nhấn Ok (hình dưới): Hoặc nhấn đúp chuột lên biểu tượng Create query in Design view trên màn hình: Bước 2: Chọn những bảng có chứa dữ liệu liên quan lên màn hình thiết kế query từ cửa sổ Show Table (không thấy cửa sổ này nhấn nút Show table trên thanh công cụ): 37
  38. Hãy chọn các bảng có liên quan (bảng CANBO và bảng CHUCVU); chọn xong nhấn Add và nhấn Close. Khi đó màn hình thiết kế query xuất hiện: Bước 3: Khai báo những thông tin cần thiết cho query: Dòng Field: là nơi khai báo danh sách các thông tin (cột dữ liệu) của bảng kết quả. Có 2 loại thông tin bài toán yêu cầu: thông tin có sẵn từ các trường trên CSDL như canboID, hoten, tencv, phucapcv và thông tin phải được tính theo một biểu thức nào đó như: luongchinh và thuclinh. Muốn hiển thị trường (field) nào lên query, chỉ việc nhấn đúp chuột lên tên trường đó hoặc dùng chuột kéo tên chúng từ các bảng lên dòng Field. Hãy dùng phương pháp này để đưa 4 trường canboID, hoten, ngaysinh và phucapcv lên dòng Field. Với 2 cột luongchinh và thuclinh phải đưa vào query bằng cách tạo một cột mới với một tên gọi được tính bằng một trên dòng Field theo cú pháp như sau: : 38
  39. Tên cột mới Dấu ngăn cách Biểu thức tính Ví dụ: Luongchinh: hesoluong * 290000 để tạo thêm cột luongchinh mới. Thuclinh: luongchinh + phucapcv để tạo thêm cột thuclinh mới. Cuối cùng, màn hình thiết kế query như sau: Có thể ghi query lại với một tên gọi khi ra lệnh cất Alt + S Bước 4: Sử dụng query vừa tạo. Một query sau khi đã tạo xong có thể: (1) Kích hoạt chúng để lấy kết quả bằng cách: nhấn đúp chuột lên tên query. Nếu đang trong chế độ thiết kế (Design view), nhấn nút View trên thanh công cụ hoặc nhấn phải chuột lên Query đang thiết kế chọn . Bạn sẽ xem được kết quả trả về của query và có thể thao tác bảng dữ liệu này như trên một Table (xem mục 4.2, Phần 1- Tạo CSDL): (2)Sửa lại được cấu trúc thiết kế query khi chọn chúng và nhấn nút Design. Một số thiết lập khác cho Query Dòng Sort: để thiết lập thứ tự sắp xếp dữ liệu trên Query. Muốn sắp xếp dữ liệu cho trường nào, thiết lập thuộc tính Sort cho trường ấy. Có 2 giá trị cho 39
  40. thuộc tính Sort: Ascending - sắp xếp tăng dần và Descending - sắp xếp giảm dần. Trường nào đứng trước sẽ được thứ tự sắp xếp trước. Dòng Show: để chỉ định hiển thị hay không hiển thị dữ liệu trường đó ra bảng kết quả. Nếu chọn (checked)- dữ liệu sẽ được hiển thị ra bảng kết quả. Chú ý: Có 2 lỗi hay mắc phải: + Lỗi gõ sai biểu thức: Nguyên nhân gây ra lỗi này là rất nhiều, có thể liệt kê ra đây một số tình huống: Tình huống 1: Có thể một trong số tên các trường bạn gõ trong biểu thức có chứa dấu cách hoặc các ký tự đặc biệt. Ví dụ: trường hesoluong của bạn là he so luong thì phải gõ như sau: [he so luong] – thêm dấu móc vuông vào 2 đầu của tên trường; Tình huống 2: Sai ký pháp lô gíc của biểu thức: do viết thừa hoặc thiếu các toán tử, toán hạng, hoặc các dấu mở đóng ngoặc không khớp ; + Gõ không đúng tên trường trong biểu thức: 40
  41. Lỗi này xảy ra khi bạn đã gõ sai tên trường. Tên hiển thị trên hộp thoại (phucap cv) máy tính không hiểu, có thể tên đúng của trường này là phucapcv. Bạn phải lần tới biểu thức có chứa tên trên và kiểm tra sửa cho đúng với tên trường có trong CSDL. Lỗi này hay xảy ra khi thiết kế bảng đặt tên các trường có chứa dấu cách! Khác với bảng (Tables), Queries cung cấp một khả năng lọc dữ liệu khá hoàn chỉnh; Có thể lọc ra những dữ liệu theo những điều kiện phức tạp hơn, đặc biệt có thể chấp nhận những giá trị lọc là các tham biến. Để lọc dữ liệu, bạn phải thiết lập điều kiện đặt lọc lên vùng Criteria của queries (trong chế độ đang thiết kế). Các điều kiện nằm trên cùng một dòng Criteria sẽ được nối với nhau bởi toán tử AND (và); mỗi dòng Criteria sẽ được nối với nhau bởi toán tử OR (hoặc). Xét các ví dụ sau thực hiện lọc trên query bảng lương vừa được tạo ra: Ví dụ 1: Lọc ra những cán bộ là trưởng phòng có thực lĩnh <=1,000,000 đ 41
  42. Ví dụ 2: Lọc ra những cán bộ là Trưởng phòng mà không phải là Đảng viên hoặc những cán bộ Nữ là Đảng viên: Ví dụ 3: Lọc ra những cán bộ có tên là Nam. Chú ý: Tên chỉ là một phần của trường Hoten: Toán tử LIKE để biểu diễn những giá trị mang tính tương đối (có thể chỉ giống một phần giá trị thực). Cú pháp biểu diễn toán tử này như sau: Like ‘ ’ Trong có thể chứa hằng (Nam) và các ký tự đại diện. Có 2 ký tự đại diện là: - Ký tự * để biểu diễn bất kỳ giá trị nào; - Ký tự ? để biểu diễn một ký tự bất kỳ. Một số ví dụ minh hoạ toán tử LIKE: - Like ‘Nguyễn*’ lọc ra những người họ nguyễn. 6 ký tự đầu là Nguyễn, các ký tự còn lại là thoải mái; - Like ‘*Đức*’ lọc ra những người có Họ hoặc Đệm hoặc Tên là Đức; - Like ‘*/*/1980’ lọc ra những người sinh năm 1980; - Like ‘*/11/*’ lọc ra những người sinh tháng 11; - Like ‘*/*/198?’ lọc ra những người sinh từ năm 1980 đến năm 1989; Ví dụ 4: Lọc ra những cán bộ có 2,000,000>= Thuclinh >=1,000,000: 42
  43. Toán tử BETWEEN để lọc ra các giá trị nằm trong một khoảng nào đó. Thường giải quyết các yêu cầu lớn hơn hoặc bằng bao nhiêu và nhỏ hơn hoặc bảng bao nhiêu? Cú pháp toán tử Between như sau: Between And Cả 4 ví dụ trên đều đặt lọc theo các tham trị (lọc cứng). Trong trường hợp sử dụng các tham biến vào điều kiện lọc, xin tiếp tục theo dõi hướng dẫn dưới đây: Muốn thiết lập giá trị đặt lọc nào là tham biến bạn làm như sau: [Gõ một lời nhắc trong ngoặc vuông] tại đúng vị trí tham số cần thiết lập. Ví dụ: Lọc ra danh sách các cán bộ phòng ban nào đó, làm như sau: Khi thi hành query, một hộp thoại yêu cầu gõ vào tham số cần lọc: Hãy gõ vào Tên phòng ban cần xem. Việc thiết lập tham số kiểu này không giới hạn trên một query. 2. Sử dụng Total Query Tổng hợp – là phép xử lý dữ liệu khá phổ biến. Trong Access, query là một trong những công cụ xử lý khá tốt việc này. Total query là một điển hình. Hãy xét một số yêu cầu tổng hợp dữ liệu như sau: 43
  44. Tất cả những yêu cầu trên đều có thể được đáp ứng bằng các TOTAL query. Dưới đây sẽ hướng dẫn cách tạo Total query. Ví dụ: tạo query đưa ra bảng tổng hợp Tenchucvu, Tổng số CB (query thứ 2); Bước 1: Tạo một select query với đầy đủ các thông tin liên quan bảng tổng hợp: 44
  45. Bước 2: Tuỳ chọn Total query bằng cách mở thực đơn View | Total hoặc nhấn nút Total trên thanh công cụ; Bước 3: Thiết lập các tuỳ chọn Total cho các trường một cách phù hợp như sau: - Vì bài toán yêu cầu tổng hợp thông tin theo từng loại chức vụ, nên Total của trường Tenchucvu là Group By; - Trường canboID dùng để đếm số cán bộ từng chức vụ, nên chọn phép tổng hợp là Count. Đến đây đã tạo xong query và có thể thi hành để thu nhận kết quả. Ngoài phép Count để đếm, Total query còn cung cấp một số phép tổng hợp khác như: Sum: tính tổng; AVG: tính trung bình cộng; Max: xác định giá trị lớn nhất; Min: xác định giá trị nhỏ nhất 3. Sử dụng Crosstab Query Trên thực tế còn rất nhiều các yêu cầu tổng hợp khác mà Total query không thể đáp ứng được. Nhiều trong số đó như là: 45
  46. Yêu cầu tổng hợp dữ liệu là các tiêu đề dòng và cột! `Tất cả những yêu cầu dạng trên có thể sử dụng CROSSTAB query để đáp ứng. Trước khi tìm hiểu cách tạo Crosstab query, chúng ta hãy tìm hiểu cấu trúc một Crosstab, được minh hoạ bởi hình sau: Column heading Row 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, Các bước để tạo một Crosstab query. Ví dụ tạo query đưa ra được bảng tổng hợp sau: 46
  47. Bước 1: Tạo một select query với đầy đủ các trường có liên quan đến phép tổng hợp (không thừa và cũng không thể thiếu một trường nào) như sau: Bước 2: Ra lệnh chọn kiểu Crostab query bằng cách mở thực đơn Queries | Crosstab Query; Bước 3: Thiết lập các thuộc tính Total cũng như Crosstab cho các trường phù hợp như sau: Cụ thể: Tên trường Thuộc tính Total Thuộc tính Crosstab Tenphongban Group By Row Heading Tenchucvu Group By Column Heading canboID Count Value 47
  48. 4. Sử dụng Delete Query Delete Query là một loại Action Query (query hành động). Nó có thể gây thay đổi dữ liệu trong CSDL. Trong trường hợp này, Delete query dùng để xoá các bản ghi từ CSDL thoả mãn những điều kiện nào đó. Dưới đây là hướng dẫn tạo một Detele query xoá đi những cán bộ đến tuổi nghỉ hưu ra khỏi CSDL Quản lý lương cán bộ. Khi query này thi hành, danh sách các cán bộ đến tuổi hưu sẽ bị xoá khỏi bảng canbo. Bước 1: Tạo một Select query như sau: Bước 2: đổi query hiện hành thành Delete query bằng cách mở thực đơn Queries | Delete Query 48
  49. Để thi hành việc xoá cán bộ, nhấn nút Run trên thanh công cụ. Khi đó một hộp thoại cảnh báo xuất hiện: Nhấn Yes để đồng ý xoá đi các bản ghi (bản ghi đã xoá không thể phục hồi lại được); nhấn No để huỷ bỏ lệnh. Phải cẩn trọng trước khi quyết định lệnh xoá dữ liệu. 5. Sử dụng Update Query Update query dùng cập nhật dữ liệu một số trường nào đó trong CSDL. Giống với Delete query, Update query là loại query hành động, làm thay đổi nội dung dữ liệu trên CSDL. Bước 1: Tạo một query và có chứa bảng canbo và chuyển thành Update query bằng cách mở thực đơn Queries | Update query; hộp thoại thiết kế query như sau: Bước 2: Thiết lập các trường cần cập nhật dữ liệu bằng cách: - Chọn tên trường cần cập nhầt dữ liệu ở dòng Field; - Gõ vào biểu thức tính giá trị cho trường đó ở dòng Update To; - Gõ vào điều kiện để tính toán nếu cần ở dòng Criteria. Với yêu cầu trên, luongchinh = hesoluong * 290000 cửa sổ thiết kế query sẽ như sau: Để thi hành việc xoá cán bộ, nhấn nút Run trên thanh công cụ. 49
  50. Khi đó một hộp thoại cảnh báo xuất hiện: Nhấn Yes để đồng ý cập nhật dữ liệu (dữ liệu sau khi đã cập nhật không thể phục hồi lại được); nhấn No để huỷ bỏ lệnh. Phải cẩn trọng trước khi quyết định lệnh này. 6 Sử dụng Make table Query Select và Total query luôn đưa ra một bảng kết quả- đó là giá trị tức thời, mới nhất được lấy ra từ CSDL tại thời điểm đó. Tại thời điểm khác khi thi hành query đó, rất có thể chúng ta không thu lại được bảng kết quả như thời điểm trước đó. Muốn lưu lại bảng kết quả của một query tại một thời điểm nào đó, trong Access có một cách là đưa dữ liệu kết quả query ra một bảng (Table) để lưu trữ lâu dài bởi một MAKE TABLE query. Các bước tạo một Make table query để lưu trữ kết quả một query ra một bảng dữ liệu được tiến hành theo 2 bước chính: Bước 1: Tạo một Select query hoặc một Total query đưa ra được bảng kết quả cần lưu trữ; Bước 2: Ra lệnh tạo Make table query từ query đang thiết kế và thi hành để thu được bảng kết quả như mong muốn. Giả sử đã tạo được một Select query đưa ra được bảng kết quả như sau: 50
  51. Bài toán đặt ra là: đưa toàn bộ kết quả của query đang hiển thị ra một bảng mới có tên bangluong. Cách làm như sau: Bước 1: mở select query đã tạo được ở chế độ Design View; Bước 2: ra lệnh tạo Make table query bằng cách mở thực đơn Queries | Make Table query, hộp thoại Make table xuất hiện: Hãy nhập vào tên bảng dữ liệu cần lưu vào ô Table Name: Chú ý: - Nếu tên bảng nhập vào là mới, Access sẽ tự động tạo một bảng mới và sao chép toàn bộ dữ liệu mà query kết xuất được ra bảng này; - Nếu tên nhập vào trùng một tên bảng đã có sẵn, khi thi hành Access sẽ xoá bảng cũ và điền vào dữ liệu mới (cần cân nhắc khi đặt tên bảng trùng tên bảng đã tồn tại). Bước 3: Thi hành query để nhận kết quả bằng cách: - Nếu query đang ở chế độ thiết kế, nhấn nút Run trên thanh công cụ; - Hoặc nháy đúp chuột lên query cần thực hiện. Khi đó một hộp thoại cảnh báo việc bạn đang ra lệnh thi hành một query có thể làm thay đổi đến dữ liệu trên CSDL: Nhấn Yes để tiếp tục hoặc nhấn No để huỷ bỏ lệnh. Nếu trên CSDL đã tồn tại một bảng có cùng tên bảng bạn đã chỉ định cho query này lưu dữ liệu, Access sẽ hỏi bạn: Đã tồn tại bảng xxx trên CSDL rồi, nó sẽ bị xoá sạch khi query này thi hành, bạn có muốn tiếp tục không? Nhấn Yes để tiếp tục (tất nhiên bảng dữ liệu đó sẽ bị xoá và thay vào nội dung mới); nhấn No để huỷ bỏ. Cuối cùng một hộp thoại hỏi một lần cuối xem bạn có đồng ý dán xxx bản ghi vào bảng đã chỉ định hay không? 51
  52. Nhấn Yes để đồng ý, No để huỷ bỏ. Thi hành xong hãy mở bảng vừa tạo được để kiểm tra kết quả. Bài tập áp dụng Thực hiện trên CSDL Quản lý lương cán bộ các yêu cầu: Bài số 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 * 290000 Dangphi = 20,000 với những ai là Đảng viên Congdoanphi = 5%Luongchinh với những ai đã vào công đoàn Bài số 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; Bài số 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; Bài số 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; Bài số 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 đó; Bài số 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), máy tính sẽ lọc ra danh sách cán bộ thảo mãn điều kiện; Bài số 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 52
  53. Bài số 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: Bài số 9: 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: Bài số 10: Đưa ra bảng tổng hợp về chức vụ theo giới tính như sau: Bài số 11: Đưa ra bảng tổng hợp lương theo từng phòng ban như sau: Thực hiện trên CSDL Quản lý bán hàng các yêu cầu: Bài số 12: Tạo query hiển thị chi tiết thông tin từng hàng bán: 53
  54. Bài số 13: Tạo query đưa ra bảng tổng hợp tổng tiền bán được từng ngày của cửa hàng như sau: Bài số 14: Tạo query đưa ra bảng tổng hợp tổng số bán và tổng tiền đã bán ra của từng loại mặt hàng như sau: Bài số 15: Tạo bảng tính tổng tiền từng hoá đơn bán hàng như sau: Bài số 16: Lập bảng tổng hợp số lượng bán ra từng ngày của từng mặt hàng như sau: Bài số 17: Lập bảng tổng hợp số lượng mua từng mặt hàng của các khách hàng như sau: 54
  55. BÀI 4. THIẾT LẬP GIAO DIỆN Mã bài: MĐ 24-B04 Mục tiêu : - Trình bày được các khái niệm về Form, về thiết kế giao diện, về lập trình trực quan, hướng đối tượng; - Tạo được các dạng Form nhập dữ liệu; form điều khiển, xử lý dữ liệu theo những yêu cầu của bài toán thực tế đặt ra; - Thực hiện đựợc các biện pháp an toàn cho máy tính, vệ sinh công nghiệp. 1. Các khái niệm về Forms 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 (Dialogue), cửa sổ (Windows). Cả 2 thành phần này trong lập trình đều được gọi là Form. Với người dùng, Form là giao diện để sử dụng phần mềm; còn với những người phát triển phần mềm, Form là những cái mà họ phải nghĩ, phải thiết kế và tạo ra sao cho người dùng họ cảm thấy rất thoải mái, phù hợp và dễ dùng. Có 2 môi trường dùng tạo Form trong Access: - Sử dụng trình Form Wizard. Đây là cách rất đơn giản, nhanh chóng, dễ dùng giúp tạo nhanh một Form. Tuy nhiên Form được tạo ra có nhiều hạn chế, không gần gũi với yêu cầu của người dùng; - Sử dụng trình Form Design View - một công cụ tương đối hoàn chỉnh để tạo ra các form đáp ứng nhiều yêu cầu khác nhau của người sử dụng. 2. Sử dụng Form 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ước 1: Kích hoạt trình Form Wizard: Ở thẻ Forms, nhấn nút New, chọn Form Wizard, nhấn OK; 55
  56. Hoặc có thể nhấn đúp chuột lên Shortcut Creat Form by using Form wizard Bước 2: Chọn các thông tin cần đưa lên form. Đây là bước quan trọng nhất để khai báo những trường dữ liệu nào của form sẽ có thể được nhập dữ liệu thông qua form đang tạo. Học viên phải cực kỳ cân nhắc các thông tin ở đây: chọn bảng nào và chọn những trường nào cho đúng? - Chọn bảng - nơi có trường cần đưa lên form để nhập dữ liệu ở hộp Tables/Queries; -Tiếp theo đưa các trường cần nhập dữ liệu lên form từ danh sách Available Fields: sang danh sách Selected Fields: bằng các nút lệnh: >, >>, <, <<; 56
  57. - Hãy làm lần lượt đến khi chọn được đủ các trường cần nhập dữ liệu lên form. Để tiếp tục nhấn Next; 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: 57
  58. Chọn xong nhấn Next để tiếp tục; 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: Chọn xong nhấn Next: Bước 5: Hoàn thiện công việc: 58
  59. - Bạn có thể gõ vào tên gọi cũng như tiêu đề cho form ở hộp What title do you want for your form? - Có thể tuỳ chọn kích hoạt ngay form vừa tạo nếu chọn Open the form to view or enter information hoặc mở form ra ở chế độ Design view để sửa cấu trúc nếu chọn mục Modify the form’s design; - Nhấn Finish để hoàn tất toàn bộ công việc. Sử dụng form đã tạo được vào việc nhập dữ liệu: Chọn form, nhấn nút Open. Nếu form đang ở chế độ thiết kế có thể nhấn nút View trên thanh công cụ. Lúc này có thể sử dụng form để cập nhật dữ liệu: Tại mỗi thời điểm, form nhập dữ liệu chỉ hiển thị giá trị của một bản ghi. Bạn có thể nhập, sửa trực tiếp các trường của bản ghi hiện tại trên form này. Thanh định hướng (Navigator bar) sẽ giúp xử lý một số thao tác trên form, cách sử dụng như sau: - Nút để chuyển đến bản ghi kề sau; - Nút để chuyển đến bản ghi kề trước; - Nút để chuyển về bản ghi đầu tiên; - Nút để chuyển đến bản ghi cuối cùng; - Nút để thêm một bản ghi mới 3. Sử dụng Form design view Để tạo ra được form mang tính chuyên nghiệp và đáp ứng được sát yêu cầu thực tế bắt buộc phải sử dụng đến Form Design View. Nói như vậy không 59
  60. có nghĩa là không dùng Form Wizard để tạo form, mà trong nhiều tính huống vẫn dùng Form Wizard rồi sử dụng đến Form Design View để tiếp tục hoàn thiện yêu cầu. Nội dung mục này trình bày môi trường thiết kế form cũng như cách tạo một số kiểu form từ đơn giản đến phức tạp sử dụng Form Design View. 3.1 Thiết kế Form nhập dữ liệu đơn giản Chúng ta sẽ tìm hiểu cách thiết kế một form nhập dữ liệu đơn giản thông qua yêu cầu: tạo form dùng làm mẫu nhập dữ liệu cho bảng CANBO. Bước 1: Ở thẻ Form, nhấn New, chọn Design View Hoặc nhấn biểu tượng trên cửa sổ QLL Database. Môi trường thiết kế form xuất hiện: Có 3 thành phần quan trọng để làm việc: (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ụ 60
  61. Toolbox sẽ trình bày phần tiếp sau. (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 có thể dùng đối tượng Textbox, muốn đưa một chú thích (nhãn hiển thị) có thể dùng Label, muốn tạo một nút lệnh có thể 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- nơi có thể 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 đó. Chúng ta sẽ tìm hiểu kỹ việc sử dụng các sự kiện trong phần lập trình VBA. (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. Form đang thiết kế là loại để nhập dữ liệu, bước này để xác định nguồn dữ liệu để form làm việc. Vì chỉ để nhập dữ liệu cho bảng CANBO, nên nguồn dữ liệu sẽ là bảng cán bộ. Cách thiết lập thuộc tính này như sau: - Chọn thuộc tính form bằng cách chọn tên đối tượng Form ở hộp chọn Object trên thanh công cụ Formatting: Hoặc nhấn chuột 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 là ok. - Thiết lập thuộc tính Record Source cho form bằng cách chọn tên bảng CANBO ở hộp Record Source. Có thể tìm thuộc tính này ở thẻ Data - chỉ những thuộc tính liên quan đến dữ liệu; hoặc thẻ All- có đầy đủ tất cả cácthuộc tính và sự kiệ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ó hỗ trợ việc đưa những trường dữ liệu này lên form để nhập và hiển thị dữ liệu rất tốt. Trong trường hợp này ta dùng để đưa những trường cần nhập dữ liệu từ bảng CANBO lên 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. 61
  62. 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: Dùng chuột kéo từng trường muốn thiết kế lên form từ cửa sổ Field List thả lên vị trí hợp lý trên form (với bài này phải kéo toàn bộ các trường lên form).Lúc này cửa sổ thiết kế form có dạng: 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. 62
  63. Đến đây đã tạo xong form nhập dữ liệu đơn giản cho một bảng. 3.2 Tinh chỉnh cấu trúc Form Khi thiết kế một form, đòi hỏi lập trình viên không những phải tạo ra được form đáp ứng đầy đủ các yêu cầu về xử lý dữ liệu của bài toán, mà còn phải đáp ứng tính thẩm mỹ. Thế nào là form có thẩm mỹ cao? Câu hỏi này rất khó! Tuỳ thuộc vào bài toán, vào đối tượng người sử dụng mà thiết kế những kiểu giao diện thân thiện. Thanh công cụ Toolbox và cửa sổ Properties là những công cụ cần thiết để thiết kế giao diện. 3.2.1. 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ụ. Màn hình thiết kế form xuất hiện: 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): Label là đối tượng tạo ra dòng chữ chú thích trên form. Dòng chữ này (nhãn) phải được nhập trực tiếp từ bàn phím làm sao thật ngắn gọn, xúc tích để người dùng có thể hiểu được bản chất cũng như ý nghĩa của việc bạn đang giải thích. Giá trị hiển thị trên nhãn chính là giá trị của thuộc tính Caption. Sửa nhãn là sửa thuộc tính Caption hoặc có thể bấm chuột trực tiếp lên nhãn để sử giá trị. Thay đổi kích thước đối tượng (Resize): Kích thước của đối tượng thường được mô tả ở thuộc tính: Height - chiều 63
  64. cao và With - chiều rộng. Tuy nhiên bạn hoàn toàn có thể thay đổi kích thước đối tượng một cách trực quan bằng chuột. Cách làm tương tự như việc thay đổi kích thước một đối tượng đồ hoạ (Graphic) trên Word. Cụ thể như sau: 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 giữ và di chuột. Di chuyển đối tượng: Mỗi đối tượng nằm trên form đều được xác định bởi một toạ độ, toạ độ này được thể hiện qua 2 thuộc tính: Top - khoảng cách từ tiêu đề form đến đối tượng và Left - khoảng cách từ mép form bên trái đến đối tượng. Tuy nhiên bạn nên di chuyển đối tượng bằng cách trực quan sử dụng chuột với thao tác kéo-thả. Chỉ trong những trường hợp đòi hỏi phải di chuyển đối tượng đến các vị trí chính xác mới cần dùng đến 2 thuộc tính Top và Left để thiết lập. Thay đổi Font chữ: Những đối tượng có hiển thị chữ (Text) hoàn toàn có thể thay đổi được phông chữ. Giá trị này được miêu tả ở thuộc tính Font Name. Tuy nhiên bạn hoàn toàn sửu dụng hộp Font trên thanh công cụ Formatting để thiết lập nhanh. Thay đổi màu nền: Mỗi đối tượng thường có thể thiết lập được màu nền, chúng thể hiện ở thuộc tính BackColor. Tuy nhiên hoàn toàn có thể thiết lập màu nền một cách nhanh chóng ở hộp Fill\Back Color trên thanh Formatting. Thay đổi màu chữ: Mỗi đối tượng thường hiển thị chữ có thể thiết lập được màu chữ, chúng thể hiện ở thuộc tính ForeColor. Tuy nhiên hoàn toàn có thể thiết lập màu chữ một cách nhanh chóng ở hộp Font\Fore Color trên thanh Formatting Ngoài ra có thể sử dụng 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. Xin tham khảo cách làm này ở phần các thuộc tính của bảng dữ liệu (Chương 1; mục 2- Xây dựng cấu trúc bảng). Hãy sử dụng các tính năng định dạng như trên một cách phù hợp, hoàn toàn có thể đưa form ban đầu về dạng dễ nhìn, dễ sử dụng hơn như sau: 64
  65. 3.2.2. Sử dụng Command Button Wizard Tuy chưa được học một chút gì về lập trình trên Access, nhưng học viên vẫn có thể tạo được một số các nút lệnh đặt trên form điều khiển công việc. Tính năng Command Button Wizard giúp làm điều đó. Nút lệnh (Command Button) thường được dùng để lập trình xử lý các công việc nào đó. Ví dụ: khi nhấn lên nút - một bảng lương sẽ được in ra hoặc khi nhấn nút - form đang làm việc sẽ được đóng lại. Muốn vậy, người lập trình phải viết các lệnh phía sau nút đó, để làm sao khi nhấn lên nút, các lệnh sẽ được thi hành để điều khiển công việc như yêu cầu. Control Button Wizard sẽ giúp tạo một số loại nút lệnh mà không cần biết đến lập trình. Dưới đây là các bước sử dụng: 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: 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: 65
  66. 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. Bảng dưới đây liệt kê danh sách lệnh của từng nhóm: TT 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 Reocord 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 66
  67. 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 Với yêu cầu đóng form, phải chọn: Categories = Form Actions và 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: - Chọn tuỳ chọn Text nều muốn nút lệnh hiển thị bằng chữ. Khi đó gõ vào chữ hiển thị trên nút. Hình trên gõ Đóng Form; - Chọn tuỳ chọn Picture nếu muốn thể hiện một hình ảnh lên nút lệnh. Khi đó có thể chọn một hình ảnh trên danh sách. Bạn có thể quan sát trước được thể hiện của nút lệnh ở hộp Sample bên trái hộp thoại. - Cuối cùng, nhấn Finish để kết thúc việc tạo một nút lệnh. 67
  68. 4. Kỹ thuật Sub-Form Kỹ thuật thiết kế form đã trình bày ở các phần trên có thể gọi là Single- form. Sub-form là kỹ thuật thiết kế giao diện rất mạnh, đáp ứng được những yêu cầu xử lý dữ liệu phức tạp mà kỹ thuật Single-form chưa thể đáp ứng. Có thể hiểu 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. 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: Với yêu cầu này, phải tạo một form con cho phép hiển thị và nhập các thông tin về hàng bán (1); + Phải tạo một form mẹ để nhập thông tin về hoá đơn bán hàng (2); + Phải kết nối form mẹ với form con 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): Bước 1: Tạo form con - Tạo mới mới form ở chế độ Design View; - Vì form con sẽ hiển thị dữ liệu dạng bảng nên phải thiết lập thuộc 68
  69. 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 ở thuộc tính Record Source bằng cách nhấn nút (hình dưới) Nhấn lên đây để tạo nguồn dữ liệu cho form. 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: (Chú ý phải chọn đúng tên trường của các bảng đã chỉ dẫn) Tiếp theo đó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 mẹ. 69
  70. Bước 2: Tạo form mẹ - Tạo mới mới form ở chế độ Design View; - Thiết lập nguồn dữ liệu làm việc cho form mẹ ở thuộc tính Record Source bằng cách nhấn nút (hình dưới) Nhấn lên đây để tạo nguồn dữ liệu cho form. 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: (Chú ý phải chọn đúng tên trường của các bảng đã chỉ dẫn) Tiếp theo đó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: hoadonID, khacID, ngayban, diachi, email; - 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; 70
  71. Hãy chọn tên form con cần đưa lên ở danh sách Use an existing form. Chọn xong nhấn Finish. - Ghi lại form với một tên gọi (ví dụ: frmLapHoadon) và đóng lại, kết thúc yêu cầu cơ bản bài toán, thu được kết quả như sau: 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. Cách 2. 71
  72. Bước 1: Tạo form wizard lấy những dữ liệu sau: Bảng HOADONlấ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: 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]): 72
  73. - Đóng và ghi lại tất cả. Bạn đã tạo được form như yêu cầu. 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 con cho phép hiển thị các thông tinvề danh sách cán bộ cần in ra (1); + Phải tạo một form mẹ cho phép nhập các tham số cần lọc (2); + Phải thiết lập tham số cho form con sao cho mỗi khi chọn một phòng ban trên form mẹ, danh sách cán bộ ở phòng ban đó sẽ tự động hiển thị ra form con. 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): Bước 1: Tạo form con - Tạo mới mới form ở chế độ Design View; - Vì form con 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) 73
  74. Nhấn lên đây để tạo nguồn dữ liệu cho form. 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 (Chú ý phải chọn đúng tên trường của các bảng đã chỉ dẫn) Tiếp theo đó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: 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 mẹ. Bước 2: Tạo form mẹ - 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 mẹ bằng cách: Dùng chuột kéo đối tượng Combobox từ thanh công cụ ToolBox thả lên form mẹ, hộp thoại sau xuất hiện: 74
  75. Hãy chọn mục I want the combo box look up the value in a table or query. Nhấn Next để tiếp tục, hộp thoại sau xuất hiện: Chọn bảng từ danh sách Table\Queries – nơi có chứa danh sách phòng ban cần đưa vào hộp chọn Combobox. Chọn PHONGBAN, nhấn Next, hộp thoại tiếp theo xuất hiện: 75
  76. Chọn các trường sẽ hiển thị giá trị lên Combo box từ danh sách Available Fields: Æ Selected Fields: (chọn 2 trường phongbanID và Tenpban). Nhấn Next để tiếp tục: Nên chọn mục Hide key column (recommended) để ẩn đi khoá làm cho danh sách thả xuống hộp thả gọn gàng hơn. Cuối cùng nhấn Finish để kết thúc việc tạo Combo box. 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 con là cboPhongban. - 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; 76
  77. Hãy chọn tên form con cần đưa lên ở danh sách Use an existing form. Chọn xong nhấn Finish. - Ghi lại form với một tên gọi (ví dụ: frmTracuuDanhSachCanBo) và đóng lại, kết thúc yêu cầu cơ bản bài toán. Bài tập thực hành Cơ sở Quản lý lương cán bộ Bài số 1: Tạo form cho phép xem danh sách cán bộ từng phòng ban như sau: Mỗi khi chọn một phòng ban từ hộp thả danh sách cán bộ phòng ban đó được hiển thị lên Subform. 77
  78. Bài số 2: Tạo form cho phép tìm kiếm cán bộ theo tên như sau: Bài số 3: Thiết kế form lập hoá đơn bán hàng theo mẫu: Yêu cầu chi tiết: - 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) 78
  79. Bài số 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. Bài số 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ê. 79
  80. Bài số 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: Bài số 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 đó: 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ị. 80
  81. BÀI 5. THIẾT LẬP BÁO CÁO Mã bài: MĐ 24-B05 Mục tiêu : - Trình bày được các khái niệm và các bước tạo báo cáo; - Tạo được các báo cáo (report) của dữ liệu; - Trang trí được báo cáo phù hợp với yêu cầu; - Thiết kế được những mẫu biểu in ấn đơn giản đến những biểu phức tạp phục vụ nhu cầu in ấn đa dạng trong các bài toán thực tế từ CSDL; - Thực hiện đựợc các biện pháp an toàn cho máy tính, vệ sinh công nghiệp. 1. Các 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. 1.1 Cấu trúc Report Cấu trúc một report thông thường gồm 5 phần: Report header Page header Detai Page Footer Report footer 81
  82. 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. 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ế. 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). 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ế. 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ế. 1.2 Môi trường làm việc Làm việc với Report gần giống làm việc với Form. Sự khác nhau cơ bản của Report và Form là: Form có thể hiển thị, tra cứu, cập nhật và điều khiển dữ liệu từ CSDL; còn Report chỉ có thể lập báo cáo và in ra, đặc biệt Report không làm thay đổi giá trị dữ liệu trong CSDL. 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) 2. Sử dụng report wizard Giống như Form wizard, Report wizard là một công cụ rất đơn giản, dễ dùng để tạo nhanh một Report. Dưới đây hướng dẫn từng bước dùng Report 82
  83. wizard để 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 Bước 2: Chọn dữ liệu cần in trên hộp thoại sau: Để chọn dữ liệu cần in lên report, có 2 thao tác phải làm trên hộp thoại này: - Chọn bảng hoặc query nơi có chứa trường dữ liệu cần in ra ở hộp Table/Queries; - Sử dụng các nút lệnh >, >>, <, << để đưa các trường cần in từ danh 83
  84. sách Available Fields: (danh sách các trường có thể in) sang danh sách Seleted Fields: (danh sách các trường sẽ được in ra report). Hãy lần lượt thực hiện chọn các trường hoten, ngaysinh (từ bảng CANBO), trường tenchucvu (bảng CHUCVU) và trường tenphongban (bảng PHONGBAN). Chọn xong nhấn Next: Bước 3: Chọn kiểu cách hiển thị dữ liệu trên report: Bạn muốn in dữ liệu theo kiểu nào: Hãy chọn kiểu cần in từ danh sách bên trái hộp thoại. 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 (có thể xem kiểu hiển thị bên phải hộp thoại). Nhấn Next để tiếp tục: 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, hãy Add trường đó từ danh sách bên trái hộp thoại sang hộp preview bên phải hộp thoại. 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. Nhấn Next để tiếp tục: 84
  85. Bước 5: Thiết lập sắp xếp dữ liệu trên báo cáo: 85
  86. Report wizard cho phép tối đa 4 mức ưu tiên sắp xếp dữ liệu được đánh số từ 1 đến 4 (hộp thoại trên). Trường nào thiết lập trước, sẽ được ưu tiên sắp xếp trước. Trong trường hợp giá trị trường đó trùng nhau, Access sẽ chuyển đến các mức tiếp theo để sắp xếp. Kiểu sắp xếp (theo chiều tăng hoặc giảm) có thể thiết lập khi nhấn nút bên cạnh. Thiết lập xong nhấn Next để tiếp tục: Bước 6: Chọn bố cục (Layout) cho Report: Có 2 thiết lập trong bước này: - Chọn bố cục cho report ở hộp Layout. Có 3 kiểu Layout: Columnar, Tabular và Justified- hãy chọn một kiểu phù hợp (xem hộp preview bên trái để biết trước kết quả); -Chọn hướng giấy in ở hộp Orientation. Có 2 kiểu hướng in là: Portrait – in theo khổ giấy dọc và Landscape- in theo khổ giấy ngang; - Chọn xong nhấn Next để tiếp tục: 86
  87. Bước 7: Chọn mẫu định dạng (Style) cho report: Hãy chọn một mẫu định dạng từ danh sách bên trái hộp thoại. Chọn xong nhấn Next để tiếp tục: Bước 8: Hoàn thiện các thông tin cuối cùng: Bao gồm các thông tin sau: - Gõ vào tiêu đề report cũng như tên report trên hộp What do you want 87
  88. for you 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. Màn hình hiển thị dữ liệu report như sau: Từ màn hình này có thể thực hiện rất nhiều các thao tác thông qua thanh công cụ Print Preview như sau: Nút Print : Để in nội dung report ra máy in; Nút Design : Để mở report ra chế độ thiết kế; Nút One page : Để hiển thị report ra màn hình trong từng trang báo cáo; Nút Two page : Để hiển thị 2 trang báo cáo một trên màn hình; 88
  89. Nút Multi Page : Để chọn nhiều trang báo cáo có thể hiển thị trên màn hình; Nút Zoom : Để phóng to, thu nhỏ nội dung report; Nút Office Link : Để kết xuất (Export) thông tin trên report ra các loại định dạng khác của MS Office như Word, Excel, HTML. Nút Close: Để đóng màn hình preview report. Toàn bộ 8 bước sử dụng report wizard liệt kê ở trên, không phải lúc nào cũng cần thực hiện đầy đủ. Với những report đơn giản như trê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 đó. 3. Sử dụng report design view Phần trước đã trình bày các bước dùng Report wizard để có thể thiết kế các mẫu báo cáo in ấn dữ liệu từ CSDL. Đó là cách làm rất dễ dàng và nhanh chóng. Tuy nhiên, các mẫu báo cáo được sinh ra chỉ giới hạn theo một số mẫu mã máy tính đã cung cấp sẵn, không thể in ra được những biểu báo cáo phức tạp theo như những yêu cầu đa dạng của người sử dụng. 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. Trong chừng mực nào đó, cách làm việc với Report design view gần giống cách làm việc với Form design view. Bước 1: Khởi động Report design view: Từ thẻ Report nhấn nút New, chọn Design view, nhấn OK 89
  90. 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: Môi trường làm việc với Report design view xuất hiện: 2 1 3 Có 3 phần quan trọng trên môi trường làm việc này: 1. Cửa sổ thiết kế Report (hình trên tiêu đề cửa sổ này là Report1: Report)- nơi để thiết kế nội dung cần in ấn. Nội dung được thiết kế trên cửa sổ này là các đối tượng từ thanh công cụ Toolbox sau khi đã được thiết lập các thuộc tính phù hợp với mục đích; 2. Thanh công cụ Toolbox- nơi chứa những đối tượng giúp đưa các thông tin cần thiết lên report. Chức năng và cách làm việc trên thanh công cụ này gần giống với làm việc trên thanh công cụ Toolbox của Form design view; 3. Cửa sổ Properties – nơi thiết lập các thuộc tính phù hợp cho các đối 90
  91. tượng trên màn hình thiết kế report. Chúng ta sẽ được tìm hiểu kỹ hơn các thành phần trên trong các bước tiếp theo khi làm việc cụ thể với chúng. 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? Là các câu hỏi phải được trả lời ở bước này bằng cách thiết lập thuộc tính Record Source cho report. Thông thường, report sẽ in dữ liệu từ một hay nhiều bảng hoặc từ kết quả của một query, tổng quát là từ một query. Query đó có thể được xây dựng sẵn từ danh sách các Queries của dự án (chứa trên thẻ Queries)- khi đó bước này chỉ chọn query cần in tại thuộc tính Record Source của report: Tuy nhiên query cần in có thể được tạo ra trong chính bản thân report (không hiển thị tên query trên thẻ Queries)- điều này nên làm vì như vậy sẽ đảm bảo sự chắc chắn của report. Khi đó hãy nhấn chuột lên nút của thuộc tính Record Source: 91
  92. Một cửa sổ thiết kế query làm nguồn dữ liệu cho report xuất hiện: Hãy thiết lập các thông tin cần in ra report trên query này. Thiết lập xong nhấn nút đóng cửa sổ thiết kế query (hoặc nhấn phím nóng Ctrl+W) và chọn Yes trong hộp thoại sau: 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! + Theo ngầm định, cửa sổ thiết kế report chỉ xuất hiện 3 phần: Page header, Page footer và Detail. Nếu report đang thiết kế yêu cầu có cả Report header và Report footer, hãy hiển thị chúng bằng cách: nhấn phải chuột lên cửa sổ thiết kế report và chọn: 92
  93. Hiển thị lưới khi thiết kế. Bật hoặc tắt phần Page header/Footer Bật hoặc tắt phần Report header/Footer Những phần nào không dùng đến khi thiết kế có thể tắt đi hoặc dùng chuột thu lại diện tích phần đó. + 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. + 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 (Field) nào đó, hiển thị dữ liệu của một biểu thức (ví dụ tính Tổng tiền chẳng hạ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): + Hoặc hể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ụ: 93
  94. - Có thể sử dụng thanh công cụ Formatting để định dạng hộp dữ liệu này. + Sử dụng cửa sổ Field List Danh sá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 như giới thiệu ở trên hoặc có thể dùng cửa sổ Field List này 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). + Sử dụng công cụ Image Công cụ Image trên thanh công cụ Toolbox giúp đưa ảnh từ các tệp tin ảnh in ra report. Sau khi dùng chuột nhấp nút nút Image từ thanh công cụ đặt lên report, một hộp thoại xuất hiện cho phép tìm đến tệp tin ảnh cần đưa lên report: Hãy tìm và chọn tệp ảnh, chọn xong nhấn OK để hoàn tất công việc. 94
  95. + Sử dụng công cụ Line Công cụ Line dùng để vẽ các đường thẳng lên Report. Rất hữu hiệu trong việc kẻ bảng biểu. Sau khi nhập nút Line trên thanh công cụ, hãy thực hiện kẻ bằng cách di 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: 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ộ thiết lập thuộc tính 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) 4. Tham số cho report Report có tham số thực chất là loại Report có khả năng lọc dữ liệu khi in. Ví dụ: bình thường Report in ra danh sách cán bộ ở trên sẽ in danh sách toàn bộ 95
  96. cán bộ trong cơ quan. Bây giờ muốn 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; Trong phần này, chúng tôi hướng dẫn cách thiết lập tham số trên thuộc tính Record Source của report. Cách dễ làm, không cần am hiểu về lập trình VBA. Cách dùng Macro cũng tốt nhưng không nên dùng. Vì phương pháp lập trình này đã trở nên cứng nhắc. Thực tế, phương pháp dùng câu lệnh DoCmd trên VBA là tốt nhất, nó thể hiện tính linh hoạt và chuyên nghiệp của cách giải quyết vấn đề. Riêng cách này, các bạn có thể tham khảo ở Chương Lập trình CSDL. Sau đây là cách giải quyết bài toán: 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. Bước 1: Tạo Report đáp ứng thông tin cần in Có thể sử dụng report Wizard hoặc Report Design View để tạo ra một Report in danh sách cán bộ với các thông tin như sau: 96
  97. 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: Bước 3: Thiết lập tham số cho Report Ở đây trình bày phương pháp thiết lập tham số vào thuộc tính Record Source của Report. Cách làm như sau: 97
  98. - 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: 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 Nếu cách viết này khó thực hiện, bạn 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: 98
  99. Chọn 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: Nhấn đúp chuột lên Combo1 để chọn! Ở cây các đối tượng bên trái hộp thoại, hãy 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: 99
  100. Cuối cùng nhấn OK để hoàn tất việc tạo tham số cho query bằng hộp thoại Expression Builder. Bài tập thực hành 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ộ. đan 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 102
  101. thông tin: Hoten, tencv, ngaysinh, luongchinh, phucapcv, dangphi, congdoanphi, thuclinh 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. 103