Bài giảng cơ sở dữ liệu - Chương IV: Form

- Form là một thành phần dùng để cập nhật dữ liêu trên các Table, và là giao diện giữa người và máy. - Form thường được dùng trong các trường hợp sau: - Thiết kế màn hình nhập dữ liệu. - Thiết kế menu. - Thiết kế các màn hình tra cứu thông tin. - Tạo các màn hình giới thiệu, trợ giúp.

pdf103 trang | Chia sẻ: lylyngoc | Lượt xem: 1644 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Bài giảng cơ sở dữ liệu - Chương IV: Form, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
BÀI GIẢNG CƠ SỞ DỮ LIỆU CHƯƠNG IV: FORM I. Khái niệm. - Form là một thành phần dùng để cập nhật dữ liêu trên các Table, và là giao diện giữa người và máy. - Form thường được dùng trong các trường hợp sau: - Thiết kế màn hình nhập dữ liệu. - Thiết kế menu. - Thiết kế các màn hình tra cứu thông tin. - Tạo các màn hình giới thiệu, trợ giúp. Form gồm có ba thành phần: Form Header: đầu form. Detail: chi tiết hiển thị nội dung chi tiết của form. Form footer: xuất hiện ở cuối form. Header Detail Footer Mọi loại đối tượng xuất hiện trên form được gọi là điều khiển, có ba loại: Điều khiển bị buộc: (Bound control) là điều khiển có nguồn dữ liệu lấy từ cơ sở dữ liệu: Tra cứu thông tin trong CSDL. Cập nhật thông tin vào CSDL. Điều khiển không bị buộc: (Unbound control) thông tin không gắn với nguồn dữ liệu. Điều khiển tính toán được: giá trị của nó được tính toán từ các giá trị khác II. các dạng của form. - Dạng columnar: dữ liệu sẽ hiển thị theo từng cột, tại một thời điểm trên form chỉ thể hiện thông tin tương ứng của một mẫu tin. - Dạng Tabular: dữ liệu thể hiện trên nhiều cột tại một thời điểm trên biểu mẫu thể hiện thông tin của nhiều mẫu tin khác nhau. Dạng justified: dạng này dữ liệu thể hiện trên nhiều cột nhưng chỉ thể một mẫu tin tại một thời điểm. Dạng DataSheet View: dữ liệu thể hiện theo dạng bảng, không cho phép hiển thị các điều khiển trong Header và footer. II. Các chế độ hiển thị của form. - Chế độ Design View: dùng để chỉnh sửa cấu trúc form (View/Form design hay click vào nút View trên thanh công cụ) - Chế độ Form View: dùng đẻ thêm, sửa, xem, xóa dữ liệu. Khi ta cập nhật dữ liệu sẽ tác động đến Table hay Query làm nguồn(form/View). - Chế độ DataSheet View: giống như Form View nhưng không hiển thị được Form Header, Form Footer và hình ảnh đối với kiểu dữ liệu OLE Chế độ Design view Chế độ form view Data sheet view III. Thiết kế Form. 3.1. Thiết kế Form mới. Bước 1: Ở thẻ Form, nhấn New, chọn Design View Hoặc D_Click vào Create form in Design view như hình 12 3 Có 3 thành phần quan trọng để làm việc:  (1) Cửa sổ Form – nơi sẽ thiết kế và xây dựng các thông tin cần thiết theo yêu cầu bài toán. Toàn bộ các thông tin trên form đều được chứa trong các đối tượng điều khiển (Control), các đối tượng này được lấy từ thanh công cụ Toolbox  (2) Thanh công cụ Toolbox – nơi chứa những đối tượng, những công cụ có thể đưa lên form với mục đích thiết kế giao diện và điều khiển dữ liệu theo bài toán.  (3) Cửa cổ Properties – nơi có thể thiết lập các thuộc tính (properties) cho form cũng như các đối tượng trên form; Bước 2: Thiết lập nguồn dữ liệu cho form ở thuộc tính Record Source. Bước này để xác định nguồn dữ liệu để form làm việc. Chọn thuộc tính form bằng cách R_Click vào Form sau đó chọn Properties/ chọn tên đối tượng (điều khiển) Chọn tên đối tượng Thiết lập thuộc tính Record Source cho form bằng cách chọn tên bảng ở hộp Record Source. Có thể tìm thuộc tính này ở thẻ Data hoặc thẻ All Chọn bảng hoặc query đã tạo sẵn Tạo mới query làm nguồn cho bảng Chọn bảng hoặc query đã có sẵn (bảng và query đã được tạo trước đó) Chọn bảng hoặc query ở đây Tạo query mới làm nguồn cho bảng Bước 3: Mở cửa sổ Field List. Cửa sổ Field List có chứa danh sách các trường trên CSDL có trong nguồn dữ liệu của Form. Nó hỗ trợ việc đưa những trường dữ liệu này lên form. Nếu chưa thấy cửa sổ này xuất hiện, hãy thực hiện hiển thị nó bằng cách mở thực đơn View | Field List hoặc nhấn nút Field List trên thanh công cụ chuẩn. Cửa sổ field list Hiển thị thông tin của bảng hoặc truy vấn vừa được tạo Bước 4: Đưa những trường cần nhập dữ liệu từ cửa sổ Field List lên Form đang thiết kế. Dùng chuột kéo từng trường muốn thiết kế lên form từ cửa sổ Field List thả lên vị trí hợp lý trên form. Mỗi khi kéo một trường từ Field List lên form, Access sẽ tự động tạo một đối tượng gắn kết tới trường dữ liệu tương ứng. Ví dụ: tạo form quản lý thông tin cán bộ Nguồn dữ liệu lấy từ bảng HSLG như sau: Drag các trường muốn hiển thị Kết quả Thực thi Một số thuộc tính khác của form: + Default View: Dạng hiển thị ngầm định của form có ba dạng chính: Single Form Continuous Form Datasheet + Picture: Hình ảnh trên toàn form. Đường dẫn tới hình  Thuộc tính liên quan đến dữ liệu của form: + Records Source: Tên truy vấn, bảng nguồn dữ liệu hoặc văn bản SQL của nguồn dữ liệu. + Allow Filters: Cho phép lọc dữ liệu hiện trên form. + Allow Deletions: Cho phép xóa các bản ghi trên form. + Allow Edits: Cho phép chỉnh sửa dữ liệu trên form. + Allow Additions: Cho phép bổ sung bản ghi trên form Các thuộc tính khác: + Popup: Form được mở trên các form khác. + Modal: Không thể kích hoạt bất cứ vị trí nào ngoài phạm vi form. + Menu Bar: menu hiện khi mở form. + Shortcut Menu: Menu hiện khi nhấn chuột phải. 4.2. Sửa đổi cấu trúc Form. 4.2.1. Sửa thuộc tính Mở form để sửa ở chế độ thiết kế (Design view) bằng cách: R_Click lên form chọn Design; hoặc nhấn nút Design trên thanh công cụ. Màn hình thiết kế form xuất hiện: Sửa nhãn (Label): là đối tượng tạo ra dòng chữ chú thích được nhập trực tiếp từ bàn phím. 4.2.2. Thay đổi kích thước đối tượng (Resize): Kích thước của đối tượng thường được mô tả ở thuộc tính: Height - chiều cao và With - chiều rộng. Tuy nhiên bạn hoàn toàn có thể thay đổi kích thước đối tượng một cách trực quan bằng chuột. 4.2.3. Di chuyển đối tượng: Di chuyển đối tượng bằng cách trực quan sử dụng chuột với thao tác kéo-thả. 4.2.4. Thay đổi Font chữ: Những đối tượng có hiển thị chữ (Text) hoàn toàn có thể thay đổi được phông chữ. Giá trị này được miêu tả ở thuộc tính Font Name hoặc hộp Font trên thanh công cụ Formatting. 4.2.5. Thay đổi màu nền: Mỗi đối tượng thường có thể thiết lập được màu nền, chúng thể hiện ở thuộc tính BackColor hộp Fill\Back Color trên thanh Formatting. 4.2.6. Thay đổi màu chữ: Mỗi đối tượng thường hiển thị chữ có thể thiết lập được màu chữ, chúng thể hiện ở thuộc tính ForeColor . 4.3. Các điều khiển trong ToolBox. 4.3.1. Các loại điều khiển. Tên nút Chức năng Label Hiển thị chuỗi văn bản Textbox Xem, hiệu chỉnh dữ liệu. Option Button Toggle Button Check box Xử lý dữ liệu kiểu Yes/No hoặc để tạo thành một tùy chọn Option Group. Option Group Là một điều khiển phức hợp List Box Liệt kê danh sách dữ liệu để người dùng lựa chọn Combo Box Kết hợp giữa một listBox và một Textbox Subform/subreport Chèn form hay report con vào form hay report chính Bound Object Frame Hiển thị hình ảnh hay biểu đồ hay đối tượng kiểu OLE lưu trong Table UnBound Object Frame Hiển thị hình ảnh hay biểu đồ hay đối tượng kiểu OLE Line Đường thẳng Rectangle Hình chữ nhật Page Break Ngắt trang Command Button Nút lệnh dùng để thi hành Macro 4.4. Các thuộc tính của điều khiển. THUỘC TÍNH Ý NGHĨA Name Tên của điều khiển Control Source Tên trường hay biểu thức buộc vào điều khiển Caption Nội dung hiển thị của nhãn Format Định dạng hiển thị dữ liệu Decimal place Số chữ số thập phân Inputmask Định khuôn nhập dữ liệu Validation rule Biểu thức kiểm chính số nhập liệu Validation Text Hiển thị thông báo khi vi phạm rule Visible Hiển thị hay khong hiển thị điều khiển Font name Font chữ của điều khiển Font Size Cỡ chữ của điều khiển Text Align Căn lề dữ liệu trong điều khiển Width Độ rộng của điều khiển Height Chiều cao của điều khiển. 4.5. Tạo các điều khiển. 4.5.1. Điều khiển TextBox. • Textbox là điều khiển quan trọng nhất trên form. Đây là loại điều khiển có thể thuộc cả 3 loại: Bị buộc, không bị buộc, và tính toán được. • Nếu điều khiển không là bị buộc: nó dùng để nhập dữ liệu vào một biến nhớ dùng trong so sánh, tính toán hoặc để làm trung gian khi nhập dữ liệu vào bảng. Để tạo điều khiển dạng này, kéo từ toolbox vào (không liên quan đến CSDL). TextBox không bị buộc Nếu điều khiển là bị buộc thì form đó phải có nguồn dữ liệu. Hiện Fieldlist để hiển thị danh sách các trường. Kéo từ Fieldlist vào form, ta có textbox bị buộc với các trường được lựa chọn hoặc chọn trực tiếp từ control source của textbox. Nếu là điều khiển tính toán thì trước hết tạo như một điều khiển không bị buộc, sau đó đưa các biểu thức vào + Chính ô điều khiển + Thuộc tính Control Source của điều khiển, ở đây còn có thể gọi Expression Builder. Gõ biểu thức tính toán vào đây Ví dụ về textbox Điều khiển không bị buộc. Điều khiển bị buộc. 4.5.2. Tạo Label. - Click chọn nút Label trên thanh Toolbox. - Vẽ tại vị trí muốn tạo. - Chọn Font chữ, cỡ chữ, màu chữ cho Label 4.5.3.Điều khiển ảnh. - Image: Cho phép chọn một số tệp ảnh: bmp, wmf, … Ít tốn không gian nhớ, tải ảnh lên form nhanh. Để trang trí hoặc làm trung gian để tải ảnh vào CSDL. - Bound object frame: Gắn với trường có kiểu dữ liệu OLE, có thể thay đổi khi hiện form ở chế độ form view. Chỉ cần kéo trường OLE từ field list vào form là có ngay điều khiển OLE bị buộc. Unbound object frame: Điều khiển không bị buộc. Có thể thay đổi khi hiển thị form ở chế độ form view (Enabled = yes, Locked = no). Có thể dùng nhiều loại tệp ảnh hơn, chẳng hạn như jpg. Khi dùng điều khiển ảnh cần chú ý các thuộc tính sau: + Size mode + Special Effect + Border style, Back style 4.5.4. Hộp kiểm tra, nút chọn, nút bật, tắt Có thể có 2 trường hợp: - Nếu điều khiển bị buộc: nó luôn được gắn với trường kiểu yes/no. Tùy yêu cầu thực tế mà chọn kiểu nút cho phù hợp. - - Nếu điều khiển không bị buộc: Quan tâm đến thuộc tính value-1/0 để lập trình xử lý sự kiện. 4.5.5. Nhóm lựa chọn là tập hợp gồm nhiều điều khiển thuộc một trong 3 dạng: Option Button, Check Box, Toggle Button. - Nếu là điều khiển bị buộc: Nó dùng để kiểm soát sao cho dữ liệu nhập vào một trường chỉ có thể nhận một trong số ít giá trị. Để tạo nhóm lựa chọn có thể dùng một trong hai cách sau: - - Nếu là điều khiển không bị buộc: không cần chọn trường trên field list. Khi tạo điều khiển xong, căn cứ vào giá trị của các nút lựa chọn mà lập trình xử lý sự kiện. 4.5.6. Hộp liệt kê (List Box) và Combo (Combo box) - Combo box: thường được dùng nhiều trên màn hình nhập dữ liệu, tìm kiếm. - - List box: thường được dùng trong màn hình hiển thị, tra cứu. - Mở thuộc tính của List box/Combo box, xác định các thuộc tính sau: - Row Source Type: Chọn Table/Query hoặc Value List. - Row Source: Tên bảng hoặc truy vấn nếu Row Source Type là table/query. Nếu Row Source Type là Value list thì để danh sách giá trị phân cách bằng dấu ;. - Cũng có thể là một lệnh Selecte của SQL nếu muốn hiển thị dữ liệu trong hộp này hay nhập vào trường giá trị của những cột bất kỳ. Ví dụ: tạo Combo box chứa tên ĐV Chọn combo Box từ ToolBox vẽ vào Form. R_Click vào Combo Box chọn properties sau đó chọn như hình Ví dụ: tạo combo box chứa các tên cantho, tphcm,hanoi không có trong CSDL Vẽ combo vào form, tại row source gõ vào như sau: cantho;tphcm;hanoi. Tại row source type chọn Value List 4.5.7. Nút lệnh (Command Button) + Chọn nút lệnh, đưa vào form + Lập trình xử lý sự kiện trên nút lệnh: sự kiện quan trọng nhất là Click (Wizards, Macro hoặc Code). VÍ DỤ: Thêm các nút lệnh NEXT, PREVIOUS, FIRST, END, NEW RECORD Chọn Control Wizards Chọn Commond Button, làm như sau: Chọn Control Wizards Chọn Commond Button Record Nevigation Find Next Find Record Go to First record Go to last record Go to next record Go to previous record Record Operations Add new record Delete record Duplicate record Print record Save record Undo record Kết quả 4.5.8. Điều khiển Tab Dùng khi cần nhập dữ liệu cho nhiều bảng độc lập khác nhau trên cùng một form hoặc khi form nhập dữ liệu quá dài. Các thao với điều khiển Tab: + Đưa điều khiển tab + Thêm trang + Bớt trang + Đổi thứ tự trang + Xác định thuộc tính cho tab và cho từng trang 4.6. Tao Sub Form. Sub-form là việc form này lồng trong form kia. Form chứa gọi là form mẹ (Main form); Form được lồng vào gọi là form con (Sub-form). Việc xử lý dữ liệu trên từng form có thể xử lý độc lập hoặc có quan hệ với nhau 4.6.1. Sử dụng Sub-form trong form nhập dữ liệu: Bài toán: Thiết kế form nhập thông tin hoá đơn bán hàng như sau:  Với yêu cầu này, phải tạo một form con cho phép hiển thị và nhập các thông tin về hàng bán (1);  Phải tạo một form mẹ để nhập thông tin về hoá đơn bán hàng (2);  Phải kết nối form mẹ với form con thông qua trường hoadonID. 4.6.1.1. Cách làm như sau: Bước 1: Tạo form con. Tạo mới mới form ở chế độ Design View;  Vì form con sẽ hiển thị dữ liệu dạng bảng nên phải thiết lập thuộc tính Default View cho form con là Datasheet; Thiết lập nguồn dữ liệu làm việc cho form con ở thuộc tính Record Source bằng cách nhấn nút … (hình dưới) Nhấp lên đây để tạo nguồn dữ liệu cho form Một màn hình thiết kế query xuất hiện. Hãy thiết lập query này như sau: Sử dụng cửa sổ Field List để đưa các trường cần thiết lên vùng Detail của form bao gồm: hangID, donvi, dongia, soluong, thanhtien; Ghi lại form với một tên gọi (ví dụ: frmHangban) và đóng lại, chuẩn bị tạo form mẹ. Form sau khi đưa các trường cần thiết vào Bước 2: Tạo form mẹ Tạo mới mới form ở chế độ Design View; Thiết lập nguồn dữ liệu làm việc cho form mẹ ở thuộc tính Record Source bằng cách nhấn nút … (hình dưới). Nhấp lên đây để tạo nguồn dữ liệu cho form Một màn hình thiết kế query xuất hiện. Hãy thiết lập query này như sau: Sử dụng cửa sổ Field List để đưa các trường cần thiết lên vùng Detail của form bao gồm: hoadonID, khacID, ngayban, diachi, email; Sử dụng đối tượng Subform\Subreport trên thanh công cụ ToolBox để đưa form con lên form mẹ. Sau khi đưa một đối tượng Subform\Subreport lên form, một hộp thoại xuất hiện; Chọn vào đây Chọn tên form con Nhấp vào đây để kết thúc Ghi lại form với một tên gọi (ví dụ: frmLapHoadon) và đóng lại, kết thúc yêu cầu cơ bản bài toán, thu được kết quả như sau: ĐiỀN GIÁ TRỊ VÀO PROPERTIES Hiển thị bảng properties. Tìm đến Subform/SubReport. Điền tên trường nối kết trong Subform vào ô: Link Master Fields Điền tên trường sẽ liên kết đến vào ô: Link Child Fields Chú ý: nếu nhiều hơn 1 trường thì các trường ngăn cách bởi dấu “;” Tên subform Trường dữ liệu trên Subform Trường DL trên Mainforrm Ma Tên subform Trýờng dữ liệu trên Subform Trýờng DL trên Mainforrm Ma 4.6.2. sử dụng subform trong lọc dữ liệu. minh hoạ một bài toán đặt lọc sau khi đã được xây dựng và đang hoạt động: Qui trình xây dựng một bài toán đặt lọc có thể thực hiện như sau: Bước 1: Xây dựng form con - form sẽ chứa những kết quả lọc được; Bước 2: Xây dựng form mẹ - form chứa những thiết lập điều kiện để lọc; Bước 3: Thực hiện lọc ra các bản ghi thoả mãn các điều kiện trên form mẹ và hiển thị kết quả lên form con. Cách giải quyết Bước 1: Xây dựng Form con Tạo mới form ở chế độ Design view; Thiết lập thuộc tính Record Source cho form là một Total Query như sau: Thiết lập thuộc tính Defaul View cho form con là Datasheets; Mở cửa sổ FieldList và thiết kế form như sau: Đóng thiết kế form con lại và ghi ten là frm_formcon. Bước 2: Xây dựng form mẹ Tạo mới form ở chế độ Design view; Đưa hộp Combobox từ thành công cụ Toolbox lên form mẹ (giả sử tên (Name) của Combo này là Combo0). Chọn thuộc tính Row source là bảng chứa danh sách các khách hàng. Sử dụng đối tượng Sub-form/Sub-report trên thanh công cụ Toolbox để đưa form con vừa tạo lên form mẹ. Ngầm định tên của sub-form này là frm_formcon. Chú ý đến tên gọi này vì phần tiếp sau sẽ sử dụng nó để lập trình. Cuối cùng, giao diện thiết kế form mẹ như sau: Bước 3: Thiết lập lệnh lọc dữ liệu trên form mẹ Muốn thế, việc lập trình lọc dữ liệu ở đây phải được thực hiện trong thủ tục đáp ứng sự kiện Combo0_Click. Giải thuật sẽ là: "SELECT hoadonID, khachID, ngayban, Sum([soluong]*[dongia]) “ + ” AS tongtien FROM " + " hoadon INNER JOIN (hang INNER JOIN hangban ON " + " hang.hangID = hangban.hangID) ON hoadon.hoadonID =" + " hangban.hoadonID WHERE Trim(khachID)='"+Trim(Combo0)" + " GROUP BY hoadonID, khachID, ngayban "  Toàn bộ mã lệnh cho bài toán trên như sau: Dim db As DAO.Database Private Sub Form_Load() Set db = CurrentDb End Sub Private Sub Combo0_Click() Dim rs As DAO.Recordset Set rs = db.OpenRecordset("SELECT hoadonID, khachID, " + " ngayban, Sum([soluong]*[dongia]) AS tongtien FROM" + " hoadon INNER JOIN (hang INNER JOIN hangban ON " + " hang.hangID = hangban.hangID) ON hoadon.hoadonID =" + " hangban.hoadonID WHERE Trim(khachID)='"+Trim(Combo0)" + " GROUP BY hoadonID, khachID, ngayban ") Set frm_formcon.Form.Recordset = rs frm_formcon.Requery End Sub ĐiỀN GIÁ TRỊ VÀO PROPERTIES Hiển thị bảng properties. Tìm đến Subform/SubReport. Điền tên điều khiển chứa điều kiện lọc vào ô: Link Master Fields Điền tên trường sẽ liên kết đến vào ô: Link Child Fields Tên subform Trýờng dữ liệu trên Subform Điều khiển trên Mainforrm Một số hàm xữ lý CSDL Dùng trong các trường hợp lọc dữ liệu, hoặc tìm kiếm dữ liệu Davg Tính giá trị trung bình của một trường theo điều kiện cho trước. Ví dụ: tính điểm trung bình thi lần 1 của sinh viên SV001. =Davg(“[ketqua1]”, “dangky”, “[Mssv]=‘SV001’”) Tính điểm trung bình lần 1 của tất cả SV =Davg(“[ketqua1]”, “dangky”) Dcount Đếm số mẫu tin trong 1 bảng theo ĐK cho trước và không đếm các mẫu tin có giá trị Null. Ví dụ: đếm số mẫu tin trong bảng đăng ký. =Dcount(“*”, “dangky”). Đếm số môn học mà SV sv001 đăng ký. =Dcount(“*”, “dangky”, “[mssv]=‘sv001’”). Dlookup Tìm giá trị của một trường theo điều kiện cho trước. Ví dụ: tìm kiếm kết quả lần 1 của môn học MH001. =Dlookup(“[ketqua1]”, “dangky”, “[msmh]=‘MH001’”). Dmin, Dmax, Dsum Tìm giá trị nhỏ nhất, lớn nhất, tính tổng của một trường theo điều kiện cho trước. Chú ý:trong trường hợp điều kiện cho trước là một giá trị được lấy từ các điều khiển ta làm như sau: =DLookUp("[ketqua1]",“dangky","[ms mh]= ‘ " & [Combo0].[Value] & “ ‘ ") Một số ví dụ Tạo form gồm 1 Combo Box chứa MADV. Khi chọn một MaDV sẽ xuất hiện tên ĐƠN VỊ, LUONGTB, LUONG CN, LUONGTN, SONV, TONGLUONG như sau. Tại combo madv đưa madv vào rowsource Tại text box tên đv gõ vào như sau: =DloopUp(“[TEN]”, “cauc1”, “[Ma]=‘” & combo0.value & “’”). Textbox luongtb, luong cn, luong tn, tongluong?