Access_rido_Chuog 3 & 4

Màu nền
Font chữ
Font size
Chiều cao dòng

Chương 3. Thiết kế truy vấn

4. Thiết kế truy vấn SQL

4.1 Cách mở cửa sổ thiết kế truy vấn SQL

Bước 1: Từ cửa sổ Database, trong mục Objects chọn đối tượng Querys -> Create query in Design view. Sau bước này cửa sổ Show tables xuất hiện (như trong phần thiết kế truy vấn QBE).

Bước 2: Đóng cửa sổ Show table này lại, trên menu chọn View -> SQL View. Cửa sổ thiết kế SQL xuất hiện, và chúng ta soạn câu lệnh SQL trong cửa sổ này.

Bước 3: Để thực hiện câu lệnh SQL chọn biểu tượng ! trên thanh công cụ.

4.2 Cú pháp của câu lệnh SQL

SELECT [DISTINCT|ALL]{*| <danh sách các thuộc tính>|<biểu thức cột> [AS <tên mới>]}

FROM <tên bảng>[<bí danh>] [, ...]

[WHERE <điều kiện lựa chọn các bản ghi>]

[GROUP BY <danh sách tên cột dùng để gộp nhóm>] [HAVING <điều kiện lựa chọn nhóm>]

[ORDER BY <danh sách cột dùng để sắp xếp>]

Trong đó:

- biểu thức cột: là tên của một cột hoặc một biểu thức.

- tên bảng: là tên của một bảng hoặc một khung nhìn.

- bí danh: là một tên viết tắt của tên bảng.

- GROUP BY dùng để nhóm các bản ghi có cùng giá trị trong danh sách tên cột dùng để gộp nhóm thành một nhóm.

- HAVING dùng để lọc các nhóm thỏa mãn điều kiện lựa chọn nhóm.

- ORDER BY qui định thứ tự các bản ghi trong kết quả trả ra, thứ tự các bản ghi được sắp xếp dựa vào giá trị trong của các cột trong danh sách cột dùng để sắp xếp.

Khi viết lệnh SQL cần chú ý:

- Phần đặt trong cặp dấu [ ]: là phần có thể sử dụng hoặc không.

- Những phần đặt trong cặp dấu {} : bắt buộc phải lựa chọn một số giá trị trong cặp dấu ngoặc này.

- Phần đặt trong cặp dấu <>: là phần bắt buộc phải có khi viết lệnh SQL.

Một số loại điều kiện có thể đặt sau từ khóa WHERE

- So sánh giá trị của hai biểu thức.

- Kiểm tra xem giá trị của một biểu thức có nằm trong một khoảng giá trị đã xác định không.

- Kiểm tra xem giá trị của một biểu thức có bằng một trong các giá trị thuộc một tập hợp đã xác định không.

- Kiểm tra xem một cột có chứa giá trị null không.

Một số toán tử dùng trong SQL

- Toán tử so sánh: >, <, >=, <=, <>

- Toán tử logic: NOT, AND, OR, đây cũng là thứ tự ưu tiên của các phép toán logic.

- Các toán tử khác: LIKE, IN, IS, ...

- Kí hiệu % dùng để sánh hợp với mọi xâu. Kí hiệu _ (dấu nối dưới) dùng để sánh hợp với mọi kí tự.

Ví dụ 1 Cho biết mã nhân viên, họ tên, đơn vị và lương của những nhân viên có lương lớn hơn 2300000.

SELECT manv, hoten, ma_dv, luong

FROM nhan_vien

WHERE luong>2300000

Ví dụ 2 Tìm tên các nhân viên có mã đơn vị là 'P4' và lương thấp hơn 2500000.

SELECT manv, ho_ten, ma_dv, luong

FROM nhan_vien

WHERE ma_dv='P4' AND luong < 2500000

4.3 Kết nối các bảng

Trong trường hợp câu hỏi liên quan đến nhiều bảng chúng ta cần kết nối các bảng với nhau. Có 2 kiểu kết nối là kết nối trong (INNER JOIN) và kết nối ngoài (LEFT JOIN, RIGHT JOIN). Ví dụ, kết nối bảng nhanvien va bảng phong dựa trên điều kiện kết nối nhanvien.maphong=phong.maphong

- Kết nối trong: một bộ trong bảng nhanvien sẽ được kết nối với một bộ trong bảng phong khi và chỉ khi maphong của hai bộ này bằng nhau.

- Kết nối ngoài: Nếu nhanvien LEFT JOIN phong ON nhanvien.maphong=phong.maphong thì với một bộ t trong bảng nhanvien được ghép với một bộ k trong bảng phong nếu hai bộ này có maphong bằng nhau, nếu không tìm thấy bộ nào trong bảng phong có maphong bằng maphong của bộ t thì bộ t được ghép với một bộ có giá trị null trong bảng phong. Kết nối nhanvien RIGHT JOIN phong ON nhanvien.maphong = phong.maphong cho kết quả bằng kết nối phong LEFT JOIN nhanvien ON nhanvien.maphong=phong.maphong

Ví dụ 1: Tìm những ngoại ngữ mà chưa có nhân viên nào học?

Cách 1: SELECT mann, tenn

FROM dmnn LEFT JOIN tdnn ON dmnn.mann=tdnn.mann

WHERE tdnn.mann IS null

Cách 2: SELECT mann, tenn

FROM dmn

WHERE mann NOT IN (SELECT DISTINCT mann FROM tdnn

Ví dụ 2: Cho biết mã nhân viên, họ tên, lương của các nhân viên làm ở phòng "kỹ thuật"?

Cách 1: SELECT manv, hoten, luong

FROM nhanvien INNER JOIN phong ON nhanvien.maphong=phong.maphong

WHERE tenphong="kỹ thuật"

Cách 2:SELECT manv, hoten, luong

FROM nhanvien, phong

WHERE nhanvien.maphong = phong.maphong AND tenphong="kỹ thuật"

Ví dụ 3:Cho biết mã nhân viên, họ tên, ngày sinh của những nhân viên có tiếng Anh đạt trình độ từ C trở lên.

SELECT nhanvien.manv, hoten, ngaysinh

FROM (nhanvien INNER JOIN tdnn ON nhanvien.manv=tdnn.manv) INNER JOIN dmnn ON tdnn.mann=dmnn.mann

WHERE tennn='Anh' AND tdo>='C'

Chú ý: Khi sử dụng nhiều bảng trong câu lệnh SQL với những thuộc tính xuất hiện ở nhiều bảng, khi sử dụng cần chỉ rõ chúng ta dùng thuộc tính đó ở bảng nào, bằng cách viết: <tên bảng>.<tên thuộc tính>.

4.4 Sử dụng các hàm gộp, GROUP BY, HAVING

SQL sử dụng một số hàm gộp sau:

- COUNT: đếm số các giá trị trong một cột.

- SUM: tính tổng các giá trị trong một cột. Hàm này chỉ áp dụng cho các giá trị kiểu số.

- AVG: tính trung bình cộng của các giá trị trong một cột. Hàm này chỉ áp dụng cho các giá trị kiểu số.

- MIN: tìm giá trị nhỏ nhất trong số các giá trị của một cột.

- MAX: tìm giá trị lớn nhất trong số các giá trị ở một cột.

Trừ hàm COUNT(*), còn các hàm khác đều bỏ qua các giá trị null trong các giá trị đầu vào của chúng.

Ví dụ 1: Cho biết số nhân viên, và tổng lương của toàn cơ quan?

SELECT COUNT(manv) AS sonv, SUM(luong) AS tongluong

FROM nhanvien

Ví dụ 2: Cho biết lương cao nhất, lương trung b́nh của mỗi đơn vị? Thông tin đưa ra gồm: mã phòng, tên phòng, lương cao nhất, lương trung bình của phòng đó.

SELECT phong.maphong, tenphong, MAX(luong) AS maxluong, AVG(luong) AS luongtb

FROM nhanvien INNER JOIN phong ON nhanvien.maphong=phong.maphong

GROUP BY phong.maphong, tenphong

Ví dụ 3: Cho biết số nhân viên làm việc ở đơn vị có mã số 'P1' và tổng lương của họ.

SSELECT COUNT(manv) AS sonv, SUM(luong) AS tongluong

FROM nhanvien

WHERE maphong='P1'

Ví dụ 4:Đưa ra lương cao nhất và tổng lương của những đơn vị có tổng lương trên 4 triệu.

SELECT maphong, MAX(luong) AS maxluong, SUM(luong) AS tongluong

FROM nhanvien

GROUP BY maphong

HAVING SUM(luong)>4000000

4.5 Truy vấn lồng nhau

Một truy vấn con là một biểu thức SELECT...FROM...WHERE được lồng trong một truy vấn khác. Kết quả của truy vấn con được sử dụng cho câu truy vấn SELECT...FROM...WHERE bên ngoài. Truy vấn con có thể xuất hiện trong WHERE, HAVING của truy vấn ngoài, hoặc xuất hiện trong các câu lệnh INSERT, UPDATE, DELETE.

Một số lượng từ thường dùng trong câu truy vấn lồng nhau: ALL (tất cả), SOME (một vài), EXIST (tồn tại).

Ví dụ 1: Tìm mã số và tên những nhân viên phòng Kỹ thuật.

SELECT manv, ho_ten

FROM nhan_vien

WHERE ma_dv =

(SELECT ma_dv

FROM phong

WHERE ten_phong="Kỹ thuật')

Ví dụ 2: Cho biết tên và lương của những người có lương cao hơn lương của mọi nhân viên thuộc đơn vị mã P2.

SELECT ho_ten, luong

FROM nhan_vien

WHERE luong> ALL

(SELECT luong

FROM nhan_vien

WHERE ma_dv='P2')

Ví dụ 3: Cho biết tên phòng có lương trung bình cao nhất.

SELECT ten_phong

FROM phong

WHERE ma_dv IN

(SELECT ma_dv

FROM nhan_vien

GROUP BY ma_dv

HAVING AVG(luong)>=ALL

SELECT AVG(luong)

FROM nhan_vien

GROUP BY ma_dv)

Mục đích

- Giúp sinh viên biết cách lọc và tìm kiếm thông tin trong cơ sở dữ liệu bằng cách thực hiện truy vấn QBE, SQL.

Nội dung

Tổng quan về truy vấn .......................................... Start

Các toán tử trong Microsoft Access ........................ Start

Thiết kế truy vấn QBE .......................................... Start

Thiết kế truy vấn SQL ................................. Start

Chương 4: Thiết kế biểu mẫu, báo cáo

1. Thiết kế biểu mẫu (form)

1.1 Thiết kế biểu mẫu mới

Cách 1: Từ cửa sổ database, trong phần Objects chọn Form -> Create form in Design view hoặc Create form by using winzard ->

Cách 2: Từ cửa sổ database, trong phần Objects chọn Form/New, cửa sổ New Form xuất hiện

Trong cửa sổ New Form chọn Design View.

Trong cửa sổ thiết kế form này, quan trọng nhất là Fieldlist và Toolbox, chúng ta có thể làm xuất hiện hay ẩn 2 công cụ này bằng cách: từ cửa sổ thiết kế form trên, chọn View/Fieldlist (để làm xuất hiện hoặc ẩn Fieldlist), chọn View/Tollbox (để làm xuất hiện hoặc ẩn Tollbox).

- Fieldlist: Dùng trong trường hợp form bị buộc vào nguồn dữ liệu nào đó.

- Hộp công cụ ToolBox: Để thiết kế các điều khiển trên form

1.2 Thiết kế các điều khiển trên biểu mẫu

a. Vị trí của các điều khiển

Khi thiết kế các điều khiển, người ta quan tâm đến vị trí của nó trên form.

- Page header/Page fooder: là tiêu đề đầu và cuối mỗi trang.

- Form header/Form fooder: Form header, dùng để chứa các tiêu đề (như tên form, tên trường). Form fooder, dùng để chứa các nút lệnh thao tác trên bản ghi hoặc các dòng tổng cộng.

- Detail: Phần quan trọng nhất của form. Với những form có dữ liệu, đây chính là phần lặp lại với mỗi bản ghi. Do vậy muốn dữ liệu được hiển thị như những phiếu nhập dữ liệu, dàn dọc các điều khiển trên phần Detail. Muốn dữ liệu hiển thị dưới dạng bảng, dàn hàng ngang các điều khiển trên phần Detail. Riêng với form dạng Datasheet, chỉ cần kéo đủ các điều khiển vào detail của form, không cần quan tâm đến vị trí của nó.

b. Căn chỉnh các điều khiển

Có thể sao chép, cắt dán, xóa các điều khiển (Tất nhiên chỉ với một số loại nào đó)

- Đánh dấu các điều khiển:

Đánh dấu theo cột

Đánh dấu theo hàng

Đánh dấu theo khung

Đánh dấu các điều khiển rời rạc (shift+nhắp chuột)

- Căn chỉnh các điều khiển: Chọn mục format

Gióng đều: Align

Khoảng cách giữa các điều khiển: Vertical Spacing,Horizontal Spacecing

Làm cho các điều khiển có cùng độ rộng, chiều cao: Size

c. Điều khiển hộp văn bản (Textbox)

Hộp văn bản 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, thường điều khiển đó nằm trong form không có nguồn dữ liệu. Như vậy, 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.

- 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.

- 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.

Có thể quan tâm đến các thuộc tính của điều khiển TextBox: (Đã giải thích ý nghĩa khi tạo bảng).

+ Không bị buộc

+ Bị buộc, dữ liệu trong toàn bảng không thỏa các thuộc tính nhưng dữ liệu được nhập tại form lại phải thỏa những thuộc tính đó.

Các thuộc tính khác có thể quy định khuôn dạng của điều khiển, chẳng hạn mầu nền, font chữ, cách căn lề (trái, phải), thanh cuộn (ScrollBar).

d. Nhãn

- Nhãn dùng làm tiêu đề, chú giải, ...

- Chủ yếu quan tâm đến hình thức trình bày trên nhãn: font, màu sắc, ... Có thể kích hoạt vào biểu tượng hoặc đổi giá trị thuộc tính.

- Khi dòng chữ trong nhãn quá lớn so với kích cỡ của nhãn, có thể chỉnh tự động bằng cách dùng format/size/to fit.

- Muốn xuống dòng giữa chừng: Ctrl+Enter.

e. Điều khiển ảnh

Trong Access điều khiển ảnh có thể là:

- 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

f. 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.

g. Nhóm lựa chọn

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 dùng Wizard cần xác định các thông tin sau:

- Chọn các nhãn

- Giá trị ngầm định

- Giá trị ứng với từng mục chọn - chú ý giá trị ngầm định là 1, 2, 3, ...

- Kiểu nút

- Kiểu khung

- Tên của nhóm

+ Nếu không dùng Wizard

- Tắt Control Wizard

- Chọn Option Group

- Chọn trường trên field list đưa vào form - Một khung xuất hiện.

- Chọn kiểu nút đưa vào khung. Khi ấy phần bên trong khung sẽ đổi mầu.

- Nếu giá trị nhập vào trường được chọn khác 1,2,3, ... thì phải đổi các giá trị đó tại thuộc tính Option Value.

- 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.

h. Hộp liệt kê (List Box) và Combo (Combo box)

Khi muốn chọn một trong nhiều giá trị để nhập vào trường (trên 5 giá trị) người ta dùng List box hoặc Combo box. Những trường Lookup khi kéo vào form đã có sẵn hộp List box/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.

Có thể thêm giá trị khác (không có trong danh sách giá trị) vào hộp Combo Box, trong khi không thể thêm một giá trị mới vào trong List box.

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ó thể là dấu khác nếu đặt lại ở Regional Setting). 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ỳ.

- Bound Column: Cột cho giá trị.

- Column Count: Số các cột sẽ hiển thị dữ liệu trong hộp (tính từ cột 1)

- Limit to list (yes/no): Dùng riêng cho Combo box. Khi thêm giá trị mới vào, giá trị này sẽ được cập nhật vào nguồn nếu thuộc tính này đặt là No. Tuy nhiên, không thêm giá trị này vào danh sách lựa chọn của hộp Combo.

i. Nút lệnh (Command Button)

Khi ta kích hoạt nút lệnh, HQTCSDL sẽ thực hiện một công việc gì đó. Công việc đó có thể đơn giản là mở một form cũng có thể là tính điểm trung bình của sinh viên của một trường đại học.

Để tạo nút lệnh có thể dùng Wizard hoặc lập trình

- Không dùng Wizard:

+ Tắt Control Wizard

+ 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 (Macro hoặc Code).

j. Đ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

k. Thuộc tính của form

- Thuộc tính về hình thức trình bày của form:

+ Default View: Dạng hiển thị ngầm định của form.

+ Scroll Bars: Các thanh cuộn để chuyển điều khiển lên - xuống.

+ Navigation Button: Các nút để dịch chuyển bản ghi.

+ Dividing Lines: Đường phân chia các bộ phận của form.

+ Picture: Hình ảnh trên toàn form.

+ MinMax Buttons: Nút cho phép thu nhỏ, phóng to kích cỡ của form.

- 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.

Ví dụ, tạo form để xem và cập nhật thông tin cho bảng phòng có dạng:

Có thể làm như sau:

- Từ cửa sổ Database, trong mục Object chọn Form -> Create form in Design view -> . Cửa sổ thiết kế xuất hiện.

- Từ cửa sổ thiết kế form, chúng ta chọn nguồn dữ liệu của form là bảng PHONG.

- Thiết kế các điều khiển trên form như sau: Kéo rê các trường cần hiển thị trên form (các trường này lấy từ nguồn dữ liệu của form - Field List) vào cửa sổ thiết kế, sau đó hiệu chỉnh lại các nhãn (Lables) trên form

1.3 Các thuộc tính của biểu mẫu

a. Thuộc tính về hình thức trình bày của form:

+ Default View: Dạng hiển thị ngầm định của form.

+ Scroll Bars: Các thanh cuộn để chuyển điều khiển lên - xuống.

+ Navigation Button: Các nút để dịch chuyển bản ghi.

+ Dividing Lines: Đường phân chia các bộ phận của form.

+ Picture: Hình ảnh trên toàn form.

+ MinMax Buttons: Nút cho phép thu nhỏ, phóng to kích cỡ của form.

b. 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á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.

1.4 Biểu mẫu chính phụ

Form chính - phụ để nhập dữ liệu đồng thời vào nhiều bảng. Có thể là form chính phụ độc lập hoặc phụ thuộc.

Cách tạo form chính - phụ phụ thuộc

- Dùng Wizard: Trên màn hình thiết kế form chính, bật Control Wizard, chọn điều khiển Subform/Subreport sau đó xác định:

+ Chọn bảng nguồn hoặc form đã có sẵn.

+ Chọn trường đưa vào form phụ.

+ Chọn trường kết nối.

+ Chọn tên điều khiển form phụ.

- Không dùng Wizard:

+ Tạo form chính.

+ Tạo form phụ một cách độc lập.

+ Mở cửa sổ thiết kế form chính đồng thời với cửa sổ Database. Kéo form phụ vào form chính.

Ví dụ: Tạo một form chính "Danh sách phòng", mỗi phòng tương ứng với một danh sách nhân viên trong form phụ "Danh sách nhân viên"

Chú ý: Danh sách nhân viên trong form phụ hiển thị đúng là các nhân viên của phòng trong form chính. Vì bảng PHONG và bảng NHANVIEN kết nối (quan hệ) với nhau thông qua trường MAPHONG.

Kết quả:

Biểu mẫu (form) là giao diện chủ yếu giữa người và máy. Do vậy biểu mẫu thường 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.

Yêu cầu khi thiết kế giao diện phải làm sao thật thuận tiện cho người sử dụng, tức là hoàn toàn giống với những gì mà người sử dụng thường dùng trong thực tế. Access hỗ trợ nhiều công cụ để giải quyết yêu cầu này.

Mọi đối tượng xuất hiện trên form được gọi là điều khiển. Điều khiển được chia thành 3 loại chính:

1. Điều khiển bị buộc (Bound Control): là điều khiển có nguồn dữ liệu lấy từ CSDL. Nhờ điều khiển bị buộc ta có thể:

- Tra cứu thông tin trong CSDL.

- Cập nhật thông tin vào CSDL.

2. Điều khiển không bị buộc (Unbound Control): Điều khiển mà thông tin không gắn với nguồn dữ liệu. Thường gặp dưới dạng tiêu đề đường kẻ ... Cũng có thể là hộp văn bản (text box) dùng để nhập dữ liệu trong trường hợp đặc biệt.

3. Điều khiển tính toán được (Calculate Control): Điều khiển mà giá trị của nó được tính toán từ giá trị của các điều khiển khác.

2. Thiết kế báo cáo

2.1 Tạo báo cáo mới

Để tạo khuôn dạng của báo cáo ban đầu:

Cách 1: Từ cửa sổ Database, trong phần Objects chọn Report -> Create report in Design view hoặc Create report by using winzard ->

Cách 2: Từ cửa sổ Database, trong phần Objects chọn Report -> New, cửa sổ New Report với các lựa chọn như sau xuất hiện -> Design View -> OK.

Màn hình thiết kế báo cáo hiện ra với 3 chế độ song song tồn tại, đó là:

- Design View: Thiết kế báo cáo.

- Print Preview: Xem hình ảnh của báo cáo với kích thước thật và dữ liệu thật.

- Layout Preview: Chỉ xem hình ảnh của báo cáo, còn dữ liệu chưa chắc chính xác, vì Access có thể bỏ qua các điều kiện chọn, kết nối, ...

Trên màn hình thiết kế báo cáo cũng luôn để 2 công cụ là Toolbox và Fieldlist giống như trong cửa sổ thiết kế biểu mẫu. Các thành phần trong cửa sổ thiết kế báo cáo gồm:

- Detail: Lặp lại theo từng bộ dữ liệu (từng bản ghi trong bảng hoặc truy vấn nguồn).

- Page Header/Page Footer: Lập lại mỗi trang một lần. Phần này thường chứa số trang, ngày tháng lập báo cáo, ...

- Report Header/Report Footer: Mỗi báo cáo lặp một lần. Phần này chứa tiêu đề chung của toàn báo cáo và các dạng tổng cộng.

- Ngoài ra các báo cáo có phân nhóm còn chứa Group Header/Footer dùng làm tiêu đề và các dòng tổng cộng cho từng nhóm trong báo cáo

2.2 Thiết kế các một số dạng báo cáo

a. Thiết kế báo cáo dạng văn bản

Gồm những văn bản giống nhau được gửi tới mỗi đối tượng có thông tin trong CSDL. Đặc trưng của các báo cáo dạng này là văn bản trộn lẫn với thông tin trong CSDL. Vì vậy, toàn bộ thiết kế nằm trong phần Detail. Trong báo cáo thường gồm các điều khiển:

- Nhãn: Chứa các đoạn văn bản với font chữ theo yêu cầu thực tế.

- Textbox: Có thể chứa thông tin lấy trực tiếp từ nguồn dữ liệu hoặc kết xuất từ những thông tin trong CSDL. Do vậy Text box gồm 2 loại: bị buộc và tính toán được.

- Ảnh: Có thể bị buộc hoặc không bị buộc.

b. Thiết kế báo cáo đơn giản dạng bảng

- Tiêu đề: Nếu tiêu đề xuất chỉ xuất hiện ở trang đầu chọn Report Header. Nếu tiêu đề xuất hiện trên mọi trang chọn Page Header.

- Đầu cột: Thường để ở Page Header (trừ trường hợp dán nối các trang thì đẻ ở Report Header).

- Text box chứa dữ liệu nguyên dạng: Kéo các dữ liệu xuất hiện trong bảng từ Field List vào phần Detail. Xóa nhãn đi kèm điều khiển. Việc căn chỉnh giống như căn chỉnh điều khiển trên form.

+ Nếu muốn các giá trị trùng nhau chỉ xuất hiện 1 lần, ví dụ tên người đi kèm tên ngoại ngữ mà người đó biết, mở thuộc tính của Textbox đặt Hide Duplicate là Yes.

+ Để có các textbox có độ cao giống nhau, nên chọn cách sao chép hoặc tác động vào thuộc tính của điều khiển.

- Tạo các Textbox (điều khiển tính toán được) chứa dữ liệu kết xuất dạng: = <Biểu thức>

Trong đó đặc biệt là điều khiển số thứ tự. Nhưng phải đặt thuộc tín Running Sum là Over All.

- Có những Textbox được dùng làm trung gian để tính giá trị cho những textbox khác. Khi ấy phải đặt thuộc tính Visible là No.

- Dòng tổng cộng đặt tại Report Footer.

- Số trang hoặc ngày lập báo cáo có thể để ở Page Footer. Hàm Page, cho biết số của trang hiện thời. Hàm Pages, cho biết tổng số trang của báo cáo.

- Muốn kẻ khung dùng các điều khiển dạng Line. Muốn chính xác sử dụng thuộc tính left, width, top, height. Tại Textbox đặt thuộc tính Borderr Style chọn Solid/Dashes ...

Cuối báo cáo (Report Footer) thường có các dòng tổng cộng là các điều khiển dạng tính toán được với các hàm thư viện hoặc các hàm thư viện có điều kiện, đó là:

= Sum| Avg| StDev| StDevP| Var| VarP (<Biểu thức số>)

=Count| Min| Max (<Biểu thức>)

= DSum| DAvg| DStDev| DStDevP| DVar| DVarP (<Biểu thức số>; <Tên nguồn dữ liệu>; <Điều kiện>)

=DCount| DMin| DMax (<Biểu thức>;<Tên nguồn dữ liệu>;<Điều kiện>)

c. Thiết kế báo cáo thống kê

Nguồn dữ liệu của các báo cáo này trong trường hợp đơn giản là các truy vấn dạng crosstab, ngoài ra có thể dùng bảng trắng và viết mã lệnh VBA để tính toán dữ liệu, dồn vào bảng.

2.3 Sắp xếp và phân nhóm trên báo cáo

Muốn dữ liệu xuất hiện trong báo cáo được sắp xếp theo một thứ tự nào đó, không nhất thiết phải sắp xếp trên truy vấn. Có thể sắp xếp ngay trên báo cáo. Để thực hiện công việc này, cần mở hộp thoại Sorting and Grouping (Có thể mở hộp thoại Sorting and Grouping bằng cách chọn View hoặc kích chuột phải). Cửa sổ Sorting and Grouping có dạng như sau:

Sau khi sắp xếp xong có thể phân nhóm dữ liệu - cũng làm việc trên hộp thoại nói trên. Nếu đặt Group Header/Footer là Yes, sẽ xuất hiện tiêu đề trên và dưới cho mỗi nhóm và do vậy có thể dùng tiêu đề, kẻ đầu cột cũng như tính toán ứng với mỗi nhóm.

Có thể phân nhóm theo nhiều trường cũng như phân nhóm theo trường kết xuất

2.4 Báo cáo chính phụ

Cũng như trên form, khi tạo báo cáo với nguồn dữ liệu lấy từ nhiều bảng và phải đảm bảo đúng khuôn dạng thực tế, người ta phải dùng báo cáo chính-phụ, ví dụ phiếu xuất vật tư, lý lịch nhân viên, ...

Cách tạo báo cáo chính - phụ cũng giống như trên Form, gồm các bước sau:

- Tạo báo cáo chính.

- Tạo báo cáo phụ như một báo cáo độc lập.

- Mở đồng thời cửa sổ thiết kế báo cáo chính và cửa sổ Database. Kéo báo cáo phụ từ cửa sổ Database vào.

- Mở thuộc tính của điều khiển Subreport trên báo cáo chính. Kiểm tra sự kết nối dữ liệu qua các thuộc tính LinkMasterFields và LinkChildFields.

Chú ý rằng các thuộc tính LinkMasterFields và LinkChildFields còn xuất hiện cả trong biểu đồ. (Không cần tạo báo cáo phụ dạng biểu đò mà nên dùng Insert\Chart). Do vậy có thể liên kết dữ liệu ở dạng báo cáo chính và dữ liệu ở biểu đồ trong đó.

2.5 Một số ví dụ về thiết kế báo cáo

Ví dụ 1: Thiết kế báo "Thẻ ra vào", có nội dung được trình bày như sau:

THẺ RA VÀO

Số thẻ:

Họ tên: Nam/nữ ẢNH

Năm sinh:

Đơn vị:

Để có được nguồn dữ liệu cho báo cáo, cần thiết kế truy vấn: Tìm Mã NV, Họ tên, Năm sinh, Giới tính (Nam/nữ), Tên phòng. Dữ liệu cho truy vấn này được lấy từ bảng nhân viên và bảng Phòng.Vì thẻ ra vào được in cho từng nhân viên, có nghĩa là toàn bộ thông tin trên tờ thẻ được lặp lại với mỗi bản ghi về nhân viên nên toàn bộ các thông tin trên thẻ đều được để trong phần Detail.

Thiết kế của thẻ ra vào được thể hiện như sau:

Bước 1: Mở cửa sổ thiết kế báo cáo (report)

Từ cửa sổ Database, trong phần Objects chọn Report -> Create report in Design view - >

Bước 2: Chọn nguồn dữ liệu cho báo cáo là bảng NHANVIEN

Bước 3: Thiết kế các điều khiển trên báo cáo

Kéo rê các trường cần hiển thị trên report (các trường này lấy từ nguồn dữ liệu của report - Field List) vào cửa sổ thiết kế, sau đó hiệu chỉnh lại các nhãn (Lables) và text box để hiển thị giới tính trên report

2. Thiết kế báo cáo

Các bước thiết kế báo cáo như sau:

- Tạo nguồn dữ liệu là một truy vấn tham số gồm các thông tin: tên phòng, họ tên nhân viên, số tiền nhận (số tiền là 1 tham số được nhập từ bàn phím).

- Đặt con trỏ trên báo cáo, click chuột phải -> Sorting and Grouping, cửa sổ Sorting and Grouping xuất hiện,

- Kéo rê các trường cần hiển thị trên report (các trường này lấy từ nguồn dữ liệu của report - Field List) vào cửa sổ thiết kế, sau đó hiệu chỉnh lại các nhãn (Lables) và thêm các các nhãn, các text box mới trên report như sau:

Báo cáo dùng để in ra giấy những thông tin kết xuất từ CSDL theo khuôn dạng, yêu cầu của từng cơ quan.

Báo cáo có nhiều dạng, nhưng thông dụng nhất là các dạng sau:

- Báo cáo dạng văn bản, trong đó văn bản kết hợp với các thông tin lấy từ CSDL, ví dụ, giấy mời được giửi tới các thành viên mà danh sách được lưu trữ trong CSDL, thẻ ra vào, ...

- Báo cáo dạng đơn giản với thông tin được lấy trực tiếp từ CSDL, ví dụ danh sách nhân viên, bảng lương.

- Báo cáo thực hiện một số tính toán, thống kê.

- Báo cáo dạng biểu đồ, nhãn thư, ...

Nói chung rất ít khi phải tự động tạo báo cáo trong chương trình. Thông thường, khuôn dạng của báo cáo được tạo trước rồi sau đó muốn cho báo cáo được linh hoạt hơn thì dùng chương trình đổi nguồn dữ liệu.

Mục đích

Giúp sinh viên biết cách thực hiện các công việc sau:

- Tạo các cửa sổ để tra cứu và cập nhật thông tin thông qua việc thiết kế các biểu mẫu (form).

- Tạo các báo cáo (report) mang tính chất thống kê, tổng hợp thông tin từ dữ liệu có trong CSDL.

Nội dung

Thiết kế biểu mẫu (form) .............................. Start

Thiết kế báo cáo (report)...............................

Bạn đang đọc truyện trên: Truyen2U.Pro

#ridotoji