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
Trang 1Tel: 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)
Trang 2Mụ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
Trang 3IV.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
Trang 4II.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
Trang 5GIỚ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
Trang 6GIÁ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
Trang 7HƯỚ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
buộc
Bài tập làm thêm
Bài học này nhằm giới
thiệu cho học viên về đối
tượng Form trong Microsoft
Access và ý nghĩa của 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
I Giới thiệu đối tượng Form
II Dạng màn hình thường gặp III Môi trường thiết kế màn hình làm việc
1.1, 1.2
Trang 8I 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
Trang 9nằ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:
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
Trang 10giá 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
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
Trang 11Nộ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
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
Trang 12Thuộ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
Trang 13III 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ổ
Trang 14Database 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
Trang 15Field 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
Trang 16Bà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
buộc
Bài tập làm thêm
Bài học này giúp học viên
phân biệt và sử dụng đúng
các điều khiển dùng để
thiết kế Form, các bước cơ
bản để thiết kế màn hình
làm việc Ngoài ra, học
viên sẽ làm quen thao tác
liên kết dữ liệu vào điều
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
I Các điều khiển
II Các bước tạo màn hình làm việc
III Tạo màn hình dạng main - sub
IV Truyền dữ liệu giữa các màn hình
V Thiết kế các dạng màn hình
2.1, 2.2, 2.3
Trang 17I 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
Trang 18
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
Trang 19Form 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
Trang 20I.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
Trang 21I.3 Nhóm điều khiển văn bản
ý 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
Trang 22Khi 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
Trang 23Mộ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
Trang 24thô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
Trang 25I.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ó
Trang 26chấ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
Trang 27Là 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
Trang 28
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
Trang 29khiể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
Trang 30
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à
Trang 31Sub 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 (;)
Trang 32Ví 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
Trang 33
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:
Trang 34
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 (!) 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
0
Trang 35chỉ 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:
Trang 36Tạ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 độ
Trang 37rộ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
Trang 38Chọ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:
Trang 39
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:
Trang 40Tiế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