Tài liệu hướng dẫn giảng dạy chứng chỉ tin học quốc gia trình độ B (Form)

pdf 132 trang phuongnguyen 2750
Bạn đang xem 20 trang mẫu của tài liệu "Tài liệu hướng dẫn giảng dạy chứng chỉ tin học quốc gia trình độ B (Form)", để 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:

  • pdftai_lieu_huong_dan_giang_day_chung_chi_tin_hoc_quoc_gia_trin.pdf

Nội dung text: Tài liệu hướng dẫn giảng dạy chứng chỉ tin học quốc gia trình độ B (Form)

  1. TRUNG TÂM TIN HỌC - ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP. HCM 227 Nguyễn Văn Cừ – Quận 5 – Tp. Hồ Chí Minh Tel: 8351056 – Fax 8324466 – Email: ttth@hcmuns.edu.vn TÀI LIỆU HƯỚNG DẪN GIẢNG DẠY CHỨNG CHỈ TIN HỌC QUỐC GIA TRÌNH ĐỘ B (Form) Mã tài liệu: DT_NCM_LT_HDGD CCB Phiên bản 1.1 – Tháng 10/2004
  2. Tài liệu hướng dẫn giảng dạy Mục lục Mục lục 1 GIỚI THIỆU 4 GIÁO TRÌNH LÝ THUYẾT 5 TÀI LIỆU THAM KHẢO 5 HƯỚNG DẪN PHẦN LÝ THUYẾT 6 Bài 1: MÀN HÌNH LÀM VIỆC CỦA ỨNG DỤNG 6 I. Giới thiệu đối tượng Form 7 I.1. Giới thiệu về thuộc tính của đối tượng 7 I.2. Các thuộc tính thường dùng của Form 9 II. Dạng màn hình thường gặp 11 II.1. Columnar 11 II.2. Tabular 11 II.3. Datasheet 12 III. Môi trường thiết kế màn hình làm việc 12 III.1. Tạo màn hình làm việc bằng Wizard 12 III.2. Môi trường Design của Form 13 Bài 2: THIẾT KẾ CÁC DẠNG MÀN HÌNH 15 I. Các điều khiển 16 I.1. Những thành phần của Form 17 I.2. Một số thao tác chung trên điều khiển 18 I.3. Nhóm điều khiển văn bản 20 I.4. Nhóm điều khiển chọn lựa 22 I.5. Điều khiển liên kết dữ liệu 25 II. Các bước tạo màn hình làm việc 26 II.1. Chọn nguồn dữ liệu 26 II.2. Dạng hiển thị của Form 27 II.3. Tạo các điều khiển hiển thị dữ liệu 27 II.4. Tạo những điều khiển chức năng 28 II.5. Xem kết quả thiết kế - Hiệu chỉnh thiết kế 29 III. Tạo màn hình dạng main – sub 29 III.1. Điều khiển Subform/Subreport 29 III.2. Các bước thiết kế màn hình main – sub 30 IV. Truyền dữ liệu giữa các màn hình 31 Chứng chỉ B Tin Học Quốc Gia Trang 1/131
  3. Tài liệu hướng dẫn giảng dạy IV.1. Nguyên tắc chung 32 IV.2. Lấy dữ liệu của Form Sub 32 V. Thiết kế các dạng màn hình 33 V.1. Màn hình đơn 33 V.2. Màn hình main – sub 39 Bài 3: NGÔN NGỮ LẬP TRÌNH VBA 45 I. Môi trường lập trình trong Microsoft Access 46 I.1. Cơ chế lập trình Thủ tục – Sự kiện 46 I.2. Cửa sổ viết lệnh cho các xử lý trong thủ tục của sự kiện 47 II. Những thành phần cơ bản trong ngôn ngữ VBA 49 II.1. Đặc điểm của ngôn ngữ VBA 49 II.2. Biến 50 II.3. Cấu trúc điều khiển 54 II.4. Hàm và thủ tục 59 Bài 4: HÀM VÀ BỘ LỆNH THƯỜNG DÙNG TRÊN FORM 62 I. Hàm/Thủ tục thường dùng 63 I.1. Nhóm hàm xử lý giá trị 63 I.2. Nhóm hàm thao tác dữ liệu 70 II. Bộ lệnh DoCmd 72 II.1. GoToRecord 72 II.2. OpenForm, OpenReport, OpenQuery 73 II.3. RunCommand 74 II.4. RunSQL 74 II.5. Close 74 Bài 5: THIẾT KẾ MÀN HÌNH DI CHUYỂN, TÌM KIẾM DỮ LIỆU 76 I. Di chuyển dữ liệu trên màn hình làm việc 77 I.1. Thao tác di chuyển dữ liệu trên Form 77 I.2. Xử lý di chuyển bằng nút lệnh 79 I.3. Xử lý lỗi khi di chuyển 81 II. Tìm kiếm thông tin 83 II.1. Sử dụng DoCmd 84 II.2. Dùng RecordsetClone 85 Bài 6: THIẾT KẾ MÀN HÌNH THAO TÁC DỮ LIỆU 88 I. Giới thiệu về các ràng buộc trên bảng dữ liệu 89 I.1. Khoá chính 89 I.2. Khoá ngoại 89 II. Chức năng thêm mới 89 II.1. Thêm dữ liệu trên Form 89 Chứng chỉ B Tin Học Quốc Gia Trang 2/131
  4. Tài liệu hướng dẫn giảng dạy II.2. Cách thức thêm mới dữ liệu 90 III. Chức năng sửa dữ liệu 92 III.1. Cơ chế sửa dữ liệu trên Form 92 III.2. Thiết kế chức năng sửa dữ liệu 92 III.3. Các bước thực hiện 93 III.4. Ví dụ 94 IV. Xử lý dữ liệu thay đổi 94 IV.1. Lưu dữ liệu trên Form xuống bảng 95 IV.2. Kiểm tra ràng buộc khi lưu 98 IV.3. Không lưu dữ liệu mới thay đổi trên Form 103 V. Thao tác xoá dữ liệu 104 V.1. Cách thức xoá mẫu tin trên Form 105 V.2. Kiểm tra ràng buộc khi xoá dữ liệu của bảng 106 VI. Chức năng mở báo cáo 109 VI.1. Tạo chức năng mở báo cáo 109 VI.2. Ví dụ 110 Bài 7: XÂY DỰNG HỆ THỐNG THỰC ĐƠN 111 I. Giới thiệu về hệ thống thực đơn 112 I.1. Thanh lệnh 112 I.2. Phân loại 112 II. Thiết kế hệ thống thực đơn 113 II.1. Thêm mới thanh lệnh 113 II.2. Thiết kế chức năng trên thanh lệnh 115 II.3. Xoá thanh lệnh 117 Bài 8: GIỚI THIỆU VỀ MACRO 118 I. Đối tượng Macro 119 I.1. Ý nghĩa 119 I.2. Các thành phần trong màn hình thiết kế Macro 119 II. Một số hành động thường dùng 119 III. Một số hành động khác 121 IV. Macro có điều kiện 122 V. Macro nhóm 123 VI. Kết macro vào các biến cố 124 ĐỀ THI MẪU 125 ĐỀ THI MẪU KIỂM TRA GIÁO VIÊN 129 Chứng chỉ B Tin Học Quốc Gia Trang 3/131
  5. Tài liệu hướng dẫn giảng dạy GIỚI THIỆU Sau khi hoàn thành khóa học, học viên sẽ có khả năng: ƒ Tổ chức và xây dựng màn hình làm việc cho ứng dụng ƒ Thực hiện thao tác xử lý dữ liệu trên màn hình như: cập nhật dữ liệu, mở báo cáo, Với thời lượng là 36 tiết LT và 54 tiết TH được phân bổ như sau: STT Bài học Số tiết LT Số tiết TH 1 Màn hình làm việc của ứng dụng 2 2 2 Thiết kế các dạng màn hình 8 18 3 Ngôn ngữ lập trình VBA 2 4 4 Hàm và bộ lệnh dùng chung trên Form 4 5 Thiết kế màn hình di chuyển, tìm kiếm dữ liệu 2 2 6 Thiết kế màn hình thao tác dữ liệu 12 18 7 Xây dựng hệ thống thực đơn 2 2 8 Giới thiệu về Macro 4 8 Tổng số tiết : 36 54 Chứng chỉ B Tin Học Quốc Gia Trang 4/131
  6. Tài liệu hướng dẫn giảng dạy GIÁO TRÌNH LÝ THUYẾT Sử dụng giáo trình “Microsoft Access 2000” tập 2, 3 của tác giả Nguyễn Thiện Tâm, tái bản lần thứ 2, nhà xuất bản Đại Học Quốc Gia Tp. HCM. TÀI LIỆU THAM KHẢO Chứng chỉ B Tin Học Quốc Gia Trang 5/131
  7. Tài liệu hướng dẫn giảng dạy HƯỚNG DẪN PHẦN LÝ THUYẾT Bài 1 MÀN HÌNH LÀM VIỆC CỦA ỨNG DỤNG Tóm tắt Lý thuyết 2 tiết - Thực hành 2 tiết Mục tiêu Các mục chính Bài tập bắt Bài tập làm buộc thêm Bài học này nhằm giới I. Giới thiệu đối tượng Form 1.1, 1.2 thiệu cho học viên về đối II. Dạng màn hình thường gặp tượng Form trong Microsoft III. Môi trường thiết kế màn hình Access và ý nghĩa của việc làm việc xây dựng các màn hình hình làm việc cho ứng dụng. Học viên có thể phân biệt những dạng màn hình khác nhau và thiết kế một số màn hình hiển thị dữ liệu đơn giản bằng công cụ Wizard. Sau khi kết thúc bài học, học viên có thể: 9 Nhận biết các dạng màn hình khác nhau. 9 Sử dụng đối tượng Form để thiết kế một số màn hình hiển thị dữ liệu đơn giản. Chứng chỉ B Tin Học Quốc Gia Trang 6/131
  8. Tài liệu hướng dẫn giảng dạy I. Giới thiệu đối tượng Form Form là một trong những đối tượng có sẵn trong Microsoft Access, nó dùng để xây dựng những màn hình giao tiếp giữa người dùng và ứng dụng. Khi xây dựng ứng dụng thì Form là thành phần quan trọng giúp người sử dụng dễ dàng thao tác với thông tin được quản lý trong cơ sở dữ liệu. Thông qua Form, người dùng có thể thực hiện các thao tác xem, nhập, thay đổi và tìm kiếm thông tin một cách dễ dàng hơn. Đối với người sử dụng thì phần lớn thời gian họ phải làm việc với các Form, do đó ta nên xây dựng những Form đạt tính tương tác cao và thân thiện nhất có thể được. I.1. Giới thiệu về thuộc tính của đối tượng Trong quá trình xây dựng các màn hình làm việc cho ứng dựng, ngoài đối tượng Form ta còn làm việc với nhiều đối tượng khác. Những đối tượng này đều có một thành phần gọi là thuộc tính. Thuộc tính của đối tượng là những đặc điểm để phân biệt giữa đối tượng này với đối tượng khác. I.1.1. Cửa sổ thuộc tính Khi thiết kế Form, ta có thể xem thông tin các thuộc tính của đối tượng thông qua cửa sổ thuộc tính, Properties Window. Ta có thể mở cửa sổ này bằng một trong những cách sau: ƒ Double Click vào đối tượng cần xem thuộc tính. ƒ Click phải vào đối tượng cần xem thuộc tính, sau đó chọn chức năng Properties có trong menu vừa xuất hiện. Trong khi cửa sổ thuộc tính đang được mở thì ta chỉ cần click vào đối tượng khác thì trang thuộc tính sẽ tự động hiển thị những thuộc tính của đối tượng đang được chọn. Đối tượng Form và cửa sổ thuộc tính Thuộc tính của các đối tượng được chia thành ba nhóm chính. Những đặc điểm về hình thức hiển thị của đối tượng được liệt kê trong trang thuộc tính Format. Trang Data dùng để liệt kê những đặc điểm về dữ liệu bên trong một đối tượng, như là nguồn dữ liệu được liên kết với đối tượng, hay giữa đối tượng này với đối tượng khác. Những đặc điểm của đối tượng không Chứng chỉ B Tin Học Quốc Gia Trang 7/131
  9. Tài liệu hướng dẫn giảng dạy nằm trong hai nhóm trên thì sẽ được liệt kê trong trang Other. Khi ta cần xem một thuộc tính thuộc nhóm nào thì có thể chọn chính xác trang chứa thuộc tính đó, ngoài ra ta cũng có thể chọn trang All, là trang chứa tất cả các thuộc tính của một đối tượng. I.1.2. Thành phần của một thuộc tính Một thuộc tính được tạo thành bởi hai phần là tên và giá trị của thuộc tính. Trong cửa sổ Properties, tên của thuộc tính được hiển thị trong vùng màu xám bên trái. Ta có thể click vào tên của từng thuộc tính nhưng không thể thay đổi chúng. Tên của một thuộc tính có thể là một hay nhiều từ, ví dụ trong cửa sổ thuộc tính của Form ta có thuộc tính tên là Name và thuộc tính tên Default View. Thành phần thứ hai của thuộc tính nằm bên phải, gọi là giá trị của thuộc tính. Ta có thể thay đổi cách thể hiện của đối tượng bằng cách gán giá trị cho các thuộc tính của nó. I.1.3. Kiểu dữ liệu của thuộc tính Mỗi điều khiển có nhiều thuộc tính và mỗi thuộc tính có một kiểu dữ liệu nhất định. Kiểu dữ liệu của thuộc tính xác định giá trị mà nó có thể nhận. Ta có một số kiểu dữ liệu như sau: String Những thuộc tính mà giá trị của nó là một từ hay một nhóm từ. Ta có thể thay đổi giá trị của thuộc tính bằng cách Click vào tên thuộc tính sau đó nhập giá trị cần thiết vào vùng giá trị, như hình trên thì DAILY là giá trị của thuộc tính Record Source . Boolean Thuộc tính kiểu Boolean dùng để lưu giá trị luận lý ĐÚNG hay SAI. Có 3 nhóm giá trị có thể được sử dụng cho thuộc tính Boolean: Yes/No, True/False hay On/Off. Khi một thuộc tính có kiểu là Boolean thì giá trị của nó sẽ chứa trong một ComboBox. Để thay đổi giá trị của thuộc tính ta Click vào tên thuộc tính, sau đó chọn một giá trị có trong ComboBox giá trị. Ta cũng có thể Double click vào tên của thuộc tính để thay đổi từ Yes (True/On) sang No (False/Off) và ngược lại. Enumerated Đây là tập hợp một số giá trị định sẵn cho thuộc tính của đối tượng. Nghĩa là thuộc tính chỉ có thể nhận một trong những giá trị này và số giá trị là cố định, không thêm hay bớt được. Các Chứng chỉ B Tin Học Quốc Gia Trang 8/131
  10. Tài liệu hướng dẫn giảng dạy giá trị được chứa trong một ComboBox giá trị của thuộc tính. Để thay đổi giá trị của thuộc tính, ta cũng thực hiện tương tự kiểu Boolean Numeric Thuộc tính có kiểu số cho phép ta nhập vào những giá trị số, có hai loại số mà ta cần chú ý khi nhập cho thuộc tính là số thực và số nguyên tuỳ theo từng thuộc tính. Expression Có một vài thuộc tính mà giá trị của nó có thể chứa một chuỗi theo một qui tắc nhất định để thay đổi cách hiển thị giá trị của thuộc tính, giá trị của những thuộc tính đó gọi là Expression. Để thay đổi giá trị cho thuộc tính này ta phải biết cú pháp của từng thuộc tính. Tuy nhiên, Microsoft Access cung cấp cho ta công cụ hỗ trợ để tạo giá trị cho thuộc tính bằng cách click vào nút . Sau đó, theo các bước chỉ dẫn ta sẽ tạo được giá trị cho thuộc tính. I.2. Các thuộc tính thường dùng của Form I.2.1. Nhóm thuộc tính kiểu String Name Đây là thuộc tính dùng để phân biệt giữa các đối tượng. Thông qua tên Microsoft Access sẽ nhận biết được các đối tượng hiện có. Một điều cần lưu ý là tên của đối tượng trong cùng một form thì không được trùng lắp. Nghĩa là, nếu trong phạm vi một Form thì giá trị thuộc tính Name của những đối tượng trong Form đó phải khác nhau. Nhưng nếu giữa hai Form thì tên của các đối tượng trong hai Form có thể giống nhau. Đối với đối tượng Form, giá trị thuộc tính Name của một Form mới tạo sẽ được xác định khi ta lưu Form đó, chọn chức năng Save. Để chỉnh sửa giá trị của thuộc tính Name, ta phải đóng Form nếu nó đang mở, sau đó Click phải vào tên Form cần sửa và chọn chức năng Rename. Giá trị của thuộc tính Name có một số lưu ý sau: ƒ Có thể là sự kết hợp của chuỗi, số, khoảng trắng, ƒ Không có ký tự đặc biệt như: dấu chấm (.), dấu chấm thang (!), dấu ngoặc vuông ([]) Mặc dù giá trị Name có thể có khoảng trắng nhưng ta không nên sử dụng vì sẽ gây khó khăn khi lập trình trong môi trường VBA. Caption Thông tin xuất hiện trên thanh tiêu đề của Form gọi là Caption của Form và nội dung của nó sẽ lưu trữ trong thuộc tính Caption. Chứng chỉ B Tin Học Quốc Gia Trang 9/131
  11. Tài liệu hướng dẫn giảng dạy Nội dung của Caption có thể là chuỗi văn bản bất kỳ, thông thường là nghĩa của Form đang làm việc. I.2.2. Nhóm thuộc tính kiểu Boolean Record Selectors Là một điều khiển nằm bên góc trái của Form và chỉ xuất hiện khi Form đang ở chế độ thực thi. Nó cho phép người dùng chọn tất cả các field của một hay nhiều dòng trên Form. Ta có thể ẩn hoặc hiện điều khiển này tuỳ theo yêu cầu thiết kế của Form. Nếu muốn hiển thị điều khiển Record Selectors, thiết lập giá trị cho thuộc tính Record Selectors là Yes, ngược lại chọn No nếu muốn ẩn. Navigation Buttons Đây là điều khiển cho phép người sử dụng di chuyển qua lại giữa các dòng dữ liệu hiện có trên Form. Nó thực sự hữu dụng khi dữ liệu trên Form hiển thị từng dòng tại một thời điểm. Nhưng khi Form hiển thị dữ theo dạng bảng thì ta nên ẩn điều khiển này. Điều khiển này chỉ xuất hiện khi Form đang ở chế độ thực thi. Để hiển thị điều khiển Navigation Buttons ta sẽ thiết lập giá trị cho thuộc tính Navigation Buttons là Yes, ngược lại chọn No nếu muốn ẩn. I.2.3. Nhóm thuộc tính kiểu Enumerated Border Style Thuộc tính dùng để thay đổi đường viền của Form. Thông qua thuộc tính này, ta có thể cho phép người dùng thay đổi kích thước của Form khi đang thực thi. Để thay đổi đường viền của Form, ta chỉ có thể chọn một trong bốn giá trị do Access qui định: None, Thin, Sizable, Dialog. Max Min Buttons Khả năng phóng to kích thước của Form lên bằng kích thước màn hình hay thu nhỏ một From xuống thanh Taskbar sẽ được điều khiển thông qua thuộc tính Max Min Buttons. Chứng chỉ B Tin Học Quốc Gia Trang 10/131
  12. Tài liệu hướng dẫn giảng dạy Thuộc tính này cho ta một số giá trị để chọn lựa hiện hay ẩn nút Min và nút Max cho Form: None, Min Enabled, Max Enabled, Both Enabled. II. Dạng màn hình thường gặp Vai trò chính của đối tượng Form là dùng để tạo những màn hình giao tiếp giữa người dùng và dữ liệu. Nhằm tăng tính tương tác và tiện dụng cho các màn hình, đối tượng Form cung cấp một số dạng thể hiện khác nhau tuỳ theo mục đích thiết kế của người lập trình khi tạo ra màn hình làm việc của ứng dụng. Trong phạm vi của tài liệu này, ta sẽ tìm hiểu cách xây dựng ba dạng màn hình thường dùng là Columnar, Tabular, Datasheet. II.1. Columnar Dạng màn hình này sẽ hiển thị thông tin của một dòng dữ liệu tại một thời điểm. Để xem thông tin của những dòng dữ liệu khác nhau thì người dùng sử dụng chức năng di chuyển có trên màn hình (như là Navigation Buttons), muốn chọn tất cả các cột của dòng hiện hành thì ta phải sử dụng thanh Record Selectors của Form. Ưu điểm của dạng màn hình này là giúp người dùng tập trung xử lý thông tin của một dòng dữ liệu đang có trên Form. Tuy nhiên, dạng màn hình này sẽ không tự nhiên nếu ta có nhu cầu xem thông tin ở mức độ tổng quát, xem nhiều thông tin cùng lúc. II.2. Tabular Màn hình hiển thị thông tin lưu trữ ở dạng tập hợp các dòng dữ liệu liên tục nhau. Với dạng màn hình này người dùng có thể xem thông tin của nhiều dòng dữ liệu khác nhau cùng lúc. Chứng chỉ B Tin Học Quốc Gia Trang 11/131
  13. Tài liệu hướng dẫn giảng dạy II.3. Datasheet Dạng hiển thị của màn hình giống với đối tượng Table, hiển thị tất cả dữ liệu tại một thời điểm. Hình thức này thường được sử dụng kết hợp với dạng Columnar để hiển thị dữ liệu của những bảng có quan hệ giúp người dùng làm việc đồng thời trên những bảng dữ liệu khác nhau. III. Môi trường thiết kế màn hình làm việc III.1. Tạo màn hình làm việc bằng Wizard III.1.1. Đặc điểm của Form Wizard Công cụ Wizard giúp người lập trình dễ dàng tạo đối tượng Form bằng một số bước thông qua những màn hình hỏi đáp. Người lập trình chỉ cần theo những chỉ dẫn qua các bước có sẵn thì sẽ tạo được một số dạng màn hình làm việc đơn giản. Một số điểm cần lưu ý khi tạo Form bằng Wizard: ƒ Ở màn hình đầu tiên, ta phải xác định nguồn dữ liệu của bảng nào sẽ được hiển thị lên Form cần tạo. Nguồn dữ liệu này có thể là một vài Field có trong bảng, một bảng, hay là nhiều bảng. Tuỳ theo nguồn dữ liệu ta chọn mà Wizard sẽ phát sinh ra một hay nhiều đối tượng Form, khi đó sẽ có một Form chứa tất cả những Form khác. Điểm này ta sẽ tìm hiểu kỹ hơn khi tạo Form bằng Design. ƒ Trong màn hình thứ hai, ta phải chọn dạng thể hiện của Form khi thực thi. Trong phạm vi của tàiiiệu này, ta chỉ xét ba dạng đã trình bày ở trên. Để di chuyển qua lại giữa các màn hình của Wizard ta dùng các nút Next, Back. Để kết thúc quá trình tạo Form ta click vào nút Finish có trên màn hình Wizard. Nếu muốn huỷ bỏ thao tác tạo Form thì chọn chức năng Cancel. III.1.2. Cách tạo màn hình làm việc bằng Form Wizard Để tạo một Form bằng Wizard, trước tiên ta phải kích hoạt công cụ Wizard dùng để tạo Form. Có hai cách để ta mở Wizard, trước hết ta phải chọn đối tượng Form có trong cửa sổ Chứng chỉ B Tin Học Quốc Gia Trang 12/131
  14. Tài liệu hướng dẫn giảng dạy Database. Sau đó, ta có thể chọn trong hai cách sau: ƒ Double Click vào dòng Create form by using wizard trong cửa sổ Database ƒ Click chọn chức năng New để mở cửa sổ New Form, trong cửa sổ này ta sẽ chọn dòng Form Wizard, rồi click nút OK Khi này sẽ xuất hiện màn hình đầu tiên của Form Wizard để ta chọn nguồn dữ liệu sẽ hiển thị trên Form. Sau khi chọn những Field của bảng cần hiển thị dữ liệu ta sẽ di chuyển sang màn hình tiếp theo. Màn hình thứ hai của Form Wizard là nơi mà ta chọn hình thức hiển thị dữ liệu của màn hình khi thực thi. Ở bước này, ta đã có thể chọn Finish để kết thúc thao tác tạo Form, khi đó giá trị của những màn hình phía sau sẽ lấy giá trị mặc định do Wizard cung cấp. Ở màn hình thứ ba, ta có thể chọn một trong vài mẫu thiết kế mà Microsoft Access cung cấp. Bước cuối cùng là đặt tên cho đối tượng Form mà Access sẽ tạo ra cho ta. Thông thường thì Wizard sẽ tự động phát sinh tên của Form để nó không bị trùng với những Form đang có. Để hoàn tất việc tạo Form ta nhất vào nút Finish, khi này trong cửa sổ Database sẽ xuất hiện đối tượng Form vừa tạo. III.2. Môi trường Design của Form III.2.1. Giới thiệu về Form Design Như ta đã biết, người dùng làm việc với cơ sở dữ liệu Access thông qua các màn hình giao tiếp (Form). Do đó, ta phải tốn khá nhiều thời gian và công sức để tạo nên các Form có ý nghĩa về mặt giao tiếp lẫn xử ly. Form Wizard của Microsoft Access mặc dù hỗ trợ cho người thiết kế tạo nhanh các màn hình giao tiếp khá chuẩn nhưng để quản lý tốt những đối tượng trên Form cũng như có thể tạo những màn hình có độ xử lý phức tạp cao thì ta phải làm việc với môi trường thiết kế của Form, chính là Form Design. Trong môi trường Design của Form ta có thể dễ dàng cập nhật nội dung thể hiện trên màn hình làm việc khi có sự thay đổi về cách tổ chức dữ liệu bên dưới, dữ liệu liên quan đến màn hình. Ngoài ra, ta còn thể thay đổi vị trí của thông tin xuất hiện trên màn hình. Để tạo màn hình trong môi trường thiết kế của Form, ta sẽ mở cửa sổ Design View của đối tượng Form. Mọi đối tượng Form, cả những Form đã tạo trước đó bằng Wizard hay những Form sắp tạo, đều có thể mở và thiết kế ở cửa sổ Design View của nó. III.2.2. Một số thành phần trong cửa sổ Design View Trong môi trường thiết Form của Access ta cần chú ý một số công cụ quan trọng nhằm hỗ trợ thao tác thiết kế màn hình làm việc là: Field List, Toolbox và cửa sổ Properties. Những thành phần là các cửa sổ độc lập nhau và ta có thể tắt hay bật bất ký lúc nào khi đang thiết kế, trong cửa sổ Design View. Chứng chỉ B Tin Học Quốc Gia Trang 13/131
  15. Tài liệu hướng dẫn giảng dạy Field List Là một cửa sổ nhỏ liệt kê tất cả những Field có thể xuất thông tin lên màn hình khi thực thi. Những Field này gọi là nguồn dữ liệu của Form và có thể xuất phát từ các Table hay Query. Cửa sổ Field List có thể được mở bằng cách Click vào chức năng trên thanh công cụ Form Design. Toolbox Liệt kê một số công cụ dùng để thiết kế màn hình làm việc. Những công cụ này dùng để hiển thị thông tin có trong nguồn lên màn hình hay giá trị tính toán từ các Field nguồn. Để mở cửa sổ Toolbox ta click vào nút trên thanh công cụ Form Design. Properties Hiển thị các thuộc tính và hành động của một đối tượng đang được chọn trên Form. Các thao tác xử lý thuộc tính của đối tượng gần giống với những thuộc tính của Form đã trình bày ở phần trên. Để mở trang thuộc tính của đối tượng thì ta click phải vào đối tượng và chọn Properties. Hoặc click chọn đối tượng sau đó click vào nút trên thanh công cụ Form Design. Chứng chỉ B Tin Học Quốc Gia Trang 14/131
  16. Tài liệu hướng dẫn giảng dạy Bài 2 THIẾT KẾ CÁC DẠNG MÀN HÌNH Tóm tắt Lý thuyết 8 tiết - Thực hành 18 tiết Mục tiêu Các mục chính Bài tập bắt Bài tập làm buộc thêm Bài học này giúp học viên I. Các điều khiển 2.1, 2.2, phân biệt và sử dụng đúng II. Các bước tạo màn hình làm 2.3 các điều khiển dùng để việc thiết kế Form, các bước cơ III. Tạo màn hình dạng main - sub bản để thiết kế màn hình làm việc. Ngoài ra, học IV. Truyền dữ liệu giữa các màn viên sẽ làm quen thao tác hình liên kết dữ liệu vào điều V. Thiết kế các dạng màn hình khiển và ý nghĩa của nó trên Form. Sau khi kết thúc bài học, học viên có thể: 9 Thiết kế thành thạo các dạng màn hình làm việc. 9 Nắm được cơ chế hiển thị và ghi dữ liệu trên Form. Chứng chỉ B Tin Học Quốc Gia Trang 15/131
  17. Tài liệu hướng dẫn giảng dạy I. Các điều khiển Trong bài học này, ta sẽ làm quen với một thành phần mới khi xây dựng màn hình làm việc đó là các điều khiển, những thành phần sử dụng trong quá trình thiết kế Form. Microsoft Access có nhiều loại điều khiển khác nhau phục vụ cho nhiều mục đích thiết kế. Mỗi điều khiển có một tên gọi riêng, ví dụ như: điều khiển Form, điều khiển TextBox, điều khiển Label, Trước khi tìm hiểu những thành phần chi tiết của điều khiển ta cần biết một số tính chất chung mà của chúng. Đầu tiên, những điều khiển dùng để thiết kế Form là các đối tượng đồ hoạ và ta có thể thao tác với chúng trong cửa sổ Design View của Form. Với một đối tượng đồ hoạ ta có dễ dàng tương tác với chúng bằng chuột hay bàn phím, dễ dàng thay đổi vị trí, kích thước các đối tượng trong cửa sổ thiết kế thiết. Form cũng là một đối tượng đồ hoạ nhưng có điểm khác biệt so với những đối tượng khác là Form có thể chứa những đối tượng trong vùng làm việc của nó. Một Form cũng có thể nằm trong một Form khác nhưng thông qua một đối tượng trung gian, phần này ta sẽ tìm hiểu ở những bài sau. Ngược lại thì một điều khiển của Form không thể chứa các điều khiển khác. Ngoài đặc điểm là một đối tượng đồ hoạ thì tất cả những điều khiển đều có ba thành phần: Thuộc tính, Hành động và Sự kiện. Thuộc tính – Property Thuộc tính dùng để xác định những đặc điểm đối tượng, những loại đối tượng khác nhau thì sẽ có những thuộc tính mang ý nghĩa sử dụng giống và khác nhau. Thuộc tính của đối tượng chia thành từng nhóm như đã trình bày trong phần thuộc tính của đối tượng Form. Hành động – Method Là những thao tác xử lý của riêng đối tượng và do chính đối tượng gọi thi thực thi hành động đó. Hành động của đối tượng sẽ được thực thi theo cú pháp sau: Tên đối tượng.Tên hành động Ví dụ: Đối tượng Form, tên Form là frmViDu, có một hành động gọi là Undo, hành động này có ý  nghĩa là bỏ qua tất cả các thay đổi dữ liệu trên Form và phục hồi dữ liệu của Form lại trạng thái trước khi bị thay đổi, gần giống với chức năng Undo của Microsoft Word. Để thực hiện hành đợn g ta viết câu lệnh sau: frmViDu.Undo Chứng chỉ B Tin Học Quốc Gia Trang 16/131
  18. Tài liệu hướng dẫn giảng dạy Sự kiện – Event Đây là thành phần trung tâm cho mọi xử lý liên quan đến đối tượng trên màn hình. Khi nói về sự kiện của một đối tượng thì ta thường liên tưởng đến thời điểm và nguyên nhân phát sinh ra sự kiện của đối tượng. Mỗi đối tượng sẽ có những sự kiện do ngôn ngữ lập trình VBA trong Access cung cấp và ở trạng thái bình thường (không bị tác động bởi người sử dụng hay đối tượng khác) thì những sự kiện này không xảy ra. Chỉ khi nào có sự tác động lên đối tượng (thời điểm phát sinh) thì khi đó sự kiện ứng với tác động (nguyên nhân của sự kiện) đó mới phát sinh. Những tác động lên đối tượng có thể xuất phát từ nhiều cách khác nhau, ví dụ người sử dụng click chuột vào đối tượng, khi nhập giá trị lên đối tượng hay là sự tác động giữa các đối tượng với nhau. Mọi xử lý trên màn hình làm việc đều dựa vào sự kiện của các điều khiển trên màn hình. Một đối tượng thì có nhiều sự kiện và khi có một tác động từ bên ngoài lên đối tượng thì có thể nhiều đối tượng liên quan cùng phát sinh ra những sự kiện khác nhau. Ví dụ có 2 đối tượng Form A và Form B, nếu ta đang làm việc ở Form A và click vào Form B thì khi đó Form A phát sinh phát sinh sự kiện là Deactivate (không còn là Form hiện hành) còn Form B sẽ phát sinh ra sự kiện là Activate (trở thành Form hiện hành). Do đó, vấn đề chính yếu ở đây là phải xác định được đối tượng nào và sự kiện gì của đối tượng sẽ được xử lý tuỳ theo những yêu cầu cụ thể. Phần xác định và xử lý sự kiện trên đối tượn g sẽ được trình bày chi tiết trong phần xử lý màn hình trong những bài sau. I.1. Những thành phần của Form I.1.1. Những vùng thiết kế trên Form Ở bài trước ta đã được giới thiệu về đối tượng Form một cách tổng quan về ý nghĩa và những dạng hiện thị của Form. Trong bài này, ta sẽ tìm hiểu đối tượng Form chi tiết hơn trong cửa sổ Design View. Trong quá trình thiết kế màn hình làm việc thì Form là đối tượng nền dùng để chứa các đối tượng khác. Nhằm hỗ trợ thiết kế nhiều dạng màn hình được dễ dàng, đối tượng Form được chia làm ba vùng: Detail, Header và Footer. Để tạo ra các dạng màn hình khác nhau ta chỉ cần sắp xếp các điều khiển trên Form vào những vùng thích hợp. Chứng chỉ B Tin Học Quốc Gia Trang 17/131
  19. Tài liệu hướng dẫn giảng dạy Form Detail Là vùng chính của Form, nơi chứa các điều khiển hiển thị dữ liệu trên màn hình. Phạm vi của vùng Detail từ thanh và kéo dài cho đến khi bắt đầu của vùng mới. Form Header và Form Footer Là vùng ở trên và dưới Detail. Giá trị của các điều khiển trong hai vùng này sẽ xuất hiện ở vị trí trên cùng hay dưới cuối của Form. Hai vùng này có thể có hoặc không, muốn hiện hay ẩn hai vùng này ta click phải vào bất kỳ vị trí nào trên Form sau đó click vào . I.1.2. Một số sự kiện thường dùng Khi thực hiện các thao tác xử lý cho màn hình làm việc ta cần chú ý một số sự kiện sau: On Load Sự kiện sẽ phát sinh khi đối tượng Form mới mở trong chế độ Form View. Sự kiện này thường được dùng để thực hiện những xử lý khởi tạo nguồn và trạng thái cho các điều khiển khi màn hình mới mở. On Current Đối với những Form có nguồn dữ liệu thì khi dữ liệu trên Form thay đổi từ mẩu tin này sang mẩu tin khác thì Form sẽ phát sinh ra sự kiện Current. Những yêu cầu về tính toán xử lý dựa trên mẩu tin hiện hành của Form sẽ được viết trong sự kiện này. Before Update / After Update Khi dữ liệu nguồn trên Form bị thay đổi và ghi xuống bảng dữ liệu thì trước ghi dữ liệu ghi xuống bảng thì Form sẽ phát sinh ra sự kiện Before Update. Sau khi dữ liệu trên Form đã được ghi vào bảng rồi thì sự kiện After Update được phát sinh. Dựa vào hai sự kiện này ta sẽ thực hiện các thao tác xử lý lỗi, cập nhật dữ liệu cho các bảng liên quan, I.2. Một số thao tác chung trên điều khiển I.2.1. Tạo điều khiển trên Form Để làm việc với điều khiển trước hết ta phải tạo điều khiển lên Form. Trong cửa sổ Design View, những điều khiển có thể sử dụng để thiết kế Form nằm trên thanh Toolbox. Muốn tạo một điều khiển trên Form ta chỉ cần click chọn điều khiển trên Toolbox sau đó click vào vùng thiết kế của Form. Khi đó, trên Form sẽ xuất hiện một đối tượng ứng với điều khiển vừa được chọn trên Toolbox. Ta cũng có thể tạo đối tượng bằng cách sao chép từ một đối tượng đã có trên Form bằng chức năng Copy (Ctrl + C) và Paste (Ctrl + V) trong cửa sổ thiết kế. Đối tượng mới được sao chép sẽ có đầy đủ những thuộc tính của đối tượng gốc. Chứng chỉ B Tin Học Quốc Gia Trang 18/131
  20. Tài liệu hướng dẫn giảng dạy I.2.2. Chọn các điều khiển Sau khi tạo điều khiển trên Form, ta phải chọn điều khiển cần xử lý. Khi một điều khiển được chọn thì ta có thể thực hiện nhiều thao tác định dạng cho điều khiển, như Font, Màu chữ, dạng hiển thị, Ta có thể sử dụng chuột hay bàn phím để chọn một hay nhiều điều khiển. Điều khiển đang được chọn sẽ có 8 ô hình vuông màu đen bao quanh. Chọn điều khiển bằng chuột ta có thể thực hiện một trong những cách sau: ƒ Click vào điều khiển cần chọn. ƒ Thực hiện thao tác click và kéo chuột để tạo một khung hình chữ nhật, những điều khiển bị cắt hoặc nằm trong khung này sẽ được chọn. ƒ Di chuyển chuột vế phía bên trái hay phía trên cùng của Form đang thiết kế, khi biểu tượng của chuột chuyển thành hình ¨ hoặc ª thì click chuột. Khi đó, trên Form sẽ xuất hiện một đường thẳng cắt ngang hay dọc Form, những điều khiển nằm trên đường thẳng sẽ được chọn. Trong trường hợp muốn chọn tất cả các điều khiển có trên Form cùng lúc ta có thể nhấn tổ hợp phím Ctrl + A. Ta cũng có thể nhất giữ phím Shift hay Ctrl trong khi click chuột chọn điều khiển. Ngoài ra, khi đang chọn một điều khiển ta có thể nhấn phím Tab để di chuyển qua các điều khiển còn lại trên Form. I.2.3. Di chuyển các điều khiển Điều khiển có thể nằm ở những vị trí khác nhau trên vùng thiết kế của Form. Ta dễ dàng thay đổi vị trí của điều khiển bằng cách chọn điều khiển và dùng chuột kéo thả điều khiển đến vị trí cần thiết. Ngoài ra ta còn có thể sử dụng các phím mũi tên để di chuyển điều khiển đang được chọn. Khi ta rê chuột qua các điều khiển đang được chọn, biểu tượng của chuột sẽ thay đổi sang một trong hai dạng sau, mỗi dạng có ý nghĩa ý di chuyển khác nhau: Di chuyển một điều khiển được chọn Di chuyển điều khiển và thành phần thành liên kết với nó nếu có Di chuyển nhóm các phần tử đang được chọn I.2.4. Thay đổi kích thước của điều khiển Khi điều khiển được chọn thì xung quanh nó xuất hiện 8 ô hình vuông màu đen. Để thay đổi kích thước của điều khiển ta di chuyển chuột đến vị trí của các ô vuông, khi đó biểu tượng của chuột sẽ đổi thành dạng đường thẳng hai đầu có hai mũi tên ( ), click và rê chuột để thay đổi kích thước của điều khiển. Ngoài ra, ta cũng có thể sử dụng tổ hộp phím Shift và các phím mũi tên để thay đổi kích thước của điều khiển. Chứng chỉ B Tin Học Quốc Gia Trang 19/131
  21. Tài liệu hướng dẫn giảng dạy I.3. Nhóm điều khiển văn bản I.3.1. Label Lable là đối tượng được sử dụng nhiều nhất trên Form và thường dùng để giải thích ý nghĩa của những điều khiển khác. Nội dung hiển thị trên Lable chỉ có thể đọc, người dùng không thể trực tiếp thay đổi giá trị của nó khi Form đang chạy. Ta có thể sử dụng Label để hiển thị các thông tin liên quan đến màn hình làm việc như: Tên của màn hình, những thông tin cần thiết cho người dùng. Một đặc điểm quan trọng của Label đó là khả năng giải thích ý nghĩa sử dụng của các điều khiển khác cho người dùng. Tất cả những điều khiển khi tạo lên Form đều không thể hiện được ý nghĩa của nó trên Form vì chúng chỉ là những hình vẽ có hình dạng khác nhau tuỳ theo loại điều khiển và đối với người sử dụng thì hình dạng của điều khiển không nói lên được ý nghĩa sử dụng của nó. Nội dung của Label sẽ chứa trong thuộc tính Caption của điều khiển. Để tạo nội dung cho một Label đang có trên Form ta sẽ nhập giá trị vào thuộc tính Caption của điều khiển đó hoặc có thể chọn Label sau đó nhấn phím Enter để nhập nội dung trực tiếp vào Label ngay trên trên Form mà không cần thông qua thuộc tính Caption, nhưng nội dung sẽ tự động được ghi nhận vào Caption của Label. Một điểm lưu ý khi tạo điều khiển Label là nếu ta xoá hết nội dung của Label thì khi di chuyển sang đối tượng khác Label sẽ tự động biến mất khỏi Form đang thiết kế. Do đó, khi tạo mới một Label lên Form, ta phải nhập nội dung của nó ngay lúc tạo ra rồi mới di chuyển sang đối tượng khác. Ngoài thuộc tính Caption, Label còn có một số thuộc tính về Font chữ, màu sắc, khung viền. Cách thiết lập giá trị cho thuộc tính của Label tương tự như thuộc tính của Form. Label chủ yếu để cung cấp thông tin cho đối tượng khác nên các hành động và sự kiện của nó ít khi được sử dụng. I.3.2. Text Box Text Box là điều khiển quan trọng để chương trình tương tác với người sử dụng. Vai trò chính của Text Box là nơi để người dùng xem thông tin được lưu trong cơ sở dữ liệu và cho phép thêm mới hay cập nhật dữ liệu. Tuy nhiên, ta vẫn có thể sử dụng Text Box để hiển thị thông tin và không cho người dùng chỉnh sửa dữ liệu hiển thị trên Text Box. Dữ liệu hiển thị trên Text Box có thể lấy từ một Field của bảng có trong cơ sở dữ liệu, công thức tính toán trên các Field hay để cho người dùng nhập các thông tin cần thiết. Chứng chỉ B Tin Học Quốc Gia Trang 20/131
  22. Tài liệu hướng dẫn giảng dạy Khi tạo một Text Box trên Form, ta sẽ thấy xuất hiện hai điều khiển: điều khiển bên trái chính là một Label và điều khiển bên phải chính là Text Box mà ta cần tạo. Access luôn phát sinh thêm một Label kèm theo Text Box mới tạo và ta có thể sử dụng Label để mô tả ý nghĩa sử dụng của Text Box nếu cần, nếu không ta có thể chọn điều khiển Label và xoá nó đi. Nếu ta xoá Text Box thì Label đi theo nó cũng bị xoá. Chú ý cách chọn biểu tượng của chuột khi di chuyển một điều khiển (Label hay Text Box) hay là cần di chuyển nhóm điều khiển (cả Text Box và Label). Để tạo Text Box trên Form bằng cách chọn từ Toolbox ta còn có thể tạo từ Field List của Form. Nếu cửa sổ Field List có giá trị ta chỉ cần kéo một trong những Field có trong Field List và thả vào vùng làm việc của Form thì sẽ tạo được một điều khiển Text Box có Label kèm theo. Thuộc tính của Text Box Thuộc tính thường xuyên được sử dụng của Text Box là Control Source. Control Source là thuộc tính dùng để chỉ ra nguồn dữ liệu sẽ được hiển thị trên vùng nhập liệu của Text Box. Nguồn dữ liệu có thể là một Field có trong Field List của Form, một công thức tính toán, con số hay là một chuỗi văn bản. Khi nguồn dữ liệu không phải là tên Field trong Field List thì giá trị của Control Source phải luôn bắt đầu bằng dấu bằng (=). Đôi khi ta chỉ muốn cho người sử dụng xem thông tin có trên Text Box và không cho họ thay đổi giá trị hiện có. Ta có thể sử dụng một trong hai thuộc tính sau để thực hiện điều đó là Enabled hay Locked. Điểm giống nhau của hai thuộc tính này là không cho người dùng thay đổi thông tin trên Text Box nhưng khác nhau về cách thể hiện. Khi thuộc tính Enabled có giá trị là False (hay là No) thì Text Box sẽ bị mờ và con trỏ sẽ không vào được vùng nhập liệu của Text Box, khi đó người dùng không thực hiện được thao tác nhập liệu trên Text Box. Còn khi giá trị của thuộc tính Locked là Yes (hay True) thì trạng thái của Text Box vẫn bình thường, con trỏ vẫn có thể vào được vùng nhập liệu nhưng mọi thao tác thay đổi giá trị trên Text Box đều bị bỏ qua. Ngoài ra, ta cũng có thể cho người dùng thấy hoặc ẩn một Text Box trên Form thông qua thuộc tính Visible của nó. Bên cạnh những thuộc tính trên, Text Box còn có những thuộc tính về định dạng tương tự như Label. Hành động Điều khiển Text Box có một hành động thường dùng là SetFocus. Hành động này dùng để chuyển con trỏ từ một vị trí bất kỳ đến điều khiển phát ra hành động này. Sự kiện Chứng chỉ B Tin Học Quốc Gia Trang 21/131
  23. Tài liệu hướng dẫn giảng dạy Một số sự kiện thường được dùng để xử lý tính toán trên Form như: Before Update, Key Press, Change. I.4. Nhóm điều khiển chọn lựa Trong phần trên, ta đã được biết để xem và cập nhật thông tin trên màn hình ta phải thông qua các điều khiển Text Box. Tuy nhiên, nếu việc cập nhật thông tin chỉ thông qua các Text Box thì đôi khi gây khó khăn cho người sử dụng, họ phải nhớ những thông tin liên quan đã lưu trữ trước đó. Do đó, để tăng tính tiện dụng cho màn hình làm việc thì ngoài điều khiển Text Box ta cần sử dụng một số điều khiển thích hợp cho những trường hợp khác nhau, đó là những điều khiển có tính chọn lựa. I.4.1. Combo Box Điều khiển Combo Box gồm hai phần: một vùng để nhập văn bản và một danh sách bên dưới vùng văn bản. Vùng nhập văn bản dùng để hiển thị một giá trị được chọn từ các phần tử của danh sách hay để nhập giá trị mới vào. Bên góc phải của vùng văn bản có một nút với hình mũi tên hướng xuống, nút này dùng để mở danh sách. Danh sách của điều khiển dùng để chứa một tập hợp những giá trị giúp người sử dụng khi nhập liệu trên màn hình có thể chọn một trong những giá trị có sẵn, không phải nhớ và gõ. Ở trạng thái bình thường, danh sách của Conbo Box không xuất hiện, khi người dùng click vào nút bên góc phải thì danh sách mới hiện ra ở bên dưới vùng văn bản. Thao tác sử dụng thường gặp đối với Combo Box là người dùng click vào nút mũi tên để mở danh sách và chọn một phần tử có trong danh sách. Sau khi chọn xong, danh sách sẽ tự động mất đi và giá trị vừa chọn của danh sách sẽ xuất hiện trên vùng văn bản của Combo Box. Thuộc tính Đối với Combo Box thì có hai thuộc tính thường sử dụng là Control Source và Row Source. Ý nghĩa sử dụng của thuộc tính Control Source giống với Text Box và giá trị của nó thường là tên của Field có trong Field List hoặc sẽ bỏ trống nếu như ta không muốn dùng Combox Box để cập nhật giá trị cho Field. Row Source là thuộc tính chỉ định nguồn dữ liệu sẽ xuất hiện trong danh sách của Combo Box nhằm giúp người dùng có thể chọn giá trị thích hợp khi nhập liệu. Nguồn dữ liệu của danh sách có thể là từ một bảng trong cơ sở dữ liệu hay từ một câu truy vấn Select. Ngoài ra nó còn có thể là tập hợp các giá trị do người dùng tự định nghĩa hay là tên Field của một bảng. Do giá trị của Row Source có nhiều dạng khác nhau nên ta phải chỉ ra dạng cần sử dụng Chứng chỉ B Tin Học Quốc Gia Trang 22/131
  24. Tài liệu hướng dẫn giảng dạy thông qua thuộc tính Row Source Type. Giá trị của thuộc tính này sẽ quyết định nguồn dữ liệu nào sẽ được dùng và ngược lại. Row Source Type là một thuộc tính kiểu tập hợp, nó chỉ có thể nhận một trong ba giá trị là: Table/Query, Value List hay Field List. Nếu giá trị của nó là Table/Query hoặc Field List thì giá trị của thuộc tính Row Source phải là tên của một bảng hay là một câu truy vấn Select. Nếu giá trị Row Source Type là Value List thì thuộc tính Row Source sẽ là tập các giá trị và mỗi giá trị được phân cách bởi dấu chấm phẩy (;). Danh sách của Combox Box còn có hai thuộc tính định dạng thường được sử dụng đó là Column Count và Column Widths. Column Count qui định số cột của danh sách và Column Widths cho biết độ rộng của mỗi cột. Nếu danh sách của Combox Box có nhiều cột thì thứ tự của các cột sẽ bắt đầu từ 0 đến cột thứ Column Count – 1. Độ rộng của các cột là những con số và được phân cách với nhau bởi dấu chấm phẩy. Khi muốn ẩn cột nào trong danh sách thì ta cho độ rộng của cột bằng 0. Ngoài những thuộc tính trên, Combo Box còn có tất cả những thuộc tính về định dạng, khoá và ẩn hiện giống với Text Box. Ý nghĩa và cách sử dụng cũng tương tự như của Text Box. Hành động Đối với Combo Box thì ta cũng thường sử dụng hành động SetFocus để lấy con trỏ về cho điều khiển. Sự kiện Ngoài những sự kiện giống với Text Box, Combo Box thường được xử lý dựa trên sự kiện On Not In List và thuộc tính kèm theo sự kiện này là Limit To List. Khi làm việc với điều khiển Combox Box ta thì thường chọn một phần tử có trong danh sách, tuy nhiên nhiên đôi khi ta cũng có thể nhập giá trị cần vào vùng văn bản của Combo Box. Khi ta nhập giá trị vào thì có hai khả năng xảy ra: giá trị nhập vào tồn tại trong danh sách và giá trị nhập vào hoàn toàn mới. Đối với trường hợp giá trị nhập có trong danh sách thì không có gì cần phải xử lý, nhưng nếu giá trị không có trong danh sách thì điều khiển Combo Box có hai hướng xử lý để ta chọn là nhận hay không nhận giá trị đó. Nếu muốn nhận giá trị mới thì ta cho thuộc tính Limit To List là No. Còn nếu ta qui định giá trị nhập phải tồn tại trong danh sách thì cho thuộc tính Limit To List bằng Yes. Khi thuộc tính Limit To List của Combo Box là Yes thì nếu người dùng nhập một giá trị không tồn tại trong danh sách của nó thì điều khiển sẽ tự động phát ra sự kiện On Not In List khi con trỏ di chuyển sang điều khiển khác. Trong sự kiện này ta sẽ thực hiện những thao tác xử lý tương ứng với từng yêu cầu. Chứng chỉ B Tin Học Quốc Gia Trang 23/131
  25. Tài liệu hướng dẫn giảng dạy I.4.2. List Box Hình dạng của List Box giống với Text Box nhưng thường được thiết kế với độ cao lớn hơn Text Box. Về mặt hiển thị dữ liệu thì List Box liệt kê danh sách những giá trị mà người dùng có thể chọn một hay nhiều phần tử. Người sử dụng không thể thực hiện thao tác nhập giá trị trên List Box, tập giá trị của nó là cố định. List Box thường được sử dụng để hiển thị dữ liệu với nhiều cột thông qua thuộc tính Column Count và mỗi cột sẽ có tiêu đề của nó khi ta cho thuộc tính Column Heads là Yes. Cách sử dụng và ý nghĩa các thuộc tính của List Box hoàn toàn giống với Combo Box, trừ thuộc tính Limit To List. Ngoài ra, List Box còn sử dụng thuộc tính Multi Select để cho phép chọn nhiều phần tử cùng lúc. Giá trị của thuộc tính này là một tập hợp, nó chỉ có thể nhận một trong ba giá trị là: None – chỉ cho một phần tử trên List Box; Simple – List Box có thể chọn nhiều phần tử bằng cách click chuột vào phần tử cần chọn, nếu click vào phần phần đang được chọn có nghĩa là bỏ chọn phần tử đó; Extended – Để chọn nhiều phần tử trên danh sách của List Box ta phải sử dụng phím Ctrl hay Shift kết hợp với click chuột vào phần tử cần chọn. Về sự kiện thì ngoài các sự kiện giống với Text Box, xử lý trên List Box thường dùng sự kiện On Click và On Dbl Click. Sự kiện On Click sẽ phát sinh khi người dùng sử dụng chuột click vào một trong các phần tử của List Box. Còn On Dbl Click sẽ phát sinh khi người dùng click chuột liên tiếp hai lần vào một phần tử của List Box. I.4.3. Option Button Điều khiển này có dạng là một hình tròn nhỏ, trong hình tròn có thể xuất hiện dấu chấm đen nếu nó đang được chọn hoặc không có gì nếu nó không được chọn. Điều khiển này thường sử dụng để hiển thị dữ liệu của các Field có kiểu dữ liệu Boolean. Thông thường khi sử dụng Option Button ta thường thiết kế tối thiểu là hai điều khiển và những điều khiển thể hiện những thông tin giống nhau sẽ được đặt vào một nhóm. Để tạo nhóm cho điều khiển, trước tiên ta tạo ra một điều khiển có tên là Option Group, điều khiển này cũng nằm trên Toolbox và nó chỉ dùng để tạo nhóm các điều khiển. Sau khi đã tạo Option Group ta mới tiếp tục tạo những Option Button cần dùng bên trong vùng của Option Group. Đới với các Option Button thuộc cùng một nhóm thì tại một thời điểm chỉ có một điều khiển được chọn. Nghĩa là, khi ta click vào một điều điều khiển Option Button thì điều khiển đó sẽ xuất hiện dấu chấm đen đồng thời tất cả những điều khiển khác trong nhóm sẽ không có Chứng chỉ B Tin Học Quốc Gia Trang 24/131
  26. Tài liệu hướng dẫn giảng dạy chấm đen. Thuộc tính Để biết được điều khiển nào trong nhóm được chọn, ta sẽ dựa vào giá trị của thuộc tính Option Value. Khi thiết kế các điều khiển Opton Button trong một nhóm thì mỗi điều khiển phải có một giá trị Option Value khác nhau để phân biệt và giá trị của nó phải là một con số. Khi click vào một điều khiển Option Button trong một nhóm được tạo bởi điều khiển Option Group thì giá trị Option Value của điều khiển được click sẽ gán vào giá trị Value của Option Group hiện hành. Như vậy, tại một thời điểm giá trị chứa trong thuộc tính Value của Option Group chính là giá trị Option Value của điều khiển đang được chọn. Sự kiện Xử lý cho điều khiển này chủ yếu dựa vào sự kiện On Click của điều khiển Option Group đang chứa nó. I.4.4. Check Box Là điều khiển dùng để hỗ trợ người dùng thực hiện thao tác chọn một giá trị không bắt buộc, họ có thể không chọn, và có thể chọn nhiều giá trị cùng một lúc. Điều này trái ngược với Option Button, điều khiển phải chọn và chọn đúng một giá trị. Điều khiển này có dạng là một ô hình vuông nhỏ. Người dùng thực hiện thao tác chọn bằng cách click vào điều khiển. Khi đó trong ô vuông sẽ xuất hiện một dấu chọn có dạng þð. Để bỏ chọn giá trị ta chỉ cần click vào Check Box đang chọn, khi đó dấu chọn trong ô vuông sẽ mất đi ứng với trạng thái không chọn. Điều khiển Check Box cũng có thể được tạo trong nhóm nhưng khi đó ý nghĩa và cách sử dụng của Check Box hoàn toàn giống với Option Button, có nghĩa là ta cũng chỉ được chọn một trong nhiều giá trị thuộc nhóm. Thuộc tính Để biết một Check Box có được chọn hay không ta dựa vào thuộc tính Value của nó. Nếu Value của Check Box có giá trị là –1 thì nó đang được chọn, nếu giá trị bằng 0 thì điều khiển không được chọn. Sự kiện Những xử lý trên Check Box chủ yếu dựa vào sự kiện On Click của điều khiển. I.5. Điều khiển liên kết dữ liệu Dựa vào cách thức lấy thông tin hiển thị, các điều khiển trong Access được chia thành 3 loại như sau: Bound Control, Unbound Control, Calculated Control. I.5.1. Bound Control Chứng chỉ B Tin Học Quốc Gia Trang 25/131
  27. Tài liệu hướng dẫn giảng dạy Là loại điều khiển mà thông tin hiển thị của nó được lấy từ một Field trong nguồn dữ liệu của màn hình đang làm việc. Khi người dùng thay đổi nội dung trên điều khiển thì MS Access sẽ tự động cập nhật giá trị mới cho Field tương ứng tại mẫu tin hiện hành. I.5.2. Unbound Control Là loại điều khiển không liên kết với nguồn dữ liệu, thông tin hiển thị của nó do người dùng nhập vào. I.5.3. Calculated Control Cũng là loại điều khiển không liên kết với nguồn dữ liệu và thông tin hiển thị trên điều khiển có thể là kết quả của một biểu thức tính toán hay là giá trị trả về của hàm thư viện trong MS Access, người dùng không thể trực tiếp thay đổi giá trị của các điều khiển.  Ví dụ: Các loại điều khiển trong màn hình trên: ƒ UnBound Control: ComboBox Khoa, ListBox thể hiện các sinh viên của khoa ƒ Caculated Control: TextBox thể hiện thông tin về Tổng số sinh viên của khoa, TextBox thể hiện nội dung Điểm thi các môn của sinh viên, TextBox thể hiện điểm trung bình các môn ƒ Bound Control: Mã môn học, Điểm, Tên môn học trong Sub Form II. Các bước tạo màn hình làm việc II.1. Chọn nguồn dữ liệu Đây là việc đầu tiên và quan trọng nhất khi thiết kế màn hình làm việc cho ứng dụng. Màn hình làm việc của ứng dụng thường có hai loại cơ bản: màn hình dùng để xem và cập nhật thông tin cho bảng dữ liệu có trong cơ sở dữ liệu và một loại dùng để thực hiện những thao tác tìm kiếm, xem thông tin hoặc in báo cáo. Đối với loại màn hình cập nhật thông tin cho bảng thì việc chọn dữ liệu nguồn của đối tượng Chứng chỉ B Tin Học Quốc Gia Trang 26/131
  28. Tài liệu hướng dẫn giảng dạy Form phải dựa trên một bảng duy nhất. Nghĩa là một Form chỉ có thể thực hiện các thao tác cập nhật dữ liệu cho một bảng. Tuy nhiên, ta vẫn có thể lấy thông tin của các bảng khác hiển thị lên Form nhưng phải đảm bảo một điều là tất cả những Field có trong bảng dữ liệu chính phải được chọn vào nguồn và không chọn lại những Field đó nếu nó có trong những bảng khác. Dạng màn hình chỉ dùng để xem thông tin, tìm kiếm, in báo cáo thì dữ liệu nguồn có thể có hoặc không. Nguồn dữ liệu của Form sẽ được xác định thông qua thuộc tính Record Source của Form. Giá trị của Row Source có thể là tên của một bảng hay là một câu Select nhiều bảng. Nếu giá trị của Record Source là tên của một bảng thì ta chỉ cần click vào Combo Box trên dòng của thuộc tính và chọn tên bảng cần sử dụng có trong danh sách của Combo Box. Nếu giá trị của Record Source cần sử dụng nhiều bảng thì ta có thể sự dụng công cụ Query Builder để tạo câu truy vấn Select nhiều bảng. Click vào nút để mở cửa sổ Query Builder. Cách thao tác trong cửa sổ Query Buider hoàn toàn giống với việc tạo câu Select Query. Sau khi tạo xong nội dung của nguồn dữ liệu bằng cú pháp Select Query ta đóng cửa sổ Query Builder lại, sử dụng nút của cửa sổ. Khi đó, xuất hiện một hộp thoại với nội dung hỏi ta có đồng ý với những thay đổi cho giá trị của thuộc tính Record Source hay không, ta chọn nút Yes để ghi nhận giá trị của Record Source và quay về màn hình thiết kế Form. Sau khi xác định nguồn dữ liệu cho Form thì trong cửa sổ Design sẽ tự động xuất hiện cửa sổ Field List liệt kê tất cả những Field có trong nguồn dữ liệu của Form. Ta có thể chỉnh sửa giá trị của Record Source, khi đó nội dung trong Field List sẽ tự động thay đổi theo. Ta không thể thao tác trực tiếp trên Field List để thay đổi giá trị của nó. II.2. Dạng hiển thị của Form Sau khi đã chọn nguồn dữ liệu cho Form thì tuỳ theo yêu cầu hiển thị của màn hình ta phải chọn dạng hiển thị của đối tượng Form cho thích hợp. Những dạng hiển thị khác nhau có thể làm thay đổi cách thiết kế các điều khiển trên màn hình. Thay đổi giá trị của thuộc tính Default View để chọn dạng hiển thị cho màn hình làm việc. Tuỳ theo yêu cầu hiển thị của màn hình mà ta chọn một trong ba giá trị là: Single Form, Continuous Form và Datasheet. Trong tài liệu này ta không sử dụng hiển thị PivotTable và PivotChart. Ta cũng có thể thiết lập giá trị cho các thuộc tính Record Selectors, Navigation Buttons, Border Style cho phù hợp với từng màn hình cụ thể. II.3. Tạo các điều khiển hiển thị dữ liệu Một trong những bước quan trọng trong việc tạo màn hình làm việc đó là thiết kế những điều Chứng chỉ B Tin Học Quốc Gia Trang 27/131
  29. Tài liệu hướng dẫn giảng dạy khiển để hiển thị dữ liệu có trong Record Source. Khi ta chọn nguồn dữ liệu cho Form thông qua thuộc tính Record Source thì những dữ liệu có trong các Field được chọn sẽ không tự hiển thị lên màn hình. Muốn dữ liệu hiển thị lên màn hình ta phải sử dụng các điều khiển như là Text Box, Combo Box, Check Box, Option Button, Mỗi điều khiển khi tạo trên màn hình chỉ hiển thị thông tin của một Field có trong Field List, nghĩa là một điều khiển không thể hiển thị đồng thời nhiều Field cùng một lúc. Do đó, thông thường thì số điều khiển hiển thị dữ liệu trên Form tối thiểu phải bằng số Field có trong Field List của Form. Để tạo điều khiển hiển thị thông tin của một Field trên Form ta có hai cách: ƒ Tạo một điều khiển từ Toolbox lên Form, sau đó chọn một Field trong Field List làm giá trị cho thuộc tính Control Source của điều khiển vừa tạo. ƒ Chọn một hay nhiều Field từ Field List, kéo những Field chọn và thả lên Form. Khi này trên Form sẽ xuất hiện số điều khiển ứng với số Field được chọn. Loại điều khiển phát sinh trên Form có thể là Text Box, Combo Box hay là Check Box tuỳ theo kiểu dữ liệu của Field trong bảng nguồn. Một điểm cần lưu ý khi kéo Field từ Field List vào Form là ta sẽ luôn có một điều khiển Label đi kèm với điều khiển dữ liệu. Ta có thể sử dụng Label này để mô tả ý nghĩa sử dụng của điều khiển dữ liệu hay xoá bỏ nó. Trong bài trước ta đã được giới thiệu về ba vùng của Form trong cửa sổ Design View là: Detail, Form Header và Form Footer. Hầu hết những điều khiển dữ liệu trên Form đều nằm trong vùng Detail. Ngoài ra có một số trường hợp tính toán thống kê trên các Field thì điều khiển có thể nằm ở Header hay Footer. Một số điểm cần lưu ý khi thiết kế những điều khiển cho Form hiển thị ở dạng Datasheet là: ƒ Không cần sắp xếp thứ tự, vị trí và kích thước của các điều khiển. ƒ Phải sử dụng Label được phát sinh khi tạo điều khiển để đặt tên cho tiêu đề của cột trên Form. Vấn đề còn lại ở đây là chọn loại điều khiển nào để hiển thị thông tin: Text Box, Combo Box hay Check Box, Loại điều khiển đôi khi còn tuỳ thuộc vào loại thông tin hiển thị và sự tiện dụng cho người dùng. Ví dụ: Khi nhập dữ liệu về học sinh của lớp thì các thông tin về Tên, Địa chỉ, có thể sử dụng Text  Box, còn thông tin về lớp của học sinh thì nên thiết kế là một Combo Box để cho người dùng dễ dàng chọn một lớp đã có trong hệ thống. Trong cửa sổ thiết kế của Form ta có thể dễ dàng thay đổi Text Box thành Combo và ngược lại. Để thay đổi loại của điều khiển ta chỉ cần click phải vào điều khiển và rê chuột vào chức năng Change To, sau đó thì chọn loại điều khiển cần chuyển qua. II.4. Tạo những điều khiển chức năng Chứng chỉ B Tin Học Quốc Gia Trang 28/131
  30. Tài liệu hướng dẫn giảng dạy Trên màn hình, ngoài việc hiển thị thông tin lưu trữ ta còn phải thực hiện các thao tác cập nhật dữ liệu, tính toán, xử lý, Do đó, ta phải tạo ra những bộ chức năng thực hiện các thao tác thêm, xoá, sửa dữ liệu, Những chức năng trên màn hình thông thường sẽ được kích hoạt bằng việc click vào điều khiển Command Button. Command Button cũng là một điều khiển trên thanh Toolbox có dạng hình chữ nhật. Trên điều khiển ta có thể nhập vào giá trị cho biết ý nghĩa sử dụng của nó, điều khiển này không cần Label để mô tả ý nghĩa sử dụng. Nội dung xuất hiện trên điều khiển sẽ được lưu trong thuộc tính Caption của Command Button. Vai trò của Command Button thường là điều khiển dùng để cho biết khi nào bắt đầu một thao tác tính toán hay xử lý. Điều khiển này thường sử dụng hành động SetFocus để lấy con trỏ về cho nó. Những xử lý trên điều khiển chủ yếu dựa vào sự kiện On Click, sự kiện sẽ phát sinh khi người dùng click vào điều khiển để ra hiệu bắt đầu thao tác xử lý. Ngoài ra, Command Button thường hay sử dụng những thuộc tính Visible, Enabled để xử lý trạng thái của các nút chức năng trên màn hình. II.5. Xem kết quả thiết kế - Hiệu chỉnh thiết kế Sau khi thiết kế Form ta phải xem kết quả của việc thiết kế bằng cách chọn chức năng Form View từ menu View. Trong quá trình chạy thử Form ta cũng có thể quay lại cửa sổ để thay đổi thiết kế nếu cần bằng cách chọn chức năng Design View từ menu View. III. Tạo màn hình dạng main – sub Main – Sub là dạng màn hình mà bên trong Form chính có chứa một hay nhiều Form phụ khác. Dạng màn hình này thường sử dụng để thực hiện các thao tác thay đổi dữ liệu trên 2 bảng có quan hệ 1- N. Để thiết kế dạng màn hình này ta cần phải sử dụng đến điều khiển Subform/Subreport. III.1. Điều khiển Subform/Subreport Dùng để đưa một đối tượng Form vào một Form đã có. Màn hình sử dụng điều khiển này được gọi là Main Form, còn đối tượng Form được đưa vào Main Form thì được gọi là Sub Form. Các thuộc tính của Subform/Subreport: ƒ Source Object: tên của đối tượng Form cần đưa vào. ƒ Link Child Field: là tên của một hay nhiều Field có trong Sub Form. Các Field này dùng để liên kết dữ liệu với Main Form, dựa vào quan hệ giữa 2 bảng. Mỗi Field cách nhau bởi dấu chấm phẩy (;). ƒ Link Master Field: tên của những đối tượng chứa các Field liên kết giữa Main Form và Chứng chỉ B Tin Học Quốc Gia Trang 29/131
  31. Tài liệu hướng dẫn giảng dạy Sub Form, mỗi đối tượng cũng được cách nhau bởi dấu chấm phẩy. ƒ Định dạng khung viền: Border Color, Border Styte. ƒ Visible, Enabled, Locked. III.2. Các bước thiết kế màn hình main – sub ƒ Tạo các màn hình đóng vai trò là Form Sub trước, sau đó lưu và đóng các màn hình lại. Một điểm cần lưu ý khi khi thiết kế các màn hình làm Sub Form là nên chọn chế độ xem của màn hình ở dạng Datasheet và đây cũng là chế độ mà Access khuyên chúng ta nên sử dụng. Mặc dù vậy, ta cũng có thể chọn hiển thị màn hình ở chế độ Single hay Continuous. ƒ Tạo Main Form. ƒ Đưa Sub Form vào trong Main Form bằng cách: + Tạo đối tượng Subform/Subreport. + Vào thuộc tính Source Object của đối tượng này để chọn tên của một Form đã được tạo sẵn. ƒ Liên kết dữ liệu giữa Main Form và Sub Form: Sub Form sẽ lọc thông tin theo Main Form dựa vào các giá trị thực hiện liên kết. Như vậy, muốn liên kết được dữ liệu với Main Form thì trong dữ liệu nguồn của Sub Form phải có chứa các Field dùng để liên kết với Main Form (cho dù các Field này không được thể hiện ra màn hình). Việc liên kết được thực hiện như sau: + Chọn Sub Form, vào thực đơn View > Properties. + Vào trang Data, điền các cột liên kết vào 2 thuộc tính Link Child Field và Link Master Field của Sub Form. Nếu liên kết qua nhiều field thì mỗi field được ngăn cách nhau bằng dấu chấm phẩy (;). Chứng chỉ B Tin Học Quốc Gia Trang 30/131
  32. Tài liệu hướng dẫn giảng dạy  Ví dụ 1: Màn hình thể hiện kết quả thi của sinh viên. Ta thực hiện như sau: ƒ Tạo Sub Form subKetQua (nguồn dữ liệu có cả cột MASV để thực hiện liên kết) ƒ Tạo Main Form mainSV ƒ Tạo đối tượng Subform/Subreport, cung cấp thông tin cho các thuộc tính: ƒ Source Object: subKetQua ƒ Link Child Field: MASV ƒ Link Master Field: MASV  Ví dụ 2: Xét quan hệ của 2 bảng trên, khi thiết kế màn hình thể hiện thông tin của 2 bảng quan hệ trên theo dạng màn hình Main – Sub thì ta phải tạo sự liên kết trên 2 Field là SoHoaDon và LoaiHoaDon thông qua thuộc tính Link Field của đối tượng Subform/Subreport như sau: ƒ Link Child Field: SoHoaDon;LoaiHoaDon ƒ Link Master Field: SoHoaDon;LoaiHoaDon IV. Truyền dữ liệu giữa các màn hình Khi một ứng dụng có nhiều màn hình thì sẽ phát sinh nhu cầu trao đổi thông tin giữa những màn hình với nhau. Sau đây ta sẽ xem xét một số cách truyền thông tin từ những màn hình Chứng chỉ B Tin Học Quốc Gia Trang 31/131
  33. Tài liệu hướng dẫn giảng dạy của một ứng dụng. IV.1. Nguyên tắc chung Một yêu cầu bắt buộc phải thoả mãn khi trao đổi thông tin giữa các màn hình đó là: chỉ có những màn hình đang mở ở chế độ thực thi thì mới có thể trao đổi thông tin với nhau. Để lấy thông tin từ một màn hình trong chế độ thực thi ta thực hiện những bước sau: ƒ Tạo một TextBox trên màn hình sẽ nhận dữ liệu từ màn hình khác ƒ Thiết lập công thức cho thuộc tính Control Source của TextBox như sau: Forms![Tên form cần lấy giá trị]![Tên đối tượng cần lấy giá trị] Ta có thể sử dụng trực tiếp công thức trên trong các thuộc tính Row Source của các điều khiển ComboBox hay Record Source của Form Ví dụ 2:  Xét màn hình có dạng như sau: Với màn hình như hình trên, giả sử ta qui định rằng Mã môn trong Sub Form là một Combo Box chỉ liệt kê những môn mà sinh viên hiện hành của Form Main chưa thi. Khi này, Row Source của ComboBox Mã môn phải là một câu truy vấn lấy tất cả những mã môn học trong bảng Môn học và loại trừ những môn mà sinh viên hiện hành của Form Main đã thi, những môn có trong bảng Kết quả. Câu truy vấn cho thuộc tính Row Source của Combo Box có nội dung như sau: Select Mamon From DMMH Where Mamon Not In (Select Mamon From KETQUA Where Masv = Forms!frmSinhVien!txtMasv) Với câu truy vấn trên, giả sử Form Main có tên là frmSinhVien và TextBox chứa mã sinh viên trên Form Main có tên là txtMasv. IV.2. Lấy dữ liệu của Form Sub Trong màn hình dạng Main – Sub, đứng từ Form Main ta có thể sử dụng một công thức khác nhanh hơn để lấy giá trị của đối tượng trong Form Sub mà không cần nhớ tên của Form Sub Ta thực hiện những bước sau: Chứng chỉ B Tin Học Quốc Gia Trang 32/131
  34. Tài liệu hướng dẫn giảng dạy ƒ Tạo một TextBox trên Form Main sẽ nhận dữ liệu từ Form Sub ƒ Thiết lập công thức cho thuộc tính Control Source của Text Box như sau: [Tên của đối tượng Subform/Subreport chứa form sub].Form![Tên đối tượng cần lấy giá trị] Ví dụ: Xét màn hình của ví dụ trên, nếu cần lấy tên của môn học ứng với dòng hiện hành của Sub  Form, ta thực hiện các bước sau: ƒ Đặt tên cho đối tượng Subform/Subreport, giả sử là subCon ƒ Đặt tên cho Text Box chứa thông tin Tên môn của Form Sub là txtTenMon ƒ Tạo một TextBox trên Form Main sẽ nhận dữ liệu từ Form Sub, Control Source của nó có nội dung như sau: subCon.Form!txtTenMon Chú ý: Trong hai cú pháp trên, ta thấy xuất hiện hai ký tự dấu chấm (.) và dấu chấm than 0 (!) dùng để truy xuất đến một đối tượng trên form. Điểm khác nhau khi sử dụng 2 ký tự trên: ƒ Sử dụng dấu chấm (.) khi ta muốn truy xuất đến một thuộc tính, hành động có trong đối tượng. Như trong ví dụ trên thì Form là một thuộc tính của đối tượng subCon, thuộc tính này có kiểu là đối tượng Form trong Access ƒ Dấu chấm than (!) dùng để truy xuất đến một đối tượng là phần tử nằm bên trong một tập hợp gồm nhiều phần tử khác nhau Trong câu lệnh Forms!frmSinhVien!txtMasv bên trên thì Forms là một tập hợp các Form có trong Cơ sở dữ liệu hiện hành và frmSinhVien là một phần tử nằm trong tập hợp các Form của đối tượng Forms. Đối tượng txtMasv là một phần tử nằm trong tập hợp các điều khiển của đối tượng frmSinhVien V. Thiết kế các dạng màn hình Phần này sẽ trình bày chi tiết các bước thiết kế những dạng màn hình cụ thể dựa trên phần kiến thức của bài học trước. Dựa vào cách thiết kế màn hình ta sẽ phân loại thành hai nhóm là màn hình đơn và màn hình main – sub (cách phân loại này không dựa vào giá trị của thuộc tính Default View mà dựa trên phương pháp thiết kế màn hình). V.1. Màn hình đơn Màn hình đơn chỉ sử dụng một đối tượng Form để tạo nên dạng thể hiện của màn hình. Trên form có thể có nhiều loại điều khiển hiển khác nhau và chỉ thực hiện những xử lý xem, cập nhật dữ liệu trên một table, có thể hiển thị dữ liệu của những table khác nhưng mang tính chất Chứng chỉ B Tin Học Quốc Gia Trang 33/131
  35. Tài liệu hướng dẫn giảng dạy chỉ cho xem. Dạng thể hiện đơn giản nhất của màn hình đơn được thiết kế với những điều khiển đơn như Text Box, Label, Option Button, Check Box, . Ngoài ra, ta thường sử dụng thêm những điều khiển liệt kê, phân trang để tạo màn hình cung cấp nhiều thông tin hơn cho người xem. V.1.1. Màn hình đơn với điều khiển liệt kê (List Box) Màn hình đơn hiển thị thông tin Danh MụcMôn Học Với màn hình có dạng như hình trên ta thấy một danh sách liệt kê nhiều dòng dữ liệu và ở bên dưới là thông tin chi tiết của dòng đang được chọn trên danh sách. Đặc điểm thiết kế của màn hình: ƒ Form dạng Columnar. ƒ Sử dụng List Box để hiển thị nhiều dòng dữ liệu tương ứng với nguồn dữ liệu của form. ƒ Sử dụng List Box để di chuyển qua từng dòng dữ liệu trên form. Thao tác thiết kế màn hình sẽ qua các bước sau (sử dụng CSDL Quản lý sinh viên, table DMMH): 9 Thiết kế List Box Trên cửa sổ thiết kế của form tạo một điều khiển List Box như hình bên dưới: Chứng chỉ B Tin Học Quốc Gia Trang 34/131
  36. Tài liệu hướng dẫn giảng dạy Tạo nguồn dữ liệu cho List Box theo yêu cầu hiển thị trên màn hình (thuộc tính Row Source) thông qua cửa sổ Query Builder, nội dung của Row Source có dạng: Lưu ý khi chọn các field cần hiển thị ta phải đặt tên cho chúng (dùng làm tiêu đề cho cột khi thuộc tính Column Heads là Yes.) Sau đó xác định giá trị cho các thuộc tính Column Heads, Column Count, Column Widths của điều khiển List Box theo dạng cho trước. Chọn Form View để xem kết quả thiết kế như hình trên. Thông thường ta không hiển thị cột là mã (khoá chính) như Mã môn, Mã khoa, Mã học sinh, khi thiết kế dữ liệu dạng danh sách. Trong trường hợp này thì ta chỉ cần cho độ Chứng chỉ B Tin Học Quốc Gia Trang 35/131
  37. Tài liệu hướng dẫn giảng dạy rộng của cột đầu tiên bằng 0 (thuộc tính Column Widths), lưu ý field mã luôn được chọn ở vị trí đầu tiên trong nguồn dữ liệu của List Box. Khi đó, dạng thể hiện của danh sách sẽ là: 9 Thiết kế dữ liệu cho form Tiếp theo là xây dựng nguồn dữ liệu cho form. Lưu ý nguồn dữ liệu của form là List Box có thể giống nhưng hoàn toàn độc lập với nhau, không có sự phụ thuộc giữa nguồn dữ liệu của hai điều khiển này. Sử dụng thuộc tính Record Source của form để khai báo nguồn dữ liệu, lưu ý không đặt tên cho các field được chọn. Với màn hình trên thì nguồn dữ liệu của form sẽ lấy từ table DMMH. Sau khi xác dịnh giá trị cho thuộc tính Record Source ta sẽ nhận được Field List có dạng sau: Sau khi đã xác định được đúng nguồn dữ liệu của form thì ta sẽ kéo những field cần hiển thị có trong Field List lên form (thông thường là vùng Detail), chỉnh sửa định dạng của điều khiển theo màn hình cho trước, như hình bên dưới. Chứng chỉ B Tin Học Quốc Gia Trang 36/131
  38. Tài liệu hướng dẫn giảng dạy Chọn Form View ta sẽ xem được kết quả thiết kế theo đúng yêu cầu. Như vậy ta đã hoàn thành việc các bước tạo màn hình đơn với List Box. Màn hình còn một chức năng xử lý di chuyển khi chọn một dòng trong List Box, chức năng này sẽ được trình bày trong những bài sau. Kinh nghiệm giảng dạy: Với màn hình này giáo viên cần lưuý học viên cách thể hiện nhiều dòng và cột dữ liệu như dạng trên thì sẽ sử dụngList Box để xử lý, học viên thường nhầm lẫn và sử dụng các Text Box và Label thì sẽ thiết kế không đúng yêu cầu. V.1.2. Màn hình đơn với điều khiển phân trang (Tab Control) Màn hình phân trang – Trang liệt kê thông tin Màn hình phân trang – Trang liệt thông tin chi tiết Dạng màn hình phân trang sử dụng một điều khiển có tên là Tab Control để sắp xếp các điều khiển theo nhóm có cùng ý nghĩa với nhau. Với dạng thiết này ta có thể tạo một màn hình thể hiện được nhiều thông tin hơn và những thông tin sẽ tập trung theo từng nhóm riêng. Thao tác thiết kế màn hình sẽ qua các bước sau (sử dụng CSDL Quản lý sinh viên, table DMMH)): 9 Thiết kế điều khiển phân trang Trước tiên ta cần tạo một điều khiển phân trang Tab Control trên vùng làm việc của form, có dạng sau: Chứng chỉ B Tin Học Quốc Gia Trang 37/131
  39. Tài liệu hướng dẫn giảng dạy Tab Control khi được tạo lên form sẽ mặc định có 2 trang như hình trên. Muốn thêm hay xoá trang của Tab Control ta chỉ cần click phải vào điều khiển và chọn chức năgn Insert Page hay Delete Page từ thanh thực đơn tắt. Để di chuyển qua lại giữa các trang ta click vào cạnh phía trên của điều khiển tương ứng với trang. Sử dụng thuộc tính Caption của mỗi trang để thay đổi tiêu đề cho trang. 9 Thiết kế điều khiển hiển thị dữ liệu Sau khi thiết lập các trang cần thiết cho màn hình thông qua Tab Control, việc tiếp theo là sắp xếp những điều khiển dữ liệu vào đúng trang cần hiển thị. Lưu ý phải chọn trang cần thiết kế trước, sau đó tạo điều khiển cần lên trang đang được chọn. Ví dụ muốn tạo một List Box ở trang Danh sách môn học thì trước tiên ta phải click chọn trang đầu tiên của của Tab Control, sau đó tạo điều khiển lên trang như hình sau: Chứng chỉ B Tin Học Quốc Gia Trang 38/131
  40. Tài liệu hướng dẫn giảng dạy Tiếp theo là xác định nguồn dữ liệu cho điều khiển giống với màn hình đơn sử dụng List Box đã trình bày ở trên. Tương tự cho các điều khiển dữ liệu của form được thiết kế trên trang Thông tin chi tiết. V.2. Màn hình main – sub Như đã trình bày ở phần trên về ý nghĩa và các bước chung để thiết kế dạng màn hình main - sub. Trong phần này ta sẽ tìm hiểu một số dạng màn hìn main – sub thường gặp và cách thiết kế tương ứng. Dựa vào các điều khiển và thể hiện của form ta chia màn hình main – sub thành các dạng sau: ƒ Single – Datasheet ƒ List Box (Combo Box) – Datasheet ƒ Tab Control – Datasheet V.2.1. Màn hình Single – Datasheet Đây là dạng thể hiện chuẩn và thường gặp nhất của màn hình main – sub. Trong đó, main form được thiết kế ở dạng Single Form dùng để xem và cập nhật dữ liệu cho phía 1 (table đón vai trò 1 trong mối quan hệ 1 – N giữa 2 table). Form sub thể hiện dữ liệu của phía N và thiết kế ở dạng Datasheet. Chứng chỉ B Tin Học Quốc Gia Trang 39/131
  41. Tài liệu hướng dẫn giảng dạy Cách thiết kế dạng màn hình này xin xem lại ở phần trên, Tạo màn hình dạng main – sub. V.2.2. List Box (Combo Box) – Datasheet Với dạng thể hiện như hình trên, màn hình sử dụng List Box để hiển thị và di chuyển qua những các sinh viên (tương ứng với dữ liệu của nhánh 1). Khi dòng dữ liệu trên List Box thay đổi thì tập hợp dữ liệu của sub form thể hiện thông tin điểm của sinh viên sẽ thay đổi theo ứng với sinh viên vừa chọn.Ngoài ra, ta thấy dữ liệu của List Box cũng phải thay đổi khi giá trị trên Combo Box Khoa thay đổi. Như vậy, trên màn hình này ta thấy dữ liệu sẽ được lọc phân cấp theo Khoa – Sinh Viên – Điểm. Nhưng điểm quan trọng là cần phải xác định mối quan hệ trên nhánh nào, Khoa – Sinh Viên hay là Sinh Viên – Điểm, sẽ tạo nên màn hình dạng main –sub. Để nhận biết được mối quan hệ main – sub được tạo nên trên nhánh nào cần lưu ý một số vấn đề liên quan đến sau: ƒ Tập dữ liệu của sub (table ở nhánh nhiều) sẽ thay đổi khi dữ liệu trên main (table ở nhánh 1) có sự thay đổi qua các dòng khác nhau. ƒ Dữ liệu trên sub có thể được cập nhập (thêm, xoá, sửa) trực tiếp trên điều khiển hiển thị chúng (sub form). Dựa vào hai yếu tố trên ta có thể xác định được mối quan hệ main – sub sẽ được thiết lập dựa trên Sinh Viên – Điểm, List Box chỉ dùng để hiển thị dữ liệu mà không cho phép cập nhật dữ liệu trực tiếp. Thao tác thiết kế màn hình sẽ qua các bước sau (sử dụng CSDL Quản lý sinh viên, table DMKHOA, DMSV, KETQUA): 9 Thiết kế Combo Box Khoa Tạo 1 điều khiển Combo Box lên form, nguồn dữ liệu của combo (thuộc tính Row Source) là table DMKHOA (lưu ý các field trong nguồn của combo phải theo thứ tự là MaKhoa, TenKhoa). Dạng thể hiện của combo như màn hình trên chỉ hiển thị Tên khoa, tuy nhiên ta cũng cần có Mã khoa tương ứng để lọc dữ liệu cho List Box bên dưới. Chứng chỉ B Tin Học Quốc Gia Trang 40/131
  42. Tài liệu hướng dẫn giảng dạy Do dó, giá trị của thuộc tính Column Count gán bằng 2 và Column Widths của điều khiển với giá trị của cột thứ nhất là 0 để ẩn đi Mã khoa. Thiết kế điều khiển Combo Box Khoa Thể hiện của Khoa khi thực thi 9 Thiết kế List Box Danh sách sinh viên theo khoa Trong màn hình này thì nguồn dữ liệu của List Box phải thay đổi theo giá trị hiện hành của Khoa, do đó giá trị của Row Source phải thực hiện việc lọc dữ liệu như sau: Nguồn dữ liệu của List Box Với nguồn dữ liệu như hình trên thì ta thấy có 3 field được chọn, ý nghĩa sử dụng của mỗi field là: MaSV sẽ bị ẩn đi và được sử dụng để liên kiết với sub form, HoTen dùng để hiển thị trên List Box và người cho người dùng chọn, MaKH chỉ dùng để lọc những sinh viên của khoa hiện hành trên Combo Box của form. Chứng chỉ B Tin Học Quốc Gia Trang 41/131
  43. Tài liệu hướng dẫn giảng dạy Như vậy ta cũng phải sử dụng hai thuộc tính Column Count và Column Widths của List Box để hiển thị đúng với yêu cầu của màn hình. 9 Thiết kế sub form Việc tiếp theo là tạo một form mới (form này có thể tạo trước khi thực hiện thiết kế các điều khiển trên form main) chứa thông tin điểm của sinh viên (table KETQUA). Trong nguồn dữ liệu của form ta cần phải sử dụng thêm table DMMH để lấy thêm thông tin về Tên môn học. Dạng thiết kế của sub form Lưu ý khi tạo nguồn dữ liệu cho form ta phải chọn hết các field có trong table KETQUA (table chính dùng trong việc cập nhật dữ liệu trên form), với table DMMH ta chỉ lấy đúng 1 field là TenMH. 9 Liên kết sub form vào main form Thao tác cuối cùng để thiết kế màn hình trên là đưa sub form vào main form. Trong màn hình này thì main và sub liên kết với nhau qua field MaSV. Lưu ý là trong main form không có nguồn dữ liệu (Record Source của form rỗng) do đó việc liên kết giữa sub với main không qua tên field mà phải sử dụng tên của điều khiển chứa field cần liên kết, trong trường hợp này là tên của List Box. Đựa sub form vào main form Chứng chỉ B Tin Học Quốc Gia Trang 42/131
  44. Tài liệu hướng dẫn giảng dạy Liên kết main - sub Với của sổ tạo liên kết như hình trên thì lstDsSinhVien là tên của điều khiển List Box chứa danh sách sinh viên, lưu ý là cột đầu tiên của List Box phải là field MaSV để liên kết với MaSV của sub form. V.2.3. Tab Control – Datasheet Màn hình sử dụng Tab Control và liên kết sub form Dạng màn hình này là sự kết hợp của màn hình đơn phân trang và liên kết với form sub. Các bước thiết kế mành hình này hoàn toàn giống với những dạng trên. Điểm cần lưu ý với dạng màn hình này là chọn liên kết giữa main và sub. Ta có thể liên kết sub form với main thông qua 2 cách: ƒ Sử dụng field liên kết của main form (field MaSV) ƒ Sử dụng điều khiển chứa field liên kết (điều khiển List Box chứa field MaSV) Tuy nhiên, để tiện cho việc xử lý dữ liệu của form sub theo main thì ta nên chọn cách liên kết thứ nhất, sử dụng field liên kết của form main. Chứng chỉ B Tin Học Quốc Gia Trang 43/131
  45. Tài liệu hướng dẫn giảng dạy V.2.4. Main – sub – sub Đây là một dạng mở rộng của màn hình dạng main – sub, khi trên form main chứa nhiều sub form khác nhau, những sub form thường có quan hệ 1- N. Ví dụ mối quan hệ Khoa – Sinh Viên – Điểm có thể thiết kế thành màn hình main – sub – sub, trong đó form main hiển thị thông tin của khoa, hai form sub sẽ hiển thị thông tin của sinh viên và điểm. Màn hình dạng main – sub – sub Thao tác thiết kếmàn hình dạng này cũng tương tự như những phần đã trình bày trong phần trên, ngoài ra cần sử dụng thêm một kỹ thuật là tạo Text Box tạm để liên kết dữ liệu. Những kỹ thuật này sẽ được trình bày trong bài Thiết kế màn hình lọc dữ liệu. Chứng chỉ B Tin Học Quốc Gia Trang 44/131
  46. Tài liệu hướng dẫn giảng dạy Bài 3 NGÔN NGỮ LẬP TRÌNH VBA Tóm tắt Lý thuyết 2 tiết - Thực hành 4 tiết Mục tiêu Các mục chính Bài tập bắt Bài tập làm buộc thêm Bài học này giúp học viên I. Môi trường lập trình trong 3.1, 3.2 tìm hiểu về môi trường lập Microsoft Access trình trong máy tính và sử II. Những thành phần cơ bản dụng một trong những trong ngôn ngữ VBA ngôn ngữ lập trình dễ học và dễ sử dụng nhất hiện nay, đó là ngôn ngữ VBA. Học viên sẽ được giới thiệu những thành phần quan trọng trong ngôn ngữ VBA và cách vận dụng VBA trong việc tạo các chức năng xử lý trên màn hình. Sau khi kết thúc bài học, học viên có thể: 9 Hiểu một số khái niệm và cơ chế xử lý của ngôn ngữ lập trình VBA. 9 Sử dụng ngôn ngữ VBA để thực hiện xử lý tính toán. Chứng chỉ B Tin Học Quốc Gia Trang 45/131
  47. Tài liệu hướng dẫn giảng dạy I. Môi trường lập trình trong Microsoft Access Trong bài học trước ta đã tìm hiểu về đối tượng Form của Access, một đối tượng quan trọng trong việc xây dựng các màn hình làm việc, tuy nhiên ta chỉ mới tìm hiểu các bước để hiển thị dữ liệu trên màn hình. Màn hình làm việc ngoài khả năng hiển thị dữ liệu cho người dùng còn phải đáp ứng được nhu cầu về xứ lý tính toán, cập nhật thông tin của dữ liệu. Để xây dựng những thao tác xử lý trên màn hình được dễ dàng và nhanh chóng ta cần sự hỗ trợ của ngôn ngữ lập trình, gọi là VBA – Visual Basic for Application. VBA là một ngôn ngữ lập trình được nhúng vào trong bộ Office của Windows dựa trên ngôn ngữ lập trình Visual Basic, một trong những ngôn ngữ lập trình mạnh nhưng dễ học và dễ sử dụng. Sau đây ta sẽ tìm hiểu một số thành phần liên quan đến ngôn ngữ lập trình VBA trong Microsoft Access. I.1. Cơ chế lập trình Thủ tục – Sự kiện  Ví dụ: Yêu cầu: Thiết kế một màn hình cho phép nhập vào hai giá trị A và B, chương trình sẽ tính tổng hai số nhập vào và xuất kết quả. Yêu cầu là khi click vào nút Tính tổng thì kết quả sẽ được tính toán và xuất vào Text Box Tổng. Để thực hiện yêu cầu này ta thực hiện các bước sau theo mô tả sau: ƒ Chọn sự kiện On Click của nút Tính tổng ƒ Vào vùng viết lệnh của sự kiện On Click để thực hiện câu lệnh cộng hai số Qua phần mô tả trên, ta cần chú ý một số điểm khi viết lệnh xử lý cho yêu cầu màn hình: ƒ Mọi yêu cầu về tính toán xử lý đều dựa trên việc tác động vào một điều khiển nào đó trên Form, trong ví dụ trên là khi click vào nút Tính tổng. Do đó, để thực hiện được yêu cầu ta phải xác định điều khiển nào sẽ dùng để viết các lệnh xử lý. ƒ Sau khi chọn được điều khiển thì ta phải tìm được thời điểm để thực hiện xử lý yêu cầu. Đây chính là điểm quan trọng khi thực hiện các thao tác xử lý trên màn hình. Chứng chỉ B Tin Học Quốc Gia Trang 46/131
  48. Tài liệu hướng dẫn giảng dạy Như ta đã biết thì khi có một tác động lên điều khiển thì điều khiển có thể phát sinh hàng loạt những sự kiện một cách tuần tự. Vấn đề ở đây là phải chọn sự kiện nào thích hợp nhất để xử lý. Những sự kiện của điều khiển luôn tồn tại và ta có thể sử dụng một hay nhiều sự kiện phù hợp với yêu cầu. Mỗi sự kiện sẽ luôn có một thành phần xử lý đi kèm gọi là thủ tục của sự kiện. Thủ tục của sự kiện là thành phần do ngôn ngữ lập trình VBA phát sinh tự động, để thực hiện xử lý ta phải thực hiện thao tác chọn thủ tục của sự kiện cần và viết các lệnh bên trong thủ tục đó. Cơ chế lập trình Thủ tục - Sự kiện chính là chọn sự kiện của điều khiển và viết lệnh xử lý trong thủ tục do sự kiện phát sinh. Những lệnh trong thủ tục sẽ được thực thi khi có sự tác động lên điều khiển làm phát sinh ra sự kiện. I.2. Cửa sổ viết lệnh cho các xử lý trong thủ tục của sự kiện Để thực hiện việc xử lý cho các sự kiện của điều khiển ta cần chọn thủ tục tương ứng với sự kiện, sau đó viết những lệnh xử lý cần thiết trong thủ tục chọn được. Công việc thiết kế các điều khiển của Form được thực hiện trong cửa sổ thiết kế Design View của nó, còn để viết lệnh cho sự kiện ta sẽ vào cửa sổ Code của ngôn ngữ VBA. Từ cửa sổ Design View muốn vào cửa sổ Code ta chỉ cần click vào nút trên thanh chứa các thành phần thiết kế Form. Khi đó, ta sẽ chuyển sang một cửa sổ có dạng như sau: Từ cửa sổ Code ta có thể quay về cửa sổ Design View của Form bằng cách click vào nút trên công cụ của cửa sổ Code. Cửa sổ trên chính là nơi mà ta thực hiện viết các lệnh xử lý cho điều khiển. Như đã trình bày ở trên thì để thực hiện một thao tác xử lý trên màn hình thì ta phải xác định được hai yếu tố là Điều khiển cần xử lý và Thời điểm (sự kiện) được chọn để thực hiện các lệnh xử lý. Cửa sổ Chứng chỉ B Tin Học Quốc Gia Trang 47/131
  49. Tài liệu hướng dẫn giảng dạy Code cung cấp cho ta cách để chọn hai thành phần đó. Trong hình trên, ta thấy có một Combo Box chứa chữ General, danh sách của Combo sẽ chứa tất cả tên của điều khiển hiện có trên màn hình đang làm việc. Để chọn điều khiển cần xử lý ta chỉ cần click vào Combo và chọn tên của điều khiển tương ứng. Khi đó, trong vùng viết lệnh ở bên dưới sẽ tự động phát sinh ra một khai báo thủ tục xử lý cho một sự kiện bất kỳ. Ví dụ: Khi ta chọn một điều khiển Command Button có tên là cmdTest thì khi đó vùng lệnh sẽ tự động phát  sinh ra thủ tục xử lý cho sự kiện On Click của điều khiển như hình trên, thủ tục có tên là cmdTest_Click. Ta có thể chọn sự kiện khác để xử lý bằng cách click chọn tên của sự kiện ở Combo Box ở bên phải của Combo chứa tên điều khiển. Ở trạng thái ban đầu thì giá trị của Combo là Delarations như hình trên. Combo này chứa tất cả tên của những sự kiện có thể phát sinh ứng với đối tượng đang được chọn. Sau khi chọn sự kiện mới thì trang Code sẽ tự động phát sinh thủ tục ứng với sự kiện vừa chọn. Sau khi đã xác định được hai thành phần là điều khiển và sự kiện thì ta có thể viết các lệnh xử lý cần thiết. Một số điểm lưu ý khi viết các lệnh xử lý: ƒ Toàn bộ nội dung xử lý sự kiện của điều khiển sẽ nằm trong phạm vi thủ tục được phát sinh, tức là bắt đầu từ Private Sub cho đến End Sub. ƒ Các lệnh xử lý được viết theo cú pháp của ngôn ngữ VBA, ta sẽ tìm hiểu ngôn ngữ này ở phần dưới Khi đã hoàn tất các lệnh xử lý theo yêu cầu, muốn kiểm tra nội dung các câu lệnh thì ta phải quay trở lại màn hình Design của Form và chuyển sang chế độ Form View, sau đó tác động lên điều khiển để nó phát sinh ra sự kiện mà ta đã xử lý để kiểm tra kết quả viết lệnh. Ngoài ra, ta còn có thể sử dụng trang sự kiện trong cửa sổ Property của điều khiển trong cửa sổ Design View để chọn sự kiện của điều khiển cần xử lý và mở thủ tục ứng với sự kiện để viết lệnh. Chứng chỉ B Tin Học Quốc Gia Trang 48/131
  50. Tài liệu hướng dẫn giảng dạy Để chọn sự kiện cần xử lý của điều khiển trong cửa sổ Design View ta làm như sau: ƒ Mở cửa sổ thuộc tính của điều khiển cần xử lý sự kiện. ƒ Click chọn trang Event của cửa sổ, trang thứ 3. Cửa sổ Event sẽ liệt kê tất cả những sự kiện mà điều khiển có thể phát sinh. Bên trái là tên của các sự kiện, bên phải chứa kiểu lệnh mà ta sẽ xử lý cho sự kiện. ƒ Tại dòng của sự kiện cần xử lý, click vào Combo Box và chọn giá trị: [Event Procudure] để khai báo kiểu viết lệnh cho sự kiện là dùng thủ tục của ngôn ngữ VBA. ƒ Click vào nút để mở cửa sổ Code chứa thủ tục của sự kiện, các thao tác trong cửa sổ tương tự như đã trình bày ở trên. II. Những thành phần cơ bản trong ngôn ngữ VBA Khi làm việc với môi trường phát triển ứng dụng thì ta cần tìm hiểu ngôn ngữ mà nhà cung cấp tích hợp vào cùng với môi trường. Trong bộ Office của Microsoft đó chính là ngôn ngữ VBA, một ngôn ngữ rất dễ học và dễ sử dụng để xây dựng những phần mềm quản lý. II.1. Đặc điểm của ngôn ngữ VBA VBA viết tắt là Visual Basic for Application là một ngôn ngữ lập trình giống với những ngôn ngữ lập trình khác như Pascal, C, Visual Basic, Visual C, và được Microsoft tích hợp vào bộ Microsoft Office, nghĩa là ta có thể sử dụng ngôn ngữ VBA sau khi cài đặt bô Microsoft Office mà không cần thêm phần mềm nào khác. Đặc điểm quan trọng nhất của VBA là ngôn ngữ được xây dựng theo cơ chế lập trình Thủ tục – Sự kiện. Như đã trình bày ở trên thì khi điều khiển của màn hình bị tác động thì nó sẽ phát sinh ra sự kiện, ứng với sự kiện phát sinh sẽ có một thủ tục để xử lý sự kiện đó và nội dung viết trong thủ tục sẽ là cú pháp của ngôn ngữ VBA. Qua đó, ta thấy rằng ngôn ngữ VBA được viết dựa trên sự phát sinh sự kiện của điều khiển, người ta gọi đó là ngôn ngữ lập trình hướng Thủ tục - Sự kiện. Trong ngôn ngữ lập trình có một khái niệm gọi là câu lệnh. Một câu lệnh đó là một chuỗi có được từ sự kết hợp của nhiều ký tự theo qui luật của ngôn ngữ lập trình. Mỗi câu lệnh phải nằm trên một dòng, đối với VBA thì trên một dòng có thể có nhiều câu lệnh khác nhau nhưng không nên sử dụng vì khó nhìn và khó sửa lỗi. Tập hợp nhiều câu lệnh ta sẽ có một khối lệnh và khối lệnh thường được đặt trong một hàm, Chứng chỉ B Tin Học Quốc Gia Trang 49/131
  51. Tài liệu hướng dẫn giảng dạy thủ tục hay một cấu trúc điều khiển. Khối lệnh mà ta thường gặp nhất đó chính là thủ tục xử lý cho sự kiện. Trong một màn hình thì có thể có nhiều khối lệnh để xử lý cho những sự kiện của các điều khiển khác nhau. Những khối lệnh này thực thi độc lập và có thể lập lại nhiều lần ứng với số lần phát sinh sự kiện. Khi khối lệnh của một thủ tục được thực thi, khi tác động vào điều khiển phát sinh ra sự kiện, thì nó sẽ thi hành từ câu lệnh đầu tiên của khối cho đến câu lệnh cuối cùng có trong khối lệnh đó, các câu lệnh thực hiện một cách tuần tự. Như đã đề cập ở trên thì khi viết lệnh ta phải tuân theo các qui luật của ngôn ngữ VBA. Tuy nhiên trong quá trình viết lệnh có thể vô tình mà ta viết sai cú pháp qui định, khi di chuyển sang một dòng khác cửa sổ viết lệnh của VBA sẽ thông báo cú pháp của câu lệnh vừa viết là sai và tự động đổi màu của câu lệnh sai sang màu đỏ (ta có thể thay bằng màu khác). Đây là một hỗ trợ rất hữu ích khi viết lệnh, nó làm giảm đáng kể những lỗi về mặt cú pháp của chương trình. Tuy VBA hỗ trợ rất tốt việc phát hiện lỗi cú pháp khi viết lệnh tuy nhiên có một số lỗi cú pháp về mặt ngữ nghĩa hay những lỗi về logic chỉ phát sinh khi thực thi chương trình thì ngôn ngữ không thể giúp ta được. Khi đó, việc xử lý lỗi phải dựa vào kinh nghiệm và suy luận của người lập trình. Nhằm giúp người lập trình dễ dàng hơn trong việc xử lý lỗi, VBA cung cấp một tiện ích gọi là Debug, tiện ích này giúp ta chạy lần lượt qua từng câu lệnh để phát hiện và xử lý lỗi. II.2. Biến Biến được dùng để chứa những giá trị tạm thời khi chương trình đang được thực thi, phục vụ cho việc xử lý tính toán II.2.1. Khai báo biến Muốn sử dụng được biến trong đoạn lệnh ta phải thực hiện thao tác khai báo biến với hệ thống. Để khai báo biến ta sử dụng cú pháp sau: Dim TenBien As Kiểu dữ liệu Trong cú pháp trên thì Dim và As gọi là từ khoá của ngôn ngữ VBA, là những từ được sử dụng cho mục đích viết lệnh trong ngôn ngữ, ta có thể sử dụng bất kỳ lúc nào khi cần nhưng phải theo đúng cú pháp. TenBien là thành phần định danh dùng để phân biệt giữa các biến. Nội dung của tên biến thường thể hiện ý nghĩa sử dụng của nó. Tên biến có thể chứa nhiều loại ký tự khác nhau nhưng trừ một số ký tự đặt biệt cùng với một số qui tắc: ƒ Không có khoảng trắng ƒ Không được bắt đầu là số Chứng chỉ B Tin Học Quốc Gia Trang 50/131
  52. Tài liệu hướng dẫn giảng dạy ƒ Không được trùng với những khoá của ngôn ngữ, ví dụ: Dim, As, To, For, ƒ Không chứa các ký tự dấu như: “, ~, #, +, -, *, /, [], Kiểu dữ liệu chính là giá trị mà biến đó có thể lưu trữ tạm thời. Trong thực tế ta có những giá trị ở dạng Chuỗi, Số, Ngày, Giờ, để lưu trữ những giá trị đó trong máy tính thì ta phải dựa vào hệ thống những kiểu dữ liệu do ngôn ngữ VBA cung cấp Tên kiểu dữ liệu Kích thước (Byte) Giá trị lưu trữ tương ứng Byte 1 Integer 2 Các số nguyên Long 4 Single 4 Các số thực Double 8 Currency 8 Tiền tệ Boolean 2 Lưu trữ giá trị đúng hoặc sai Date 8 Ngày giờ String 1 (Cho mỗi ký tự) Chuỗi, văn bản Variant 16 + 1 (Cho mỗi ký tự) Bao gồm tất cả loại giá trị Một điểm cần lưu ý khi khai báo biến đó là tên của biến phải hợp lệ và kiểu dữ liệu ứng với giá trị mà biến sẽ lưu trữ. II.2.2. Sử dụng biến Sử dụng biến ở đây có hai nghĩa: cất giá trị cần lưu vào biến và lấy giá trị mà một biến đang lưu để xử lý tính toán. Sau khi đã khai báo biến, ta có thể lưu trữ giá trị cần thiết vào biến. Việc đưa giá trị vào biến gọi là thao tác gán giá trị, để gán giá trị cho biến ta sử dụng một trong hai cú pháp sau: TenBien = Giá trị cần gán (1) TenBien = TenBien1 (2) TenBien = TenBien1 + TenBien2 (3) Để gán giá trị cho biến thì tên của biến sẽ luôn nằm bên trái dấu bằng, giá trị cần lưu trữ vào biến sẽ nằm bên phải. Giá trị đưa vào biến phải có kiểu dữ liệu phù hợp với kiểu dữ liệu của biến nhận giá trị gán, ví dụ một biến có kiểu số thì không thể nhận một giá trị chuỗi. Giá trị gán vào biến có thể là một hằng số cụ thể, cú pháp (1), từ một biến khác, cú pháp (2) hay cũng có thể là một biểu thức tính toán, cú pháp (3). Cú pháp (2) cũng chính là cách sử dụng giá trị được lưu trữ trong biến, nó thể hiện thao tác gán giá trị cho bến có tên là TenBien đồng thời sử dụng giá trị của biến có tên TenBien1. II.2.3. Phạm vi sử dụng của biến Khi cần sử dụng biến thì ta sẽ thực hiện việc khai báo chúng và vị trí mà một biến được khai báo chỉ có thể là trong vùng General của cửa sổ lệnh hay là trong vùng của một hàm/thủ tục. Chứng chỉ B Tin Học Quốc Gia Trang 51/131
  53. Tài liệu hướng dẫn giảng dạy Vị trí khai báo biến ảnh hưởng đến phạm vi sử dụng của nó. Phạm vi sử dụng là nơi mà một biến còn có thể sử dụng, ta có hai khái niệm là biến cục bộ và biến toàn cục. Khi một biến được khai báo trong vùng của một thủ tục thì nó có phạm vi sử dụng cục bộ, nghĩa là biến đó chỉ có ý nghĩa sử dụng với những lệnh trong thủ tục mà nó được khai báo. Một điểm cần lưu ý là trong cùng một phạm vi sử dụng ta không được khai báo biến có tên giống nhau, và ở những phạm vi khác nhau có thể có những biến trùng tên. Nếu muốn sử dụng một biến dùng chung cho tất cả các thủ tục của màn hình thì ta phải khai báo biến đó trong vùng General của cửa sổ lệnh, gọi là biến toàn cục. Biến này sẽ có thể sử dụng ở tất cả những thủ tục tồn tại trong cửa sổ lệnh khai báo biến. Ngoài ra, để khai báo một biến mà có thể sử dụng cho nhiều màn hình khác nhau ta sử dụng từ khoá Public thay cho Dim trong khi khai báo biến trong vùng General như sau: Public TenBien As Kiểu dữ liệu II.2.4. Biến hằng số Là những biến mà giá trị của nó chỉ có thể được gán khi đang viết lệnh, còn khi chương trình đang chạy thì giá trị của nó sẽ không bao giờ bị thay đổi bởi những câu lệnh gán giá trị. Khai báo một biến hằng số ta dùng cú pháp sau: Const TenBien = Giá trị Biến này thường được sử dụng để tạo ra những biến có giá trị không bào giờ thay đổi và cũng để tránh bị thay đổi giá trị do sơ ý. II.2.5. Các phép toán Các câu lệnh trong chương trình thường xoay quanh việc tính toán xử lý biến, giá trị, VBA cùng một số phép toán để thực hiện các thao tác tính toán và chia theo nhóm giá trị: Phép toán số học, Phép toán nối chuỗi, Phép toán so sánh, Phép toán Logic. Phép toán số học Là những phép toán dựa trên giá trị số, như là cộng (+), trừ (-), nhân (*), chia (/). Ngoài ra, đối với phép chia còn có hai phép toán là chia lấy phần nguyên (\) và chia lấy phần dư (mod) Ví dụ: Nếu ta có câu lệnh X = 9 mod 2 thì giá trị của X sẽ là 1, giá trị 1 chính là số dư của phép  chia nguyên. Phép toán nối chuỗi Ngoài kiểu dữ liệu số ta còn có kiểu dữ liệu chuỗi, để ghép hai chuỗi lại với nhau thành một chuỗi thì ta phải sử dụng phép toán nối chuỗi. Trong VBA, ta có thể sử dụng phép toán & hay + để nối hai chuỗi lại với nhau. Một giá trị được gọi là chuỗi nếu nó nằm trong dấu nháy đôi (“ ”) hay được chứa trong biến có Chứng chỉ B Tin Học Quốc Gia Trang 52/131