67
Microsoft Access MỤC LỤC MỤC LỤC ................................................................................................................ 1 THIẾT KẾ CƠ SỞ DỮ LIỆU ................................................................................ 3 I. Tại sao lại học Access?.......................................................................................3 II. Một số khái niệm cơ bản...................................................................................3 III. Các bước thiết kế một CSDL...........................................................................4 1. Xác định mục tiêu quản lý......................................................................................4 2. Xác định các bảng trong một CSDL.......................................................................4 3. Xác định các cột (thuộc tính, trường) trong một bảng và trường khóa....................5 3.1. Một số phương pháp xác định cột (thuộc tính, trường)................................................5 3.2. Phụ thuộc hàm..............................................................................................................6 3.2. Trường khóa chính .......................................................................................................6 4. Xác định các mối quan hệ.......................................................................................6 4.1. Quan hệ “1-nhiều” (1-n)...............................................................................................6 4.2. Quan hệ “nhiều - nhiều” (n-n) .....................................................................................7 4.3. Quan hệ 1-1...................................................................................................................7 5. Chuẩn hóa lại thiết kế.............................................................................................7 MICROSOFT ACCESS .......................................................................................... 9 I. Làm quen Access................................................................................................9 1. Khởi động MS Access............................................................................................9 2. Thoát khỏi Access...................................................................................................9 II. Cơ sở dữ liệu Access ........................................................................................9 1. Tạo mới cơ sở dữ liệu (Databases)..........................................................................9 2. Mở một CSDL đã có sẵn.........................................................................................9 3. Làm việc với Database trên Access........................................................................9 III. Làm việc với các đối tượng trong CSDL Access...........................................10 1. Table - Bảng biểu..................................................................................................10 1.1. Vai trò của bảng biểu..................................................................................................10 1.2. Thiết kế cấu trúc bảng – Design View Table..............................................................10 1.3. Quy định khoá chính cho Table..................................................................................15 1.4. Lưu bảng và đặt tên bảng đã định nghĩa.....................................................................16 1.5. Thay đổi cấu trúc bảng................................................................................................16 1.6. Thao tác nhập dữ liệu hoặc thay đổi hiển thị của bảng...............................................16 2. Xây dựng mối liên hệ giữa các bảng biểu (RelationShips)...................................18 2.1. Tại sao phải xây dựng mối liên hệ?............................................................................18 2.2. Mối liên hệ làm việc như thế nào?..............................................................................18 2.3. Xác định mối liên hệ...................................................................................................18 2.4. Toàn vẹn tham chiếu là gì? ........................................................................................19 3. Xây dựng câu truy vấn – Query............................................................................20 3.1. Truy vấn là gì..............................................................................................................20 3.2. Tạo truy vấn (query)...................................................................................................22 3.3. Tạo truy vấn hành động (Action query)......................................................................36 3.4. Tạo truy vấn tham số (Parameter query)....................................................................37 3.5. Tạo CrossTab Query (Cross – Tabulation).................................................................39 1

Giao Trinh Access 2003

Embed Size (px)

Citation preview

Page 1: Giao Trinh Access 2003

Microsoft Access

MỤC LỤCMỤC LỤC ................................................................................................................ 1 THIẾT KẾ CƠ SỞ DỮ LIỆU ................................................................................ 3

I. Tại sao lại học Access?.......................................................................................3II. Một số khái niệm cơ bản...................................................................................3III. Các bước thiết kế một CSDL...........................................................................4

1. Xác định mục tiêu quản lý......................................................................................42. Xác định các bảng trong một CSDL.......................................................................43. Xác định các cột (thuộc tính, trường) trong một bảng và trường khóa....................5

3.1. Một số phương pháp xác định cột (thuộc tính, trường)................................................53.2. Phụ thuộc hàm..............................................................................................................63.2. Trường khóa chính .......................................................................................................6

4. Xác định các mối quan hệ.......................................................................................64.1. Quan hệ “1-nhiều” (1-n)...............................................................................................64.2. Quan hệ “nhiều - nhiều” (n-n) .....................................................................................74.3. Quan hệ 1-1...................................................................................................................7

5. Chuẩn hóa lại thiết kế.............................................................................................7MICROSOFT ACCESS .......................................................................................... 9

I. Làm quen Access................................................................................................91. Khởi động MS Access............................................................................................92. Thoát khỏi Access...................................................................................................9

II. Cơ sở dữ liệu Access ........................................................................................91. Tạo mới cơ sở dữ liệu (Databases)..........................................................................92. Mở một CSDL đã có sẵn.........................................................................................93. Làm việc với Database trên Access........................................................................9

III. Làm việc với các đối tượng trong CSDL Access...........................................101. Table - Bảng biểu..................................................................................................10

1.1. Vai trò của bảng biểu..................................................................................................101.2. Thiết kế cấu trúc bảng – Design View Table..............................................................101.3. Quy định khoá chính cho Table..................................................................................151.4. Lưu bảng và đặt tên bảng đã định nghĩa.....................................................................161.5. Thay đổi cấu trúc bảng................................................................................................161.6. Thao tác nhập dữ liệu hoặc thay đổi hiển thị của bảng...............................................16

2. Xây dựng mối liên hệ giữa các bảng biểu (RelationShips)...................................182.1. Tại sao phải xây dựng mối liên hệ?............................................................................182.2. Mối liên hệ làm việc như thế nào?..............................................................................182.3. Xác định mối liên hệ...................................................................................................182.4. Toàn vẹn tham chiếu là gì? ........................................................................................19

3. Xây dựng câu truy vấn – Query............................................................................203.1. Truy vấn là gì..............................................................................................................203.2. Tạo truy vấn (query)...................................................................................................223.3. Tạo truy vấn hành động (Action query)......................................................................363.4. Tạo truy vấn tham số (Parameter query)....................................................................373.5. Tạo CrossTab Query (Cross – Tabulation).................................................................39

1

Page 2: Giao Trinh Access 2003

Microsoft Access

4. Xây dựng báo cáo – Report...................................................................................424.1. Giới thiệu chung.........................................................................................................434.2. Tạo báo cáo bằng wizard............................................................................................434.2. Cấu trúc của báo cáo...................................................................................................46

5. Thiết kế và tạo form..............................................................................................515.1 Giới thiệu chung..........................................................................................................515.2 Thiết kế form...............................................................................................................515.3 Công cụ thiết kế form..................................................................................................525.4 Các kiểu form và cách tạo............................................................................................53

2

Page 3: Giao Trinh Access 2003

Microsoft Access

THIẾT KẾ CƠ SỞ DỮ LIỆUI. Tại sao lại học Access?Bạn có thể giải quyết một bài toán đơn giản như quản lý bán hàng bằng cách tạo ra một bảng tính. (cho VD về một bài quản lý bán hàng trong Excel – bài giảng)

Dư thừa dữ liệu: dữ liệu lặp lại. Mâu thuẫn dữ liệu:

Khi thay đổi địa chỉ của một khách hàng phải thay đổi lại địa chỉ ở tất cả các dòng có liên quan đến khách hàng đó.

Khi xóa đơn đặt hàng của một khách hàng thì có thể sẽ xóa cả thông tin về khách hàng.

Giải pháp: Tách ra thành các bảng nhỏ: một bảng chứa các thông tin về khách hàng, một bảng chứa các thông tin về việc bán hàng (hóa đơn). Nhưng khi sử dụng dữ liệu không phải bạn chỉ muốn những thông tin riêng rẽ mà thường là sự kết hợp của nhiều bảng. Ví dụ bạn không chỉ muốn có thông tin về khách hàng đơn thuần mà thường là thông tin kết hợp về khách hàng và các hóa đơn mua hàng của khách đó để đưa ra các chính sách khuyến mãi. Tuy nhiên trong Excel lại không hỗ trợ việc kết nối dữ liệu giữa các bảng. Vậy với MS Access thì sao??

MS Access là một hệ quản trị CSDL (một phần mềm quản trị dữ liệu), lưu trữ thông tin dưới dạng bảng, hỗ trợ cho việc kết nối dữ liệu giữa các bảng và cung cấp một số chức năng quản trị dữ liệu.

Với MS Access, bạn có thể tạo ra các ứng dụng mà không cần phải lập trình. Bạn có thể tạo ra một bảng để lưu trữ tất cả các thông tin cần quản lý như Excel, nhưng đó sẽ là một CSDL thiết kế tồi vì tạo ra dư thừa dữ liệu và mâu thuẫn dữ liệu. Vậy làm thế nào để thiết kế tốt một CSDL?II. Một số khái niệm cơ bảnCSDL là tập hợp các dữ liệu lưu trữ có liên quan với nhau cùng phục vụ các nhu cầu của nhiều người sử dụng, hay nhiều tổ chức. Nghĩa là tập hợp nhiều bảng khác nhau và có liên quan với nhau. Một bảng bao gồm một số cột (thuộc tính, trường), mỗi dòng là tập hợp các giá trị tương ứng của các cột. Trong một bảng không bao giờ có 2 dòng giống nhau trên giá trị của tất cả các trường. Số các cột trong mỗi bảng là ít nhất có thể được và tương đối ổn định, tránh việc thêm hoặc bớt cột khi bảng đã chứa nhiều dữ liệu. Số các dòng trong bảng là không hạn chế, đó chính là các dữ liệu cần lưu trữ.

3

Page 4: Giao Trinh Access 2003

Microsoft Access

Bảng KhachHangMAKH HOTEN DIACHIKH01 Vũ Ngọc Thái 2 Giải phóng, Hai Bà Trưng, HNKH02 Đỗ Thu Dung 10 Tràng Tiền, Hoàn Kiếm, HNKH03 Lê Kim Thu 24 Cửa Nam, Hoàn Kiếm, HN

Bảng KhachHang: • Có 3 trường (cột, thuộc tính): MAKH, HOTEN, DIACHI. • Có 3 bản ghi (dòng).• Trường MAKH có các giá trị: KH01, KH02, KH03, …

III. Các bước thiết kế một CSDL Xác định mục tiêu quản lý, khai thác CSDL của bạn. Xác định các bảng dữ liệu cần thiết Xác định các thuộc tính và khóa trong từng bảng. Xác định các mối quan hệ giữa các bảng. Chuẩn hóa lại thiết kế.

Nếu các bảng của CSDL đã chứa đầy dữ liệu, việc chỉnh sửa thiết kế trở nên khó khăn hơn. Do đó cần đảm bảo rằng bạn cần hoàn chỉnh một thiết kế tốt trước khi triển khai các bước tiếp theo. 1. Xác định mục tiêu quản lý

Điều này quyết định bạn sẽ đưa vào CSDL thông tin gì. Từ mục tiêu đó bạn mới hình thành các đối tượng (các bảng) cần thiết để chứa dữ liệu và định nghĩa các thuộc tính (các cột) sao cho mô tả đầy đủ đối tượng. Thảo luận cùng với người dùng CSDL tương lai về các vấn đề họ muốn CSDL trả lời. Phác thảo các báo cáo sẽ trình bày, thu thập các biểu mẫu thường dùng để ghi nhận số liệu. Bạn sẽ cần tất cả những thông tin này cho các bước tiếp theo của quá trình thiết kế.

2. Xác định các bảng trong một CSDLCác báo cáo cho bạn biết hệ thống cần những thông tin gì, nhưng lại không cho bạn biết phải phân loại thông tin đó thành những bảng như thế nào. Thông thường mỗi bảng thường chứa thông tin về một đối tượng nào đó tham gia vào quá trình quản lý như: khách hàng, nhà cung cấp, hàng hóa, hóa đơn, chứng từ, … Mỗi dòng chứa thông tin về một đối tượng cụ thể. Ví dụ: bảng khách hàng chứa thông tin về tất cả các khách hàng, mỗi khách hàng cụ thể, chẳng hạn như bà Nguyễn Kim Thu được thể hiện bằng một dòng duy nhất trong bảng; mỗi khi thêm một khách hàng thì thêm một dòng vào bảng Khách hàng.

4

Bản ghi (dòng)

Một giá trị của trường DIACHI

Page 5: Giao Trinh Access 2003

Microsoft Access

3. Xác định các cột (thuộc tính, trường) trong một bảng và trường khóa.Xác định các cột trong một bảng tức là xác định những thông tin bạn muốn lưu trữ về đối tượng. Đó chính là những thuộc tính chung (tên cột) để mô tả đối tượng. VD Bảng Khách hàng có các thuộc tính là Tên, Tuổi… Thông tin về từng khách hàng cụ thể chính là các giá trị của các thuộc tính. * Cần phân biệt giữa thuộc tính và giá trị: thuộc tính thì không thay đổi nhưng giá trị thì có thể thay đổi. Ví dụ hóa đơn bán hàng, …

3.1. Một số phương pháp xác định cột (thuộc tính, trường)• Mỗi trường có quan hệ trực tiếp đến đối tượng trong bảngTrường nào mô tả thuộc tính của một đối tượng khác phải thuộc về bảng khác. Các thuộc tính mô tả không xuất hiện ở nhiều hơn một bảng. Chẳng hạn như điện thoại, địa chỉ, … là các thuộc tính mô tả của bảng khách hàng thì không thể là thuộc tính của bảng Hóa đơn hay bất kỳ bảng nào khác.• Giá trị của mỗi thuộc tính phải là giá trị sơ đẳng

Giá trị của thuộc tính là sơ đẳng tức là không thể tách thành các thành phần nhỏ hơn mà vẫn có nghĩa.

Ví dụ: thuộc tính Địa chỉ khách hàng là hợp thành của các thuộc tính Số nhà, Đường phố, Phường (xã), Quận (huyện), Tỉnh (thành) => trường Địa chỉ chưa phải là sơ đẳng. Tuy nhiên điều này có thể bỏ qua tùy theo yêu cầu quản lý đặt ra. Chẳng hạn nếu bạn không có nhu cầu tìm kiếm hay liệt kê các khách hàng theo quận hoặc thành phố thì bạn có thể coi Địa chỉ là một xâu ký tự duy nhất. • Giá trị của mỗi thuộc tính phải là giá trị đơn

Giá trị của thuộc tính là duy nhất tức là chỉ có duy nhất một giá trị (không phải là một dãy hay một tập các giá trị).

Ví dụ: thuộc tính NGOAINGU trong bảng Nhanvien là không duy nhất vì có thể có nhân viên không biết ngoại ngữ nào, hoặc biết 1 hoặc biết 3 ngoại ngữ… Do đó giá trị của trường các ngoại ngữ là một dãy các ngoại ngữ mà nhân viên đó biết. • Không có những trường có thể rút ra được hoặc tính toán được từ những

trường đã có Ví dụ: bạn có trường Đơn giá và Số lượng thì bạn không cần trường Thành tiền. • Các trường phải phủ được tất cả thông tin cần thiết.Trong giai đoạn thiết kế bạn cần đảm bảo tính đầy đủ của thông tin. Hãy tự đặt ra các câu hỏi và yêu cầu thực tế xem CSDL có đáp ứng được không. Tránh việc thêm hoặc bớt cột khi bảng đã chứa nhiều dữ liệu.

5

Page 6: Giao Trinh Access 2003

Microsoft Access

3.2. Phụ thuộc hàmBảng KhachHang

HO TEN NAMSINHNguyễn Minh Thu 1980Nguyễn Minh Thu ?

Giả thiết không có 2 người trùng tên nhau. Ta nói thuộc tính HO, TEN xác định thuộc tính NAMSINH hay NAMSINH phụ thuộc hàm vào HO, TEN khi và chỉ khi nếu giá trị của 2 bản ghi (dòng) bất kỳ bằng nhau trên các trường HO, TEN thì phải bằng nhau trên trường NAMSINH. Ký hiệu: HO, TEN NAMSINH.Như vậy, nếu phụ thuộc hàm trên đúng trên bảng KhachHang thì ta có thể khẳng định giá trị của trường NAMSINH của dòng thứ 2 là 1980. Nếu trên thực tế tồn tại 2 dòng mà giá trị bằng nhau trên trường HO, TEN nhưng lại khác nhau trên trường NAMSINH thì ta có thể khẳng định ngay NAMSINH không phụ thuộc hàm vào HO, TEN.

3.2. Trường khóa chính Trường khóa chính là tập nhỏ nhất các trường xác định duy nhất một dòng trong bảng. Như vậy các giá trị trong trường khóa chính phải khác nhau đối với từng bản ghi (dòng) hay không được trùng lặp. Nói cách khác là các thuộc tính trong bảng đều phụ thuộc hàm vào khóa. • Khi chọn trường khóa chính bạn cần lưu ý đến các điểm sau: MS Access không chấp nhận giá trị trống nhập cho trường khóa. MS Access không chấp nhận giá trị trùng nhau cho trường khóa. Giá trị trong trường khóa nên ngắn gọn. Kích thước trường khóa nên dùng kích thước nhỏ nhất sao cho vừa đủ để

xác định mọi giá trị cần đưa vào trường. 4. Xác định các mối quan hệ

Có 3 loại quan hệ giữa các bảng.4.1. Quan hệ “1-nhiều” (1-n)

Ta nói bảng A có quan hệ 1-n với bảng B có nghĩa là một dòng trong bảng A sẽ có thể có nhiều dòng tương ứng trong bảng B, nhưng một dòng trong bảng B chỉ có thể có một dòng tương ứng duy nhất trong bảng A.

6

KhachHang HoaDonn1

Page 7: Giao Trinh Access 2003

Microsoft Access

Ví dụ: một khách hàng có thể có nhiều hóa đơn nhưng mỗi hóa đơn chỉ thuộc về một khách hàng. => Thiết lập quan hệ: Thêm khóa chính của bảng đầu một (A) vào bảng đầu nhiều (B), trong bảng (B) đó là trường liên kết.

4.2. Quan hệ “nhiều - nhiều” (n-n) Ta nói bảng A có quan hệ n-n với bảng B có nghĩa là một dòng trong bảng A sẽ có thể có nhiều dòng tương ứng trong bảng B, và một dòng trong bảng B sẽ có thể nhiều dòng tương ứng trong bảng A.

Trong MS Access không chấp nhận mối quan hệ n-n. Khi gặp một mối quan hệ n-n bạn phải tách thành 2 mối quan hệ 1-n bằng cách: tạo ra một bảng mới nhận khóa chính của hai bảng làm khóa chính. Ngoài ra bảng mới có thể có thêm một số trường phụ thuộc hàm vào cả hai trường khóa mới. Ví dụ: ta có 2 bảng dữ liệu Nhân viên và bảng Công trình với các thuộc tính như sau:NhanVien (MANV, TENNV, CHUCVU)CongTrinh (MACT, TENCT)

Một nhân viên có thể tham gia nhiều công trình. Một công trình có thể có nhiều nhân viên tham dự. Thiết lập quan hệ: tạo bảng mới: PhanCong (MANV, MACT).

4.3. Quan hệ 1-1Ta nói bảng A có quan hệ 1-1 với bảng B có nghĩa là một dòng trong bảng A chỉ có một dòng tương ứng trong bảng B, và một dòng trong bảng B chỉ có một dòng tương ứng trong bảng A.

Thông thường các bảng quan hệ 1-1 được ghép lại thành một bảng. Nếu cần phải tạo quan hệ 1-1, trước hết bạn phải xem có thể đưa tất cả dữ liệu vào một bảng hay không. Nếu không bạn có thể thiết lập quan hệ 1-1 theo những gợi ý sau: Nếu hai bảng mô tả cùng một chủ đề, lập quan hệ 1-1 bằng cách dùng cùng

trường khóa chính trong hai bảng. Nếu hai bảng mô tả hai chủ đề khác nhau với các khóa khác nhau, chọn

một trong hai bảng và đưa vào đó trường khóa chính của bảng kia tham dự với tư cách như là một khóa liên kết.

5. Chuẩn hóa lại thiết kế

7

NhanVien CongTrinhnn

CongTrinh1

nNhanVien PhanCong

n1

Page 8: Giao Trinh Access 2003

Microsoft Access

Phân tích lại thiết kế từ bước đầu, kiểm tra xem CSDL có đáp ứng được các yêu cầu quản lý đã đề ra hay không? còn gây ra các mâu thuẫn dữ liệu khi thao tác CSDL (thêm một dòng mới, sửa, xóa một dòng) hay không? Sau đây là một vài gợi ý: Bạn có bỏ sót trường nào ngoài CSDL không. Có thông tin nào bạn cần mà

chưa đưa vào không. Bạn đã chọn khóa chính cho mỗi bảng chưa, các trường khác có phụ thuộc

hoàn toàn vào khóa không. Lưu ý rằng trong trường khóa chính không chấp nhận trùng nhau và mỗi khi thêm một dòng mới giá trị trong trường khóa không được trống.

Kiểm tra hiện tượng trùng lắp và dư thừa thông tin. Bạn có phải nhập dữ liệu trùng nhau cho nhiều bảng không. Nếu có bạn cần chia bảng đó thành hai bảng con với quan hệ 1-n.

Bạn có bảng nào có nhiều cột nhưng ít dòng và vài cột phải bỏ trống trong một số dòng hay không. Nếu có bạn hãy thiết kế lại bảng đó sao cho ít cột hơn và nhiều dòng hơn.

8

Page 9: Giao Trinh Access 2003

Microsoft Access

MICROSOFT ACCESSI. Làm quen Access1. Khởi động MS AccessStart/ Program/ MS Access2. Thoát khỏi AccessFile/ Exit hoặc đóng hộp thoại AccessSau khi khởi động Access, xuất hiện hộp thoại thoại gồm:

Create a New Database Using: Tạo một CSDL ứng dụng mớiBlank Database: Tạo CSDL trống.Database Wizard: Tạo CSDL với sự trợ giúp Wizarrd.

II. Cơ sở dữ liệu Access 1. Tạo mới cơ sở dữ liệu (Databases)File/ New, xuất hiện hộp thoại New- Nếu muốn tạo CSDL trống: Chọn tab General, chọn biểu tượng Database.- Nếu tạo CSDL có sự trợ giúp (dựa trên 1 CSDL đã xây dựng sẵn): Chọn tab Databases, chọn một biểu tượng bất kỳ.Chọn OK, xuất hiện hộp thoại File new database, lựa chọn thư mục lưu trữ và đặt tên cho CSDL trong phần File name, sau đó chọn Create.2. Mở một CSDL đã có sẵnFile/ Open, xuất hiện hộp thoại Open, tìm CSDL muốn mở, chọn Open.3. Làm việc với Database trên AccessSau khi tạo mới hoặc mở một CSDL đã có, bạn sẽ làm việc với hộp thoại CSDL.Có thể làm việc với các đối tượng (Objects) trong CSDL Access, khi muốn làm việc với đối tượng nào thì chọn đối tượng đó ở phần Objects:

Tables: Bảng chứa các số liệu cơ sở, các nghiệp vụ phát sinh và các biến động tiếp theo của những thông tin đang quản lý.Queries: Tạo các câu truy vấn nhằm trích rút dữ liệu từ các bảng hoặc từ các câu truy vấn (khai thác CSDL). theo yêu cầu.Forms: Biểu mẫu nhập dữ liệu, hiển thị dữ liệu.Reports: Báo cáo dữ liệu.Pages: Biểu mẫu nhập, hiển thị dữ liệu dưới dạng trang Web.Macros: Chuỗi các câu lệnh yêu cầu hệ thống thực hiện…

Lưu ý: Dữ liệu được lưu trong các bảng (Tables), do đó phải tạo bảng biểu trước thì mới tạo được Forms, Queries, Reports…

9

Page 10: Giao Trinh Access 2003

Microsoft Access

III. Làm việc với các đối tượng trong CSDL Access1. Table - Bảng biểuAccess cung cấp 2 cách để tạo bảng biểu, có thể tạo một bảng trống và nhập dữ liệu của bạn hoặc tạo bảng từ dữ liệu đã tồn tại hoặc từ một nguồn khác chẳng hạn lấy dữ liệu từ MS Excel.1.1. Vai trò của bảng biểuTrước khi đi vào việc tạo bảng dữ liệu, ta tìm hiểu qua về bảng và các trường trong bảng. Cũng giống trong Excel, bảng dùng để lưu trữ thông tin, ghi nhận các nội dung mà người dùng muốn quản lý. Đối với Access, bảng là đối tượng quan trọng nhất, bao gồm tập hợp dữ liệu theo một chủ đề nào đó. Cấu trúc của bảng bao gồm nhiều cột/ trường dữ liệu, dữ liệu tổ chức theo từng dòng gọi là bản ghi. 1.2. Thiết kế cấu trúc bảng – Design View TableKhi định nghĩa các trường dữ liệu cần quản lý trong bảng, cần xác định trường đó có kiểu dữ liệu là gì, và giá trị cho trường đó có giới hạn hay yêu cầu nào không? Ví dụ: bảng Khách hàng, có trường Tên khách hàng, kiểu dữ liệu cần là Kiểu ký tự (Text), và tên không quá 50 ký tự…Để có thể nhập dữ liệu lưu trữ vào bảng biểu, trước hết cần định nghĩa, thiết kế cấu trúc cho bảng đó. Nếu như bạn đã trải qua bài học đầu tiên về thiết kế CSDL, thì

10

Mở một đối tượng đã có

Tạo mới một đối tượng

Thiết kế một đối tượng

Các đối tượng

Bảng biểu

Câu truy vấn

Form nhập DL

Báo cáo Form nhập dưới dạng trang Web

Những cách tạo mới một đối tượng - Qua khung CS thiết kế- Dùng Wizard- Bằng cách nhập dữ liệu

Page 11: Giao Trinh Access 2003

Microsoft Access

đến phần này bạn chỉ cần lấy các bảng đã thiết kế ở phần trước; xác định kiểu dữ liệu của chúng rồi chuyển thành bảng trong Access.Có thể tạo mới một bảng bằng Wizard hoặc tự thiết kế theo ý riêng trên một mẫu bảng (Datasheet View) hoặc trên một mẫu thiết kế (Design view). Ở đây chỉ quan tâm đến cách thiết kế bảng Design view.Chọn nút biểu tượng Tables dưới nút Objects, sau đó chọn nút Design trong hộp thoại Database hoặc chọn Create table in Design view, hộp thoại tạo table xuất hiện.

a. Field name (Định nghĩa tên trường) Tên trường dài không quá 64 ký tự và bắt đầu bằng ký tự chữ (A-Z, a-z) hoặc ký tự số (0-9), có thể có khoảng trống nhưng không được chứa dấu câu. Tuy nhiên, tên trường nên đặt ngắn gọn, có ý nghĩa và không nên dùng các khoảng trắng, hoặc Tiếng Việt có dấu trong tên trường để thuận tiện cho công việc sau này. Nếu muốn tên dễ hiểu có thể dùng dấu gạch dưới ( _ ) để phân biệt các từ, ví dụ Ten_KH.b. Data type (kiểu dữ liệu của trường)Chọn kiểu dữ liệu thích hợp bằng cách nhấn chuột vào phím mũi tên. Có thể chọn một trong các kiểu dữ liệu sau:

Text: kiểu ký tự, với độ dài 255 ký tự.Memo: kiểu văn bản, với độ dài 65535 ký tự.Number: kiểu số.Date/Time: kiểu ngày hoặc/ và giờ.Currency: kiểu tiền tệ, theo đồng DollarAutoNumber: Số tự động tăng và do Access tự động gán.Yes/No: kiểu logic, hằng giá trị đúng/ sai.Lookup Wizard: lựa chọn giá trị nhập vào trường dữ liệu từ Danh sách giá trị do người dùng định nghĩa hoặc từ một Table/Query khác.OLE object: kiểu đối tượng được nhúng vào ( ảnh, file Word,…)…

11

Thêm hoặc đổi tên trường

Chỉ định kiểu DL cho trường

Mô tả chi tiết cho trường

Nhập các trường ở đây

Định nghĩa thuộc tính của trường

Page 12: Giao Trinh Access 2003

Microsoft Access

c. Description (mô tả)Để ghi những diễn tả, ghi chú trợ giúp cho người dùng, cột này không bắt buộc phải nhập, nó chỉ mang tính chất ghi chú.d. Field properties (Các thuộc tính của trường)Với mỗi trường, ngoài việc nhập tên trường và kiểu dữ liệu, thường phải chỉ định thêm một số thuộc tính trong phần Field properties. Các thuộc tính này gồm thuộc tính chung bên tab General và các thuộc tính quy định khi nhập dữ liệu bên tab Lookup. Để di chuyển giữa phần hộp thoại định nghĩa cấu trúc bảng với phần định nghĩa các thuộc tính của mỗi trường dùng phím F6 để chuyển đổi. General: tuỳ từng kiểu dữ liệu mà các thuộc tính chung này có khác nhau.

Field size: quy định độ rộng của trường, thường có ở kiểu Text, Number, AutoNumber.Format: định dạng chế độ hiển thị giá trị trong trường, có thể lựa chọn một trong số các kiểu định dạng có sẵn.Input Mask: khuôn mẫu (mặt nạ) cho tất cả dữ liệu được nhập vào trường, lựa chọn những mặt nạ định nghĩa sẵn bằng cách chọn vào nút (…).Caption: Tên hiển thị của trường khi ở trên form hoặc khi mở bảng dưới dạng Datasheet để nhập dữ liệu. Nếu bạn không định nghĩa thuộc tính này, khi mở bảng để nhập dữ liệu… thì tên trường (Field name) đã định nghĩa ở trên sẽ hiển thị trên đầu trường đó.AllowZeroLength: cho phép quy định trường có kiểu Text hoặc Memo có thể là chuỗi với độ dài 0 (“”), lựa chọn Yes/No để quy định thuộc tính này cho trường dữ liệu đó.Validation Rule: Biểu thức giới hạn giá trị nhập vào một trường.Validation Text: Dòng thông báo lỗi xuất hiện khi giá trị nhập vào trường không theo Validation Rule.

Ví dụ: có trường tên Số lượng, kiểu DL Number; Validation Rule: >0 và Validation Text: “Số nhập vào phải lớn hơn 0. Nhập lại !!!”. Nếu nhập giá trị -3 thì xuất hiện hộp thoại thông báo lỗi với nội dung trên.

Required: trường này có bắt buộc phải nhập dữ liệu vào không? lựa chọn khả năng Yes/ No.Index: có phải trường chỉ số không? Chú ý: chỉ số không áp dụng cho trường có kiểu dữ liệu Memo, OLE, Hyperlink. Lựa chọn khả năng:

No: Không phải là trường chỉ số.Yes, Duplicates OK: là trường chỉ số và được phép trùng lặp.Yes, No Duplicates: là trường chỉ số nhưng không được phép trùng lặp.

Vậy khi nào dùng lựa chọn nào? Thường các trường là khoá sẽ được chọn là index, và giá trị trên trường này không được trùng lặp để bảo đảm tính duy nhất

12

Page 13: Giao Trinh Access 2003

Microsoft Access

cho khoá. Với trường khoá bên bảng nhiều (khoá gồm nhiều thuộc tính) thì tất cả các khoá đó đều có giá trị index là Yes, Duplicates OK. Còn các khoá bảng bên một (chỉ có một thuộc tính là khoá) thì giá trị index là Yes, No Duplicates.

Lookup: Các thuộc tính cho phép xác định cách nhập liệu vào trường từ một bảng, một truy vấn hay từ một chuỗi tự do. Khi nhập giá trị vào một trường, để quy định giá trị đó có thể tìm trong danh sách giá trị dữ liệu từ một bảng hay từ một truy vấn hoặc từ một danh sách các giá trị mà bạn đặt ra, ta dùng Lookup Wizard. Chọn Lookup Wizard trong cột DataType tại trường dữ liệu mà bạn đang định nghĩa:Xuất hiện hộp thoại Lookup WizardBước 1: Chọn quy định lấy dữ liệu của cột Lookup

(1) I want the lookup column to lookup the value in the table or query: Nguồn dữ liệu cho cột tìm kiếm là bảng hay truy vấn.(2) I will type in the values that I want: Nguồn dữ liệu lấy từ danh sách do bạn quy định.Chỉ định kiểu lấy dữ liệu, sau đó chọn Next để chuyển bước tiếp theo, nếu quay lại bước trước chọn Back.

Bước 2: Quy định nguồn dữ liệu của cột LookupNếu chọn (1): Chỉ định tên bảng, truy vấn mà muốn lấy dữ liệu trong hộp list box. Chọn Next, sau đó chỉ định các cột giá trị xuất hiện trong cột Lookup bằng cách nhấp chuột vào tên trường cần hiển thị, sau đó chọn nút >. Nếu muốn hiển thị toàn bộ các trường trong Table/Query đó chọn nút >>. Loại bỏ một trường dữ liệu khỏi danh sách các trường sẽ hiển thị thì chọn nút <, loại bỏ tất các trường đã chọn thì chọn <<.Nếu chọn (2): Nhập số cột xuất hiện trong cột Lookup vào ô Number of Columns, sau đó nhập các giá trị mà người dùng cần hiển thị vào các cột trong bảng bên dưới đó.

Chọn Next, nếu muốn thay đổi hoặc đặt lại tên cho cột Lookup, nếu không thay đổi chọn Finish.

Chọn Tab Lookup bạn sẽ thấy một số các thuộc tính như sau:Có thể tạo một danh sách giá trị mà các giá trị đó được lấy từ một bảng khác hoặc một truy vấn khác thông qua cách 1 ở trên, hoặc chọn Tab Lookup ở Field Properties để tạo.

Display control: Kiểu đối tượng hiển thị khi xuất hiện trên Form (List box, Combo box).

Row Source Type: Kiểu dữ liệu nguồn.Row Source: Dữ liệu nguồn.

13

Page 14: Giao Trinh Access 2003

Microsoft Access

Bound Column: Quy định giá trị của cột chỉ lấy từ dãy giá trị đã định nghĩa cho đối tượng.

Column Count: Số cột giá trị hiển thị trong cột Lookup…

Tab Lookup quy định kiểu đối tượng sẽ nhận giá trị của trường đó trong biểu mẫu (form), hoặc trong báo cáo (report)…, người ta thường quy định các thuộc tính Lookup này cho các trường là khoá liên kết (khoá ngoại) của bảng.

Bạn cứ hình dung một chút qua 2 bảng dữ liệu sauHàng hoá Chi tiết hoá đơnMahang Tenhang DVT Gia SoHD Mahang SoluongHH001 Bút chì kim TL chiếc 4000 HD001 HH001 2HH002 Vở 48t Hồng Hà quyển 3500 HD001 HH002 10HH003 Tẩy chì TL chiếc 1000 HD002 HH002 5HH004 Vở 96t Hải Tiến quyển 4500 HD002 HH003 1

Theo quy định thì nhập giá trị cho bảng Hànghoá trước, và sau đó nhập dữ liệu vào bảng CT_Hoáđơn. Trong CT_Hoáđơn, các giá trị nhập vào trường Mahang chính là giá trị trong trường Mahang của bảng Hànghoá. Tuy nhiên, người dùng có thể không biết mặt hàng mình nhập vào có mã hàng lưu trữ trong CSDL là gì? Hoặc nếu có biết về mã hàng của mặt hàng đó thì vẫn có thể nhập sai hay nhập nhầm thành một mã hàng của mặt hàng khác. Vậy có cách nào để người dùng có thể chọn lựa được chính xác mã hàng mà mình cần nhập? Ở đây người ta sẽ tạo một liên kết mà có thể nhìn thấy được giá trị mã hàng, tên hàng của các mặt hàng trong bảng Hànghoá tại điểm liên kết chính là trường khoá ngoại Mahang trong bảng CT_Hoáđơn. Và nhờ liên kết này bạn có thể chọn được chính xác mã hàng mà bạn cần nhập vào CSDL. Do vậy, liên kết đó chính là Tìm kiếm, lấy (Lookup) giá trị từ bảng Hànghoá và giá trị lấy ra là trường Mahang và Tenhang.Cách làm như sau

Chọn trường Mahang trong bảng CT_Hoáđơn (kích chuột vào trường đó), Chọn tab Lookup trong phần Field Properties

14

Page 15: Giao Trinh Access 2003

Microsoft Access

Tại dòng Display Control, chọn ComboBox (kiểu hiển thị danh sách giá trị) Tại dòng Row Source Type, chọn Table/Query Tại dòng Row Source, chọn nút có dấu …, để xây dựng dữ liệu cần hiển thị.

Khi xuất hiện hộp thoại Show Table để lựa chọn bảng cần tham chiếu giá trị, bạn chọn bảng Hànghoá, rồi chọn nút Add (hoặc kích đúp chuột vào tên bảng cần lấy), sau đó chọn Close.

Trong hộp thoại SQL Statement: Query Builder (như hình bên), Kích đúp chuột vào tên các trường mà bạn muốn hiển thị, khi đó bạn chọn các

trường Mã hàng và Tên hàng, sau đó đóng hộp thoại lại. Tại dòng Column Count, chỉ định số cột hiển thị trong Combo Box, bạn gõ 2

để hiển thị cột Mahang và Tenhang. Tại dòng Column Heads, chọn Yes nếu muốn hiển thị tên trường trên đầu

danh sách, chọn No nếu không muốn hiển thị tên trường. Tại dòng Column Width, chỉ định độ rộng hiển thị của các cột trong danh sách

(kích thước dùng đơn vị đo lường là inche). Kết thúc việc tạo Lookup cho trường Mahang.

Khi nhập giá trị vào bảng CT_Hoadon, thì giá trị trường Mã hàng bạn có thể nhập vào bằng tay hoặc chọn giá trị từ Combo Box giống như hình dưới đây.

Lưu ý: Lookup chỉ tạo trên trường kiểu Text hoặc Auto Number. Và Lookup thường tạo trên trường khóa liên kết (khóa ngoại) hoặc trường có hữu hạn giá trị cho trước.1.3. Quy định khoá chính cho TableKhoá chính của một bảng là một trường hoặc nhiều trường kết hợp lại để xác định được một bản ghi duy nhất trong bảng. Nếu một hoặc nhiều trường được quy định là khoá chính, Access tạo chỉ mục cho các trường đó. Khi mở bảng, các bản ghi được hiển thị theo thứ tự sắp xếp của khoá chính. Khi nhập dữ liệu vào bảng, Access kiểm tra giá trị trên trường khoá chính và không cho phép trùng lặp giá trị trên các trường này.a. Tạo khóa chính là một trường

15

Chọn Tên mặt hàng cần nhập từ combo này, nhưng giá trị lưu trữ trong trường này vẫn là giá trị Mahang.Kết quả sau khi đã dùng LOOKUP

Page 16: Giao Trinh Access 2003

Microsoft Access

Chọn dòng chứa tên trường muốn làm khoá chínhChọn biểu tượng hình khoá trên thanh công cụ Table Design hoặc bấm phím chuột phải vào dòng chứa tên trường, sau đó chọn Primary Key trên menu nhanh xuất hiện.

b. Tạo khoá chính từ nhiều trườngChọn các trường làm khoá: Nếu các trường làm khoá liên tiếp nhau, bấm giữ phím Shift sau đó chọn

trường đầu tiên và chọn trường cuối cùng cần làm khoá. Nếu các trường làm khoá rời rạc, bấm giữ phím Ctrl, sau đó bấm phím trái

chuột để chọn các trường làm khoá. Chọn biểu tượng khoá chính giống như cách chọn khoá ở trên.

c. Bỏ khoá chínhChọn dòng chứa tên trường khoá chính mà bạn định loại bỏ, sau đó chọn Delete Rows trong menu nhanh nếu như muốn xoá trường đó, hoặc chọn tắt nút Primary Key trong menu nhanh hoặc trên thanh công cụ.

Nếu định nghĩa cấu trúc bảng mà chưa chỉ định khoá chính, khi lưu bảng hoặc đóng hộp thoại kết thúc việc định nghĩa cấu trúc bảng, thì Access sẽ xuất hiện hộp thoại thông báo “Bạn chưa định nghĩa khoá chính cho bảng” và Access hỏi có tạo khoá chính luôn không?

Yes: Tự động thêm vào một cột tên ID và chứa giá trị số (AutoNumber) mà Access tự tăng, người dùng không thể tác động vào trường dữ liệu này.No: Xác định bảng vừa tạo không có khoá chính.

1.4. Lưu bảng và đặt tên bảng đã định nghĩaChọn menu File/Save hoặc bấm tổ hợp phím Ctrl+S.Nếu bảng chưa đặt tên, thì xuất hiện hộp thoại yêu cầu đặt tên cho bảng đó. Sau khi đặt tên chọn OK để kết thúc.Đóng hộp thoại định nghĩa bảng lại khi đã định nghĩa xong cấu trúc của bảng đó.1.5. Thay đổi cấu trúc bảngChọn tên bảng cần thay đổi cấu trúc, sau đó chọn Design. Tuy nhiên nên hạn chế việc thay đổi cấu trúc bảng, vì nếu sửa đổi quá nhiều khiến cho công việc thực hiện sau này sẽ hết sức khó khăn. Và việc thêm bản ghi (dòng) vào một bảng hết sức đơn giản, nhưng việc thêm trường (cột) vào bảng thì phải hạn chế.1.6. Thao tác nhập dữ liệu hoặc thay đổi hiển thị của bảnga. Nhập dữ liệu vào bảng

Để nhập dữ liệu vào bảng, chọn bảng sau đó chọn Open, hoặc kích đúp chuột vào bảng cần nhập dữ liệu.

b. Thay đổi độ rộng các cột trong bảng

16

Page 17: Giao Trinh Access 2003

Microsoft Access

Nếu muốn thay đổi cách hiển thị của bảng (thay đổi độ rộng các cột/ trường), di chuyển đến đường phân cách giữa các cột, sau đó nới rộng hoặc thu hẹp độ rộng các cột đó. Hoặc chọn cột cần thay đổi, bấm phải chuột vào tiêu đề cột, chọn Column Width ở menu nhanh, nhập độ rộng cột vào hộp thoại Column Width.

c. Thay đổi độ cao dòngBấm phải chuột vào một dòng bất kỳ, chọn Rows Height. Nhập giá trị độ rộng vào hộp thoại Row Height.

d. Thêm/ bớt các bản ghiNếu muốn thêm 1 bản ghi: Di chuyển đến cuối danh sách các bản ghi, thực hiện nhập DL cho bản ghi mới. Access tự động hiểu thêm một bản ghi mới. Có thể thêm một bản ghi mới bằng cách bấm phải chuột vào bản ghi bất kỳ rồi chọn New Records.Nếu muốn xoá một bản ghi: di chuyển đến bản ghi cần xoá, bấm phải chuột vào bản ghi đó rồi chọn Delete Record.Nếu muốn xoá nhiều bản ghi: trước hết chọn những bản ghi cần xoá sau đó chọn Delete Record.

e. Sắp xếp các dòng theo giá trị một cột nào đóBấm phải chuột vào tiêu đề cột cần sắp xếp, chọn ở menu nhanh

Sort Ascending: Sắp xếp dữ liệu tăng dần.Sort Descending: Sắp xếp dữ liệu giảm dần.

Hoặc chọn menu Record/ Sort rồi chọn kiểu sắp xếp.f. Đặt lọc giá trị cho các bản ghiĐể lọc các bản ghi theo điều kiện nào đó, chọn menu Record/Filter. - Filter by Form: Xuất hiện Form lọc giống như AutoFilter trong Excel, sau đó

lựa chọn điều kiện Filter, rồi chọn nút trên thanh Toolbar Table Datasheet.- Filter by Selection: Đặt lọc theo sự chọn lựa, nếu bạn muốn lọc theo một tiêu

chí nào đó cụ thể lọc theo một giá trị nào đó trong một trường, bạn chỉ cần di

chuyển con trỏ chuột đến ô chứa giá trị đó, rồi chọn nút để lọc theo yêu cầu đó.

- Filter Excluding Selection: Lọc các bản ghi mà không thoả mãn điều kiện lựa chọn. Chức năng lọc này ngược lại với chức năng Filter by Selection.

- Advance Filter/ Sort: Lọc/ Sắp xếp theo điều kiện cao cấp. Sau khi chọn xuất hiện hộp thoại xây dựng điều kiện lọc/ sắp xếp dưới dạng lưới, bạn có thể nhập các điều kiện theo yêu cầu của mình bằng cách: Nhấp đúp chuột vào tên trường muốn đặt lọc/ sắp xếp trên đó, Gõ điều kiện lọc vào phần Criteria, Nếu muốn

17

Page 18: Giao Trinh Access 2003

Microsoft Access

sắp xếp các bản ghi lọc được chọn trong phần Sort. Cứ tiếp tục xây dựng điều

kiện theo cách trên cho đến hết, chọn nút để Access tiến hành lọc dữ liệu.

Nếu muốn bỏ lọc giá trị đó, bạn chọn lại nút để hiển thị tất cả các bản ghi. Nếu nút này bật sáng có nghĩa là dữ liệu đó đã được lọc theo một yêu cầu nào đó, ngược lại nút đó không bật sáng có nghĩa là dữ liệu chưa được lọc.2. Xây dựng mối liên hệ giữa các bảng biểu (RelationShips)2.1. Tại sao phải xây dựng mối liên hệ?Sau khi bạn đã thiết kế các bảng biểu theo từng chủ đề khác nhau, bạn phải làm như thế nào đó để chỉ ra cho Access thấy rằng các thông tin đó kết nối lại với nhau ra sao. Do đó, việc đầu tiên các bạn phải làm đó là xác định mối liên hệ giữa các bảng trong CSDL của bạn. Nếu như bạn làm được việc này, thì khi tạo các câu truy vấn, các báo cáo sau này bạn có thể hiển thị thông tin của nhiều bảng trong cùng một lúc, mà việc này trong Excel đã không thể giúp bạn được rồi !!!2.2. Mối liên hệ làm việc như thế nào?Thông qua mối liên hệ thì sự kết hợp giữa các bảng được thực hiện bằng cách tìm dữ liệu thoả mãn trên trường khóa của bảng trong mối liên hệ đó. Thông thường khoá chính của bảng bên đầu một sẽ dịch chuyển thành trường khoá liên kết bên đầu nhiều. Do đó, tên của hai trường này nên đặt giống nhau (vì thực chất nó là một), và hai trường phải có cùng kiểu dữ liệu. Ví dụ, trong bảng Hoá đơn có ghi Tên người mua, mặt khác trong CSDL có bảng Hoá đơn và bảng Khách hàng. Do đó, hai bảng này có thể có mối quan hệ với nhau thông qua trường Mã KH. Nhờ vào trường khoá liên kết này, có thể tìm thấy thông tin về khách hàng mà có mã trong Hoá đơn đó.Nhưng các bạn cũng phải luôn luôn nhớ rằng, giá trị lưu trong trường MaKH ở bảng Hoá đơn chỉ là giá trị mã KH, chứ không phải bất kỳ giá trị nào khác. Và trường liên kết giữa hai bảng là trường khoá chính ở bảng bên một (Khách hàng) và trường khoá ngoại ở bảng bên nhiều (Hoá đơn), nên giá trị của trường khoá ngoại chính là giá trị tồn tại trong trường khoá chính. 2.3. Xác định mối liên hệ

Chọn nút trên thanh Toolbar Database, xuất hiện hộp thoại Relationships. Nhấp đúp chuột lần lượt vào các bảng cần xác định mối liên hệ trong hộp thoại Show Table để thêm bảng vào hộp thoại xây dựng mối liên hệ. Chọn nút Close khi đã thêm được các bảng cần thiết và quay trở lại hộp thoại Relationship.Di chuyển chuột đến bảng cần xác định mối liên hệ, chọn tên trường khoá chính mà tham gia vào mối liên hệ.

18

Page 19: Giao Trinh Access 2003

Microsoft Access

Kéo thả trường khoá này sang trường khoá liên kết trong bảng khác mà có quan hệ, xuất hiện hộp thoại Edit Relationship (như trên):Nếu bạn kéo thả không đúng trường khoá chính và khoá liên kết (khoá ngoại), bạn có thể chọn lại các trường này bằng cách bấm chuột vào nút ở bên phải mỗi cột ghi tên trường tham gia vào mối quan hệ và chọn tên trường cần thiết.Nếu bạn muốn xác định mối quan hệ đó đảm bảo tính toàn vẹn tham chiếu thì chọn Enforce Referential Integrity:

- Cascade Update Related Fields: Nếu bất kỳ lúc nào bạn thay đổi giá trị trong khoá chính bên bảng đầu một, thì giá trị đó tự động cập nhật vào trường khoá ngoại trong bảng có liên quan (bên đầu nhiều).

- Cascade Delete Related Records: Nếu như bạn xoá một bản ghi trong bảng đầu một thì Access tự động xoá các bản ghi có cùng giá trị khoá trong bảng có liên quan. Tuy nhiên, Access cũng sẽ đưa ra cảnh báo về việc tự động xoá các bản ghi có liên quan này.

2.4. Toàn vẹn tham chiếu là gì? Toàn vẹn tham chiếu là các quy tắc mà Access sử dụng để đảm bảo mối quan hệ giữa các bảng có liên quan đến nhau là có giá trị, và bạn không thể thay đổi hay xoá dữ liệu liên quan. Các quy tắc này đảm bảo dữ liệu trong CSDL của bạn là duy nhất và không xảy ra bất thường. Thông tin ở bảng này phải phù hợp với thông tin ở bảng khác mà nó có liên quan. Điều kiện thiết lập sự đảm bảo toàn vẹn tham chiếu Bạn có thể thiết lập sự đảm bảo toàn vẹn tham chiếu khi có đủ các điều kiện:

- Trường dữ liệu trong bảng chính là khoá chính hoặc là trường chỉ số (index) duy nhất.

- Hai trường tham gia vào mối liên hệ phải có cùng kiểu dữ liệu.

19

Tên bảng tham gia vào quan hệ

Tên trường khoá chính

Tên trường khoá liên kết

Kiểu mối quan hệ

Tạo mối quan hệ mới giữa các thực thể

Kiểu kết nối giữa các bảng

Chọn khi muốn tạo mối quan hệ vừa thiết lập

Mối quan hệ có bảo toàn tham chiếu không?

Tự cập nhật các trường liên quanTự xoá các bản ghi có liên quan

Page 20: Giao Trinh Access 2003

Microsoft Access

- Cả hai bảng phải cùng một CSDL Access, nếu bảng là bảng liên kết (link) phải có định dạng Access.

Quy tắc nhập dữ liệu khi đã thiết lập sự toàn vẹn tham chiếu - Không thể nhập giá trị vào trường khoá ngoại nếu như giá trị đó không tồn

tại trong trường khoá chính của bảng bên đầu một mà có liên quan đến. Tuy nhiên, bạn có thể để trường giá trị này trống (Null). → Bạn nên nhập các giá trị bên bảng chính trước khi nhập giá trị vào bảng có liên quan.

- Không thể xoá một bản ghi (1 dòng) trong bảng chính nếu như nó có tồn tại trong bảng có liên quan.

Tuy nhiên, nếu bạn dùng câu query Delete để xoá các bản ghi thì tính toàn vẹn tham chiếu này sẽ không được đảm bảo.

Các bạn chỉ cần nhớ trong phần nhập dữ liệu vào bảng duy nhất một điều: nhập dữ liệu bên bảng đầu một trước khi nhập dữ liệu cho bảng đầu nhiều. Và giá trị nhập vào trường khoá liên kết phải tồn tại trong bảng một. Mọi thao tác nhập dữ liệu khác đều bị Access không chấp nhận.3. Xây dựng câu truy vấn – QuerySức mạnh thật sự của CSDL là khả năng tìm đúng và đầy đủ thông tin mà bạn cần biết, trình bày dữ liệu theo trật tự sắp xếp mà bạn muốn. Do đó, Access cung cấp công cụ truy vấn (query) cho phép bạn có phương tiện đặt các câu hỏi với dữ liệu chứa bên trong các bảng của CSDL. Dữ liệu có được từ truy vấn có thể lấy ra từ một hay nhiều bảng và kết quả truy vấn có thể làm nguồn dữ liệu cho các biểu mẫu, báo cáo hay cho một câu truy vấn khác. Vậy nhờ query, bạn có thể khôi phục lại bảng dữ liệu như trong Excel bằng cách kết nối dữ liệu từ các bảng lại với nhau.3.1. Truy vấn là gìLà công cụ cho phép đặt câu hỏi với dữ liệu lưu trong CSDL. Việc thiết kế truy vấn chính là thể hiện bạn có yêu cầu cần biết thông tin gì. Sau đó, Access thực hiện lấy dữ liệu từ các mối quan hệ để có được dữ liệu theo yêu cầu đó. Phân loại truy vấn

- Select query: xem xét dữ liệu trong các bảng, thực hiện phân tích và chỉnh sửa trên dữ liệu đó. Đây là kiểu truy vấn hay sử dụng nhất trong Access cho phép trích rút dữ liệu từ một hay nhiều bảng theo điều kiện mà bạn đề ra và hiển thị (sort) dữ liệu đó theo trình tự mà bạn yêu cầu. Mặt khác, nó cho phép bạn hiển thị kết quả tổng kết theo nhóm giá trị trong nhiều trường/ cột khác nhau.

- Crosstab query: thể hiện kết quả tổng kết từ một trường và nhóm chúng theo tập giá trị thực của một trường được liệt kê làm tiêu đề cột và theo tập giá trị thực của một trường khác được liệt kê làm tiêu đề dòng (giống như Pivot Table trong Excel).

20

Page 21: Giao Trinh Access 2003

Microsoft Access

- Parameter query: khi chạy query này xuất hiện hộp thoại yêu cầu người dùng nhập điều kiện và thực hiện câu truy vấn theo yêu cầu đó.

- Action query: là những câu query làm thay đổi giá trị của rất nhiều bản ghi trong duy nhất một thao tác. Có một số câu query thuộc loại này như: Update query, Delete query, Append query, Make-Table query…

Sự cần thiết của truy vấn Access cung cấp sự mềm dẻo và linh hoạt tối đa để thiết kế truy vấn, với truy vấn bạn có thể làm được những việc như

- Lựa chọn các trường cần thiết: Chỉ hiển thị những trường theo yêu cầu thay vì việc đưa tất cả các trường trong mỗi bảng tham gia vào truy vấn. Ví dụ: có thể chỉ xem Tên và Địa chỉ của khách hàng trong bảng Khách hàng, nhưng không quan tâm đến Số điện thoại hay MS thuế của khách hàng đó.

- Lựa chọn các bản ghi: Dựa vào điều kiện bạn có thể chỉ lấy ra những bản ghi thoả mãn điều kiện đó. Ví dụ: chỉ xem điểm của các Sinh viên có điểm từ 5 trở lên (Điểm >= 5).

- Sắp xếp thứ tự các bản ghi: Có thể hiển thị các bản ghi theo một trật tự nào đó. Ví dụ: Hiển thị sinh viên theo Điểm tăng dần, theo năm sinh tăng dần, theo từng môn với điểm tăng dần,…

- Lấy dữ liệu từ nhiều bảng khác nhau: Có thể dùng truy vấn để kết xuất ra thông tin cần thiết mà dữ liệu của nó nằm trên nhiều bảng khác nhau. Ví dụ: Xem thông tin cá nhân của sinh có điểm Toán từ 8 trở lên, khi đó Điểm thì được lưu trữ trong bảng Kết quả học tập và thông tin cá nhân từ lưu trữ trong bảng Sinh viên.

- Thực hiện các phép tính: Có thể tạo một trường mới chứa kết quả tính toán, trường này được gọi là trường tính toán. Ví dụ: tạo trường Thành tiền để chứa kết quả của trường Đơn giá nhân với trường Số lượng. Chính vì vậy, trong CSDL của Access bạn không cần phải lưu trữ các trường dữ liệu mà hoàn toàn có thể tính toán được dựa trên các trường dữ liệu khác.

- Sử dụng truy vấn làm nguồn dữ liệu cho biểu mẫu hoặc báo cáo hay một truy vấn khác: Đôi khi cần số liệu được rút ra từ nhiều bảng để trình bày một biểu mẫu hay một báo cáo, bạn có thể tạo một truy vấn trong đó có chứa dữ liệu theo yêu cầu rồi. Sau đó, từ nguồn dữ liệu trích rút được trong truy vấn đó bạn tạo biểu mẫu, tạo một truy vấn khác… dựa trên nó.

- Thay đổi dữ liệu trong bảng: Có thể cập nhật, thêm hay bớt dữ liệu vào bảng bằng các truy vấn hành động. Việc dùng truy vấn hành động này, giúp công việc cập nhật, hay sửa đổi dữ liệu một cách dễ dàng và nhanh chóng hơn. Ví dụ: Sửa Địa chỉ của khách hàng có tên là X thành Hà Nôi, cập nhật điểm môn Tin Quản lý 2 tăng lên 20% so với điểm cũ…

21

Page 22: Giao Trinh Access 2003

Microsoft Access

3.2. Tạo truy vấn (query)Tại hộp thoại Database, chọn nút biểu tượng Object Queries. Có thể tạo một query bằng phương pháp thủ công là Tự thiết kế (Design View) hoặc xây dựng nhanh bằng Wizard. Nếu chọn nút New trên hộp thoại Database, bạn có thể chọn kiểu query muốn thiết kế mà được liệt kê trên hộp thoại New Query, bao gồm:

- Design View: tạo query thủ công.- Simple query Wizard: tạo query đơn giản có sử dụng trợ giúp.- Crosstab Query Wizard: tạo query Crosstab có trợ giúp Wizarrd.- Find duplicates query wizard: tạo query để tìm kiếm những bản ghi trùng

lặp giá trị trên một trường trong bảng hay trong một query khác.- Find unmarch query wizard: tạo query để tìm kiếm các bản ghi trong một

bảng mà giá trị của nó không có quan hệ với bất kỳ bảng nào.Nhưng trước khi đi vào xây dựng một câu truy vấn, bạn cần phải phân tích xem yêu cầu người dùng đặt ra là gì và xác định dữ liệu cần thiết lấy từ nguồn nào. Phân tích yêu cầu truy vấn dữ liệu và xác định nguồn dữ liệu Ví dụ: trong CSDL Quản lý bán hàng có các bảng như sau

HOÁ ĐƠN CHITIẾT_HĐ HÀNG HOÁ # SốHĐ

Ngàybán @ MãNV @ MãKH

#@ SốHĐ #@ Mãhàng

SốlượngGiábán

# MãhàngTênhàngĐVtínhNơiSX

KHÁCH HÀNG NHÂN VIÊN # MãKH

TênKHĐịachỉ

# MãNVTênNVĐịachỉ

Yêu cầu: Tìm tên của những khách hàng đã mua hàng vào ngày 1/2/2003. Ta thấy, điều kiện tìm kiếm ở đây là tất cả những Hoá đơn có Ngày mua là 1/2/2003. Trong mỗi HĐ ta chỉ tìm thấy được Mã KH, để biết được Khách hàng nào mua hàng thì phải kết nối bảng Hoá đơn với bảng Khách hàng, sau đó tìm tên những khách hàng tương ứng với các HĐ đó.Để thực hiện được câu truy vấn trên, cần có 2 bảng dữ liệu là Hoá đơn và Khách hàng, với điều kiện là ngày mua bằng 1/2/2003. Xây dựng câu truy vấn Select bằng Design View Sau khi chọn Creat query by Design View, xuất hiện hộp thoại Show Table, chọn các bảng sẽ tham gia vào câu truy vấn này, rồi chọn Close. (Có thể tạo 1 câu truy vấn với nguồn dữ liệu từ bảng hoặc các câu truy vấn khác.)

22

n

1

n

1

1 n 1n

Page 23: Giao Trinh Access 2003

Microsoft Access

Trên đây là hộp thoại tạo Select query, hộp thoại gồm 2 phần: hiển thị các bảng/ truy vấn tham gia vào câu truy vấn ; phần lưới hiển thị danh sách các trường tham gia vào câu truy vấn.Đưa các trường vào truy vấn

Cách 1: kích đúp chuột vào tên trường trong bảng/ truy vấn tương ứng ở phần sơ đồ quan hệ.

Cách 2: kéo tên trường từ bảng trong phần sơ đồ quan hệ và thả vào vùng lưới.Cách 3: chọn tên trường cần ở combo box nằm trên dòng Field trong lưới.Nếu chọn tất cả các trường trong bảng chọn dòng có dấu * trong bảng đó trên sơ đồ quan hệ. Nhưng nếu dùng theo cách này bạn không thể quy định thứ tự hiển thị các trường trong query, cũng như không thể đặt được tiêu chuẩn chọn lọc dữ liệu hay không thể sắp xếp được dữ liệu theo một trường nào.

Khung lưới ghi các trường tham gia vào truy vấn gồm:- Field: tên trường tham gia vào truy vấn,- Table: trường này thuộc vào bảng/ truy vấn nào,- Sort: dữ liệu của truy vấn có được sắp xếp theo trường DL này không, - Show: trường này có được hiển thị trong kết quả truy vấn không, mặc

định là trường đó hiển thị và hộp check box có tích . Nếu không muốn hiển thị trường đó thì bạn bỏ dấu tích đi bằng cách kích chuột phải vào hộp check box đó.

- Criteria: Điều kiện truy xuất dữ liệu có đặt ra trên trường này không. Cách chuyển đổi giữa các chế dộ hiển thị trong query Khi xây dựng một truy vấn, bạn thường có 3 chế độ hiển thị, đó là

23

Các bảng tham gia vào câu truy vấn

Các trường của các bảng tham gia vào câu truy vấn

Ascending

Kiểu câu truy vấn

Page 24: Giao Trinh Access 2003

Microsoft Access

- Datasheet:Hiển thị dữ liệu dạng bảng là kết quả của câu truy vấn- Design view: Hiển thị dưới chế độ thiết kế truy vấn.- SQL view: Hiển thị chế độ thiết kế truy vấn dưới dạng ngôn ngữ SQL.

Ở đây, chúng ta chỉ quan tâm đến 2 chế độ hiển thị đầu tiên, còn cách hiển thị cuối cùng lại thuộc một khái niệm khác, mà trong chương trình này không đề cập đến. Từ chế độ Design chuyển sang chế độ Datasheet

- Chọn menu View, rồi chọn tiếp Datasheet view.- Hoặc kích phím phải chuột vào hộp thoại thiết kế Design, xuất hiện menu

nhanh, chọn Datasheet view.- Hoặc chọn trên thanh Toolbar như hình vẽ, rồi chọn Datasheet view.

Đây chính là cách xem, thực hiện câu truy vấn mà bạn đã làm. Từ chế độ Datasheet chuyển sang chế độ Design

- Chọn menu View, rồi chọn Design view.- Hoặc kích phím phải chuột vào hộp thoại Data,

sau khi xuất hiện menu nhanh chọn Design view.- Hoặc chọn từ thanh Toolbar như hình vẽ ở trên, chọn Design view.

Cách thực hiện câu truy vấn Sau khi thiết kế xong câu truy vấn, chọn menu Query rồi chọn Run. Hoặc có thể

chọn từ thanh Toolbar Query nút có hình để thực hiện. Cách xây dựng điều kiện Criteria Cách xây dựng điều kiện để thiết kế truy vấn dữ liệu giống như trong Excel, khi điều kiện thuộc trường dữ liệu nào thì trường đó phải có trong lưới và điều kiện đặt trong cột đó. Nếu các điều kiện cần thoả mãn đồng thời (điều kiện Và) phải nằm trên cùng một dòng, và các điều kiện chỉ cần thoả mãn một trong chúng (điều kiện Hoặc) thì nằm trên các dòng khác nhau.Ví dụ: Với câu truy vấn trên ta có điều kiện như sau

Ngày bánCriteria: 2/1/2003

Chú ý: Nếu bạn nhập điều kiện là chuỗi giá trị ngày tháng phải tuân thủ nguyên tắc nhập tháng/ngày/năm. Khi đó, Access tự thêm vào trước và sau chuỗi giá trị đó ký tự # như sau #tháng/ngày/năm#.

- Hiển thị tên và địa chỉ KH mua trong các ngày từ 1/2/2003 đến 12/2/2003.Ngày bán Ngày bán

Criteria: >=2/1/2003 <=2/12/2003hoặc có thể ghi như sau

Ngày bánCriteria: (>=2/1/2003) and (<=2/12/2003)

24

Page 25: Giao Trinh Access 2003

Microsoft Access

hoặc có thể ghiNgày bán

Criteria: Between 2/1/2003 and 2/12/2003Nếu muốn lấy giá trị của một trường nằm trong khoảng giữa 2 giá trị nào đó, bạn có thể dùng từ khoá Between … And.

- Hiển thị Tên KH mua ngày 1/2/2003 hoặc 12/2/2003 hoặc có SốHĐ là HD001.SốHĐ Ngày bán

Criteria: HD001Or: 2/12/2003

2/1/2003Chú ý: Nếu điều kiện có chứa giá trị kiểu Text, thì chuỗi giá trị đó phải được đưa vào dấu nháy kép “ ”.

- Hiển thị thông tin các mặt hàng thuộc loại Rượu hoặc Bia, khi đóField: Tên hàng Tên loạiTable: Hànghoá Loạihàng

… …Criteria: “Rượu”

Or: “Bia”Có nghĩa là chỉ hiển thị ra tất cả các mặt hàng có tên loại bằng đúng chuỗi “Rượu” hoặc đúng chuỗi ký tự “Bia”, nên nếu mặt hàng nào đó có tên loại là “Rượu cao cấp” sẽ không thoả mãn điều kiện trên.

- Hiển thị tất cả các khách hàng có mã bắt đầu bằng CH (Cửa hàng)Nếu trường MãKH có điều kiện là “CH”, có nghĩa MaKH= “CH” và để hiển thị tất cả các khách hàng có mã là CH -> KQ: không có khách hàng nào có mã giống hệt như vậy. Tuy nhiên, nếu muốn xem thông tin về các Khách hàng có mã KH là bắt đầu bằng chuỗi “CH” thì phải dùng ký tự mở rộng xâu (thay thế). Khi các bạn dùng ký tự mở rộng xâu, trong biểu thức điều kiện phải bắt đầu bằng Like hoặc Not Like. Access sẽ tự thêm vào từ khóa Like nếu trong biểu thức chuỗi có chứa ký tự mở rộng xâu *. Yêu cầu trên được thiết kế như sau

Field: TênKH MãKHTable: Kháchhàng Kháchhàng

… …Criteria: Like “CH*”

Một số ký tự thay thế thường dùng sau:*: thay thế cho 0,1 hoặc nhiều ký tự bất kỳ.?: Thay thế chỉ cho 1 ký tự bất kỳ.[tập KT]: nhận giá trị là 1 trong các ký tự trong tập ký tự. (-): miền các ký tự liên tiếp nhau, ví dụ: 1-3 có nghĩa các ký tự 1, 2, 3.

Khi đó, nếu điều kiện của bạn có dùng ký tự mở rộng xâu thì làm như sau:

25

Page 26: Giao Trinh Access 2003

Microsoft Access

Dòng Criteria Kết quả* Like “Nguyễn Du*” Địa chỉ bắt đầu bằng chuỗi “Nguyễn Du”.

Like “*Nguyễn Du*” Địa chỉ có chứa chuỗi “Nguyễn Du”.? Like “??001” Mã KH bằt đầu bằng 2 ký tự bất kỳ và sau đó là 001.[ ] Like “??00[14]” Mã KH bắt đầu bằng 2 ký tự bất kỳ và tiếp theo là 00 và ký tự

cuối cùng là 1 hoặc 4 ->??001 hoặc??004.- Like “??00[1-5]” Mã KH bắt đầu là 2 ký tự bất kỳ tiếp theo là 00 và ký tự cuối

cùng nhận giá trị từ 1 đến 5.Not like “*Nguyễn Du*” Địa chỉ không có chuỗi ký tự “Nguyễn Du”.

Thay đổi thứ tự, thêm, xoá các trường – Xoá bảng khỏi truy vấn Thứ tự xuất hiện các trường trong khi thiết kế chính là thứ tự khi hiển thị các trường của câu truy vấn. - Thay đổi thứ tự các trường

Đánh dấu vào trường cần thay đổi thứ tự (di chuyển chuột trên thanh chọn của vùng lưới, xuất hiện mũi tên thì kích trái chuột).Bấm phím trái chuột vào thanh chọn của trường đó sao cho xuất hiện mũi tên , bấm và di chuyển chuột sang trái hoặc sang phải theo thứ tự do bạn định ra. Đến vị trí mới, nhả phím trái chuột, các trường được đánh dấu sẽ được di chuyển đến vị trí này.

- Thêm trường vàoCách thêm giống như việc bạn đưa một trường tham gia vào truy vấn. Kích đúp chuột vào trường muốn thêm vào, rồi di chuyển trường đó đến vị trí mà bạn muốn hiển thị trong kết quả.

- Bớt trường đi Đánh dấu trường muốn xoá,Chọn Edit/ Delete Column hoặc bấm phải chuột vào trường đó, chọn Cut từ menu nhanh hiện ra.

- Xoá khỏi truy vấn các bảng không cần thiếtChọn vào bảng cần xoá trong phần sơ đồ quan hệ,Bấm phím Delete hoặc chọn menu Edit/ Delete.

Thêm một số cột vào query Trên đây chỉ đưa ra cách thêm các trường từ các bảng vào query. Tuy nhiên, bạn có thể thêm các cột không thuộc bảng nào vào query bằng cách định nghĩa một trường DL mới trong query. Khi đó, ta có thể tạo ra bất kỳ một trường mới nào để hiển thị kết quả tính toán theo một công thức mà phục vụ yêu cầu của bạn.Ví dụ: tạo query có dạng như sau

26

Page 27: Giao Trinh Access 2003

Microsoft Access

SoHD Ngayban Tenhang Soluong Thanhtien ThueHD003 1/2/2003Bút máy Hero 5 46000 2300HD004 1/3/2003Mỳ ăn liền Hảo Hảo 5 5500 275

Trong CSDL ta có các trường dữ liệu được lưu trữ như sau:SốHĐ, Ngàybán: Thuộc bảng HOÁĐƠNTênhàng, Đơngiá: Thuộc bảng HÀNGHOÁSốlượng: Thuộc bảng CHITIẾT_HĐ

Ta thấy, trong kết quả của Query trên có trường Thành tiền và Thuế. Cả hai trường này không được lưu trữ ở trong bảng DL nào, các trường này là kết quả được tính từ công thức sau

Thành tiền = Số lượng * Đơn giáThuế = 5% * Số lượng * Đơn giá = 5% * Thành tiền

Do đó, ta tạo thêm trường Thành tiền và Thuế với giá trị của các trường được tính theo công thức trên. Tại dòng Field của lưới thiết kế, ta gõ vào một cột trống công thức như sau

Thành tiền: Số lượng * Đơn giáCó nghĩa là trường Thành tiền được tính theo công thức Số lượng * Đơn giá. Và ở một cột trống khác, bạn gõ công thức

Thuế: Số lượng * Đơn giá * 0.05Như vậy, muốn định nghĩa một trường giá trị mới trong query, ta ghi tên trường mới sau đó là dấu: và công thức tính giá trị cho trường đó.

Tên trường mới: Biểu thức tínhNếu không đặt tên mới cho trường tự định nghĩa, Access sẽ đặt tên cho các trường đó lần lượt là Exp1, Exp2,… Đây cũng là một cách để đặt lại tên cho một trường bất kỳ. Nhưng bạn cũng nên chú ý một vấn đề, đặt tên trường mới này như thế nào??? Theo ví dụ ở trên, tên trường có thể đặt là tiếng Việt có dấu, nhưng nếu như kết quả của truy vấn này lại làm nguồn dữ liệu cho một truy vấn khác, thì đôi khi tên trường đó gây lỗi, thậm chí gây khó khăn khi bạn lập trình. Do vậy, bạn nên đặt tên các trường đó giống như cách đặt tên trường thông thường (Tên trường được đặt là Tiếng việt không dấu, dùng dấu _ để phân cách giữa các từ trong tên trường cho rõ ràng). Tạo công thức tính giá trị cho một trường Nếu như cách làm trên đã khiến cho bạn mệt mỏi vì phải gõ nhiều, thậm chí bạn gõ sai tên các trường gây lỗi phiền toái. Do vậy, bạn có thể xây dựng biểu thức tính toán bằng cách dùng hộp thoại trợ giúp xây dựng công thức Expression Builder. Cách làm như sau: Bấm phím phải chuột vào dòng Field của một ô trống, xuất hiện menu nhanh,

chọn Build hoặc chọn nút trên thanh Toolbar.

27

Page 28: Giao Trinh Access 2003

Microsoft Access

Xây dựng biểu thức tính toán vào hộp thoại Expression Builder.Chọn OK khi kết thúc việc xây dựng Biểu thức.

Làm quen với hộp thoại Expression Builder

Có thể xây dựng công thức bằng cách chọn các thành phần tham gia vào công thức trong hộp thoại Expression Builder:Nếu muốn sử dụng hàm có sẵn để xây dựng công thức, thì chọn Function tiếp

đó chọn Built-In Function, sau đó kích đúp chuột vào tên hàm cần dùng, rồi chỉ ra đầy đủ các đối số cho hàm đó. Các đối số có thể là một trường, hoặc có thể là một giá trị bất kỳ nào đó do bạn nhập vào.

Nếu đối số là một trường, thì bạn chọn đối tượng Tables (Queries,…), sau đó chọn tên bảng (tên query,…) trong nhóm đó. Khi xuất hiện tên các trường của bảng (query) ở hộp thoại giữa, kích đúp chuột vào tên trường cần tham gia vào công thức.

Các phép toán: Chọn từ nút phép toán tương ứng trên hộp thoại.Một số hàm sử dụng khi xây dựng biểu thứcXử lý giá trị kiểu Date/Time- DatePart(phần giá trị, Giá trị/ Biến/ Trường kiểu Date)Trong đó: Phần giá trị chỉ ra giá trị cần lấy ra từ Trường giá trị kiểu Date

“q”: Giá trị đó thuộc Quý nào trong năm“m”: Lấy giá trị Tháng từ giá trị đó“yyyy”: Lấy giá trị Năm“ww”: giá trị đó thuộc Tuần thứ mấy trong năm“w”: giá trị đó là Ngày thứ mấy trong tuần“d”: lấy giá trị Ngày

Ví dụ: có Ngày bán = 2/3/2003

28

Phần hiển thị công thức xây dựng được, có thể gõ biểu thức tại đâyCác toán tử thường sử dụng trong khi xây dựng biểu thức tính giá trị cho 1 cột.

Nhóm các đối tượng có trong CSDL

Các hàm tính toán có sẵn trong AccessCác toán tử có sẵn trong Access

Page 29: Giao Trinh Access 2003

Microsoft Access

DatePart(“m”, [Ngayban]) = 2 và DatePart(“q”, [Ngayban]) = 1- Format: thực chất đây không phải là 1 hàm dựng sẵn của Access, ở đây sử dụng thuộc tính Format của trường giá trị kiểu ngày tháng.

Format(Giá trị/biến/Trường kiểu Date, Phần giá trị cần lấy)Ví dụ: Format( [Ngayban], “m”) =3Xử lý giá trị kiểu Text- Left: lấy bao nhiêu ký tự phía bên trái của một chuỗi ký tự.

Left (Chuỗi KT, Số ký tự cần lấy)Ví dụ: Left( [MaKH], 2) = “KL”- Right: lấy bao nhiêu ký tự phía bên phải của một chuỗi ký tự.

Right (Chuỗi KT, Số ký tự cần lấy)- Mid: Lấy ra bao nhiêu ký tự từ vị trí cho trước.

Mid (Chuỗi KT,Vị trí bắt đầu, Số ký tự cần lấy)Ví dụ: mid( [MaKH],3,2) = “001”Với trường giá trị giá trị kiểu chuỗi, thì việc lọc giá trị theo tiêu chí nào đó có thể dùng các ký tự thay thế.Cấu trúc rẽ nhánh thực hiện chương trìnhiif: Dùng khi muốn điền giá trị vào một cột nhưng có nhiều lựa chọn khác nhau.

iif(biểu thức logic,Lệnh thực hiện khi BT Đúng, Lệnh thực hiện khi BT Sai)Ví dụ: Hiển thị thông tin về tất cả KH, thêm cột Ghi chú, trong đó ghi Khách lẻ nếu 2 ký tự đầu của Mã KH là “KL”, và Cửa hàng nếu là “CH”. Ta thấy chỉ có 2 khả năng thực hiện, do đó BT logic đặt ra là kiểm tra 2 KT đầu mã KH có là “KL” không, nếu Đúng thì điền “Khách lẻ”, và ngược lại (không bằng “KL”) thì điền “Cửa hàng”.Khi đó cột Ghi chú được định nghĩa như sau:

Ghi chú: iif(left([MaKH],2)= “KL”, “Khách lẻ”, “Cửa hàng”).Chú ý: Khi xây dựng biểu thức thì nếu tên trường tham gia vào biểu thức thì tên

trường đó phải đặt trong ngoặc vuông [ ]. Tuy nhiên nếu bạn chọn cách xây dựng Expression Builder, thì Access tự đưa tên trường vào ngoặc vuông.

Nếu tên trường đó xuất hiện ở trong nhiều bảng, và các bảng đó đều tham gia vào truy vấn đó thì bạn phải chỉ rõ cho Access biết trường đó được lấy ra từ bảng nào.

Ví dụ: Hiển thị Tên của những khách hàng có mã 01 mà mua hàng vào tháng 1. Khi đó, query cần lấy thông tin từ bảng Hoá đơn và bảng Khách hàng. Tuy nhiên, mã KH lại có ở cả 2 bảng trên do vậy bạn cần chỉ ra trường mã KH đưa vào query

29

Page 30: Giao Trinh Access 2003

Microsoft Access

được lấy từ bảng nào. Do vậy, bạn có [Hoadon]![MaKH] nghĩa là lấy trường Mã KH trong bảng Hoá đơn. Một số thuộc tính của Query Trong Access, bạn có thể quy định đặc trưng của truy vấn, bằng cách dùng những thuộc tính khi thiết kế truy vấn đó. Từng trường trong truy vấn, đều có thuộc tính riêng của nó.

Quy định thuộc tính của truy vấnDùng để quy định các giá trị trả về khi thực hiện truy vấn đó, chẳng hạn các mẩu tin không trùng nhau, hoặc các giá trị không trùng nhau,… Để chọn thuộc tính của truy vấn, bạn kích chuột phải vào phần hộp thoại chứa các bảng tham gia vào truy vấn. Khi xuất hiện menu nhanh, chọn Properties.

- Top values: Hiển thị bao nhiêu bản ghi ở đầu danh sách các bản ghi- Unique Values: Có/Không cho phép có giá trị trùng lặp. - Unique Records: Có/Không cho phép hiển thị các bản ghi trùng lặp.

Quy định thuộc tính riêng của mỗi trường tham gia vào truy vấnCác thuuộc tính này ảnh hưởng đến việc hiển thị giá trị của trường đó. Để chọn hộp thoại quy định này, bạn di chuyển chuột đến trường cần thay đổi thuộc tính. Sau đó, kích phải chuột vào trường đó hoặc lên thanh tiêu đề của query, rồi chọn Properties từ menu nhanh hiện ra.Tuỳ theo kiểu giá trị của từng trường đã được đặt khi thiết kế mà các thuộc tính trong đó sẽ khác nhau. Nếu là trường có giá trị kiểu số thì có thuộc tính

- Format: thay đổi định dạng của dữ liệu hiển thị.- Decimal place: Số chữ số đằng sau dấu chấm thập phân. - Caption (đối với tất cả các trường): Tên hiển thị của trường này.

Chú ý: Đối với các trường có kiểu biểu thức (giá trị tạo được nhờ công thức tính toán) thì khi xem bảng kết quả chúng ta không thể sửa được trường này. Tuy nhiên nếu ta sửa dữ liệu trên các trường tham gia vào biểu thức tính toán thì giá trị của trường này cũng sẽ được thay đổi theo. Nếu giá trị trong các bảng có sự thay đổi hoặc cập nhật thêm, nếu bạn thực hiện lại query đó bạn luôn nhận được kết quả đã cập nhật theo số liệu mới.Các trường kiểu biểu thức cũng có thể sắp xếp hoặc hiển thị theo điều kiện nào đó giống như tất cả các trường dữ liệu khác trong query. Tính tổng trong query (Totals query) Trong thực tế, bạn có thể phải trả lời các câu hỏi có liên quan đến 1 nhóm dữ liệu, mà điều này luôn luôn xảy ra vì xuất phát từ nhu cầu tìm kiếm thông tin. Ví dụ như Tính tổng số tiền mua hàng mà hoá đơn có số HD001 phải trả; Tính tổng doanh thu trong ngày 1/1/03; Tính số lượng bán ra trong ngày 1/1/03 theo mỗi mặt hàng;

30

Page 31: Giao Trinh Access 2003

Microsoft Access

Tổng hợp doanh thu bán hàng theo ngày; Tính tổng giá trị mua hàng trong tháng 3 của khách hàng có mã là KL001,…Theo cách hình dung thông thường thì có thể mô tả cách làm yêu cầu như sau: Đầu tiên nhóm các bản ghi theo số hoá đơn, sau đó tính tổng giá trị tiền của từng hoá đơn đó. Tiếp đến, lọc ra bản ghi có giá trị số hoá đơn là HD001. Việc tính tổng gộp này giống như công cụ Subtotal trong Excel, nên ý nghĩa của nó cũng tương tự như vậy.Trong Access, với Totals query bạn có thể tính tổng gộp trên từng nhóm bản ghi. Dưới đây là một số phép tính (hàm tính toán) dựng sẵn hay dùng để tính gộp nhóm bản ghi.

Total Ý nghĩaSum Tính tổng các giá trị của một trườngAvg Tính giá trị trung bình cộng của một trườngMin Tính giá trị nhỏ nhất của một trườngMax Tính giá trị lớn nhất của một trường

Count Đếm số giá trị khác rỗng trong một trườngFirst Giá trị của trường ở bản ghi đầu tiên trong bảngLast Giá trị của trường ở bản ghi cuối cùng trong bảng

Tuy nhiên, nếu dùng truy vấn Totals query thì dữ liệu trong bảng kết quả không thể thay đổi, chỉnh sửa được (là do dữ liệu này được tổng hợp từ các số liệu khác).Cách thực hiện tính tổng gộp nhóm tất cả các bản ghi

Ví dụ: Số mặt hàng bán là bao nhiêu và giá bán trung bình là bao nhiêu?Ta thấy ở đây đơn thuần chỉ là đếm số dòng (tương ứng với số mặt hàng) có trong bảng Hàng hoá và tính trung bình cộng giá trị trong trường Đơn giá. Tạo truy vấn mới, xác định các bảng và các trường cần thiết có tham gia

vào truy vấn (Mahang, Dongia). Chọn menu View/ Totals, hoặc nhấp chuột phải vào vùng lưới query chọn

Totals hoặc chọn nút Σ trên thanh công cụ. Khi đó xuất hiện dòng Totals trong vùng lưới.

Nếu như bạn muốn tính toán trên toàn bộ mẫu tin thì không được phép chọn GroupBy ở bất kỳ trường nào.

Lựa chọn trường dữ liệu cần sắp xếp để tính tổng gộp, trường này sẽ nhận giá trị Group by ở dòng Total. Chú ý, thứ tự sắp xếp được ưu tiên từ trái sang phải.

Chọn cách tính tổng gộp trong dòng Total, ví dụ trường Mahang là Count, trường Dongia là Avg.

31

Page 32: Giao Trinh Access 2003

Microsoft Access

Ta có Field Soluonghang: Mahang GiaTB: Dongia → Soluonghang GiaTBTable

Hanghoa Hanghoa Kết quả 13 4792.31

Total Count AvgSort

Tính tổng gộp trên từng nhóm bản ghiVí dụ: Đếm số mặt hàng và giá bán trung bình của các mặt hàng có trong từng loại hàng.Ở đây, bạn phải gộp nhóm các bản ghi theo loại hàng, sau đó đếm số hàng có trong từng loại và tính trung bình cộng đơn giá của các mặt hàng trong từng loại đó. Do đó, trường Tênloại và Mãloại chính là trường dùng để gộp nhóm (GroupBy) các bản ghi. Chú ý: trường Tên loại nằm trong bảng Loại hàng, còn trường Loại hàng trong bảng Hàng hoá chính là Mã loại của Loại hàng.

Ta cóField Tenloai SLhang: Mahang GTB: Dongia → Tenloai SLhang GiaTBTable Loaihang Hanghoa HanghoaTotal GroupBy Count Avg

Kết quả

Bia 2 7600Bút máy 2 6900

Sort … … … Mỳ gói 2 1000

Chú ý: Việc gộp nhóm sẽ được tiến hành gom theo các trường tham gia vào truy vấn bắt đầu từ bên trái. Và với ví dụ trên trường được gom nhóm là Mã loại sau đó đến Tên loại.

Chọn (Lọc) các nhóm sau khi đã được tính tổng gộpVí dụ: Đếm số mặt hàng và giá bán trung bình là bao nhiêu của loại hàng Bia hoặc Mỳ gói.Thực hiện gộp nhóm các bản ghi theo Loại hàng, sau đó đếm số mặt hàng và tính Giá bán trung bình theo từng loại hàng. Cuối cùng chỉ hiển thị ra Số lượng và Giá bán TB của Loại hàng “Mỳ gói” và “Bia”. Ta thấy việc lọc giá trị này được thực hiện sau khi đã gom nhóm và tính tổng gộp. Do vậy, đây chỉ là điều kiện lọc giá trị thông thường như trong câu Select Query.

Ta cóField Tenloai SLhang: Mahang GTB: Dongia → Tenloai SLhang GiaTBTable Loaihang Hanghoa Hanghoa

Total GroupBy Count AvgKết quả

Bia 2 7600

Mỳ gói 2 1000

… … … …

Criteria “Bia”

Or “Mỳ gói”

Tính tổng gộp trên các nhóm bản ghi theo nhiều mức

32

Page 33: Giao Trinh Access 2003

Microsoft Access

Có thể gom nhóm các bản ghi theo nhiều mức, thứ tự ưu tiên giữa các mức được tính từ trái qua phải của các trường giá trị được GroupBy.Ví dụ: Tính tổng số lượng hàng bán ra, số lượt mua hàng và Số lượng mua trung bình của mỗi mặt hàng theo từng loại hàng.Ta thấy các bản ghi được gom theo 2 cấp Loại hàng và Mặt hàng, giá trị cần tính ở đây là Tổng số lượng bán được, Số lượt mua mặt hàng đó, Số lượng mua hàng trung bình theo từng mặt hàng.

Ta cóField Tenloai Tenhang Tongso:soluong Soluot:Soluong SLTB:SoluongTable Loaihang Hanghoa CT_Hoadon CT_Hoadon CT_HoadonTotal GroupBy GroupBy Sum Count Avg… … … … … …Kết quả

Chọn (Lọc) các bản ghi trước khi tính tổng gộpỞ trên đã hướng dẫn bạn cách lọc các bản ghi theo điều kiện nào đó, sau khi đã thực hiện tính tổng gộp. Phần này hướng dẫn các bạn cách giới hạn (lọc) các bản ghi trước khi đưa chúng vào tính tổng gộp. Khi đó, bạn chọn Where trong dòng Total rồi nhập điều kiện lọc ở dòng Criteria.Chú ý: Việc chọn lọc các bản ghi trước và sau khi gộp nhóm chỉ có ý nghĩa nếu như trường cần đặt điều kiện lọc có tham gia vào hàm gộp nhóm.Ví dụ 1: Tính tổng số lượng hàng bán ra, số lượt mua hàng và Số lượng mua trung bình của mỗi mặt hàng mà có số lượng mua từ 10 trở lên.Ta thấy: Trường Soluong có tham gia vào hàm gộp nhóm (Sum). Ở đây có sự khác biệt giữa

33

Tenloai Tenhang Tongso Soluot SLTB

Bia Bia chai 333 52 5 10.4

Bia Bia chai Heineken 98 7 14

Bút máy Bút máy Hero 14 6 2.33

Bút máy Bút máy HH 14 4 3.5

Page 34: Giao Trinh Access 2003

Microsoft Access

Tính tổng số lượng của tất cả các lần mua mặt hàng đó rồi lấy ra những mặt hàng có tổng số lượng từ 10 trở lên. (1)

Chỉ tính tổng số lượng cho những lần mua hàng với số lượng mua từ 10 trở lên. (2)

Ta thấy trường hợp (1) sẽ lọc những bản ghi thỏa mãn điều kiện sau khi đã tính gộp nhóm. Còn trường hợp (2) sẽ lọc ra những bản ghi thỏa mãn điều kiện, sau đó mới tính gộp nhóm cho các bản ghi đó.

Trước tiên ta lọc ra các dòng (bản ghi) trong bảng CT_Hoadon với điều kiện là số lượng ≥ 10, sau đó gom nhóm bản ghi theo mã mặt hàng rồi tính tổng số lượng hàng theo từng mặt hàng. Nếu như, bạn tính tổng số lượng hàng bán theo từng mặt hàng, sau đó lọc các bản ghi có số lượng ≥ 10 thì Access chỉ đưa ra các mặt hàng nào có tổng số lượng bán ≥ 10. Còn lọc trước khi tính tổng gộp, thì ta lọc ra các lượt bán hàng (bản ghi) mà với số lượng ≥ 10.

Ta cóField Tenhang Soluong Tongso:soluong Soluot:Soluong SLTB:SoluongTable Hanghoa CT_Hoadon CT_Hoadon CT_Hoadon CT_HoadonTotal GroupBy Where Sum Count AvgShow

Criteria >=10Kết quả

Ta thấy, nếu trường nào nhận biểu thức lọc trước khi tính tổng gộp (Total: Where) thì giá trị trường đó không hiển thị trong kết quả Query, Access tự động bỏ dấu trong dòng Show của trường chứa điều kiện Where.Lưu ý: Việc đặt lọc các bản ghi trước và sau khi tính tổng gộp sẽ cho ra kết quả khác nhau.

Tạo biểu thức để tính tổng gộp nhómCó thể tự tạo biểu thức riêng mà trong đó có chứa hàm gộp nhóm thay vì chọn các phép tính có sẵn của Access trong dòng Total. Nó giúp cho công việc của bạn rất tiện lợi và mềm dẻo hơn trong những trường hợp cụ thể.

34

Tenhang TongSo Soluot SLTB

Bia chai 333 42 3 14

Bia chai Heineken 93 6 15.5

Mỳ ăn liền Hảo Hảo 30 2 15

Mỳ ăn liền Vifon 20 2 10

Page 35: Giao Trinh Access 2003

Microsoft Access

Nếu biểu thức tính giá trị cột bất kỳ có sử dụng nhiều hàm gộp nhóm, khi đó tại dòng Total của một cột trống, bạn chọn Expression, sau đó gõ biểu thức cần tính mà chứa hàm gộp nhóm tại dòng Field của cột này.

Ví dụ 1: Tính số tiền giảm giá trên từng hoá đơn, biết rằng chỉ giảm giá 10% cho những hoá đơn có tổng giá trị tiền mua từ 100000 trở lên.Chọn bảng CT_Hoadon và bảng Hanghoa, sau đó chỉ định trường SoHD và chọn gộp nhóm. Ta thấy, trước hết bạn phải gom nhóm các bản ghi trong CT_Hoadon theo SoHD, sau đó tính tổng tiền mua hàng theo từng Hoá đơn, rồi tính giá trị tiền giảm giá theo tổng số tiền mua hàng của mỗi hoá đơn.

Lưu ý: Khi xây dựng công thức tính cho một trường bất kỳ, bạn có thể sử dụng tên đã đặt cho những trường tự định nghĩa hoặc dùng công thức mà xây dựng nên trường đó trong query. Chẳng hạn như, bạn thấy trường Thành tiền được tính bằng công thức là

Thanhtien: sum([Soluong]*[Dongia])Trường Giảm giá được tính nếu tổng tiền trên hoá đơn mà trên 100000 thì giảm giá là Thành tiền * 10%. Khi đó bạn có thể dùng công thức như CT1 dưới đây, hoặc có thể viết

Giamgia: IIf([Thanhtien]>=100000, 0.1, 0) (CT1)Và các trường tự xây dựng khác cũng tương tự như vậy, cụ thể

TGiam: [Thanhtien]*[Giamgia] (CT2)Conlai: [Thanhtien] – [TGiam] (CT3)

Ta cóField SoHD Ttien:[Soluong]*[Dongia] Giamgia:CT1 TGiam:CT2 Conlai:CT3Table CT_HoadonTotal GroupBy Sum Expression Expression ExpressionShow

Criteria

Như các bạn thấy, trong trường Giảm giá và Tiền giảm có dùng đến giá trị tính được của cột Thanhtien, nhưng ở đây có thể dùng kết hợp

Hàm gộp nhóm dùng để tính(Biểu thức/ tên trường tham gia biểu thức giá trị trường đó)

Cụ thể ở đây: Thanhtien được tính bằng Sum([Soluong]*[Dongia]) và công thức này được sử dụng trong tất cả những cột được tính toán mà có dùng đến giá trị của trường Thanhtien.Kết quả

SoHD thanhtien giamgia tiengiam conlaiHD001 47100 0 0 47100

35

Page 36: Giao Trinh Access 2003

Microsoft Access

SoHD thanhtien giamgia tiengiam conlaiHD002 103400 0.1 10340 93060HD003 102500 0.1 10250 92250HD004 105400 0.1 10540 94860HD005 49000 0 0 49000

Ví dụ 2: Tính tổng số lượng hàng đã bán của từng mặt hàng, thêm cột Ghi chú. Cột Ghi chú được tính như sau: Nếu mặt hàng đó có Tổng số lượng bán từ 50 trở lên Số lần mua mặt hàng đó; Nếu Tổng số lượng bán dưới 50 Số lượng mua trung bình trên 1 lần.Chọn bảng CT_Hoadon và bảng Hanghoa, sau đó chọn trường Mahang, Tenhang và chỉ định gộp nhóm trên 2 trường này.Chọn trường Soluong và chọn dòng Total là Sum, đặt lại tên trường là TSL.Tại cột trống gõ Ghichu và xây dựng công thức tính cho cột đó như sau:

Ghichu: IIf([TSL]>=50, Count([Hanghoa]![Mahang]), Avg([Soluong]))Do công thức xây dựng trường Ghi chú có sử dụng nhiều, nên cần chọn Expression tại dòng Total. Thay vì việc dùng tên bí danh [TSL] trong công thức, có thể dùng công thức tính trường TSL tại vị trí đó (công thức là Sum([Soluong]).

3.3. Tạo truy vấn hành động (Action query)Có thể dùng truy vấn để thực hiện thao tác cập nhật, xoá, thêm mới,… trên 1 bảng bất kỳ. Truy vấn cho phép làm các công việc này gọi là Truy vấn hành động (Action query).Để thực hiện một hành động nào trên 1 bảng hay nhiều bảng, sau khi đã xác định được bảng cần thay đổi, chọn menu Query và chọn Query hành động tương ứng:

Update queryDelete queryAppend query,…

Nhìn chung khi thiết kế các query này đều giống như khi thiết kế Select query. Trong lưới thiết kế, dòng Field và Table chỉ bảng cần sửa đổi, dòng Criteria chỉ điều kiện những bản ghi sẽ được thay đổi. Dòng Update to ứng với Update query ghi trường giá trị tương ứng sẽ được cập nhật giá trị đặt ra ở đây. Dòng Delete ứng với Delete query có giá trị Where chỉ ra các bản ghi sẽ được xoá theo điều kiện đặt trong dòng Criteria,…Ví dụ 1: Các mặt hàng thuộc loại Vở giá tăng thêm 10% Cập nhật giá cho các

sản phẩm thuộc loại Vở.- Trường cần cập nhật: Dongia- Điều kiện: chỉ cập nhật sản phẩm có Tên loại “Vở”- Bảng tham gia vào truy vấn: Hanghoa và Loaihang

36

Page 37: Giao Trinh Access 2003

Microsoft Access

- Tạo query theo kiểu Design view, sau đó chọn bảng tham gia truy vấn, chọn kiểu query: vào menu Query/ Update query.

Field Dongia TenloaiTable HanghoaUpdate to Dongia*1.1Criteria Like “Vở *”

Ví dụ 2: Hiện tại công ty cần hủy hóa đơn có số HD045 Xóa các bản ghi thuộc hóa đơn này trong bảng CT_Hoadon.- Bảng nhận hành động xóa: CT_Hoadon- Điều kiện xóa: SoHD = “HD045”- Tạo query theo kiểu Design view, sau đó chọn bảng tham gia truy vấn, chọn

kiểu query: vào menu Query/ Delete query.

Field SoHDTable CTHoadonDelete WhereCriteria “HD045”

3.4. Tạo truy vấn tham số (Parameter query)Khi bạn thường xuyên dùng các câu truy vấn mà mỗi một lần dùng một tiêu chí chọn lọc khác nhau, thay vì việc phải thiết kế lại nhiều lần theo các tiêu chí đó, bạn có thể dùng kiểu Truy vấn tham số. Nếu bạn chạy truy vấn này, Access sẽ yêu cầu bạn nhập tiêu chí lọc thông qua hộp thoại Enter Parameter Values.Ví dụ: Liệt kê các hoá đơn mà một khách hàng mua bất kỳ.Liệt kê các hoá đơn, tính số tiền bán hàng được trong 1 khoảng thời gian nào đó…Để thiết kế được query kiểu này, bạn thực hiện tạo query theo cách thông thường, tuy nhiên ở dòng Criteria của trường bạn muốn thay đổi mỗi khi chạy truy vấn, bạn gõ yêu cầu nhập trong ngoặc vuông [ ]. Sau đó, mỗi khi bạn chạy query thì sẽ xuất hiện hộp thoại như sau:

Access sẽ thực hiện câu truy vấn theo điều kiện mà bạn đã nhập trong hộp thoại trên. Để quy định kiểu dữ liệu cho tham số nhập vào, chọn menu Query/ Parameter, sau đó nhập Tên tham số vào Parameter và nhập kiểu dữ liệu cho tham số đó vào DataType. Bằng cách này bạn có thể tạo ra Query với nhiều tham số khác nhau, phục vụ yêu cầu, mục đích sử dụng của bạn.

37

Page 38: Giao Trinh Access 2003

Microsoft Access

Bản chất Parameter query, cũng chính là một dạng Select query. Hai kiểu truy vấn này chỉ khác duy nhất một điều là điều kiện lọc trong Select query được nhập cố định trong khi thiết kế query. Còn điều kiện lọc trong Parameter query sẽ được nhập vào khi người dùng yêu cầu Access thực hiện câu truy vấn đó. Với Parameter query, khi thiết kế tại dòng Criteria, bạn nhập vào đó biến tham số sẽ nhận giá trị điều kiện khi truy vấn được thực hiện.Ví dụ: Hiển thị thông tin về hoá đơn mua hàng của khách hàng có mã bất kỳ trong tháng bất kỳ. Khi đó

Field SoHD MaKH NgaybanTable Hoadon Hoadon Hoadon… … … … …Criteria Like "*" & [Nhập MãKH] Between [Ngày BĐ] And [Ngày KT]

Criteria trong MaKH có nghĩa bắt đầu bằng 1 số ký tự bất kỳ cộng với giá trị nhập vào tham số [Nhap MaKH], ngày lấy trong khoảng từ [Ngày BĐ] đến [Ngày KT]. Giả sử khi thực hiện truy vấn đó, Access đưa ra cửa số yêu cầu nhập Mã khách hàng và bạn nhập giá trị 1, khi đó biến [Nhap MaKH]=1 ↔ “*1”. Sau đó, Access yêu cầu bạn nhập vào tiếp giá trị ngày bắt đầu và ngày kết thúc, khi đó hai biến lần lượt có giá trị [Ngày BĐ]=1/1/03, [Ngày KT]=1/31/03. Khi đó, truy vấn sẽ thực hiện lọc thông tin mua hàng của khách hàng với mã khách hàng có ký tự cuối cùng là “1” và có hoá đơn mua hàng trong tháng 1. Ta sẽ được kết quả như sau

SoHD MaKH Mahang Soluong Ngayban

HD003 CH001 Vở 48t HH 15 1/2/2003

HD003 CH001 Bút máy Hero 5 1/2/2003

HD003 CH001 Vở 96t HH 10 1/2/2003

HD008 CH001 Mỳ ăn liền Hảo Hảo 5 1/9/2003

HD008 CH001 Vở 48t HH 6 1/9/2003

Trong Parameter query, bạn cũng có thể dùng các ký tự thay thế trong trường chứa tham số có kiểu dữ liệu là Text như Select query thông thường khác. Nếu không dùng các ký tự thay thế này thì điều kiện lọc nhập vào tham số phải có giá trị chính xác và Access chỉ tiến hành tìm các bản ghi có giá trị bằng đúng điều kiện lọc mà bạn đưa vào.Ví dụ: Đếm số lần mua hàng của từng khách hàng ở địa chỉ bất kỳ.

Field MaKH TenKH Diachi SoHDTable Hoadon Khachhang Khachhang HoadonTotal Groupby Groupby Groupby Count… … … … …Criteria Like “*”&[Nhập địa chỉ cần xem]&”*”

Như các bạn thấy, khi đó bạn chỉ cần nhập tham số với giá trị là một xâu ký tự bất kỳ trong giá trị Địa chỉ. Khi đó, Access tiến hành lọc ra tất cả các khách hàng mà

38

Page 39: Giao Trinh Access 2003

Microsoft Access

có địa chỉ chứa xâu ký tự là giá trị của biến tham số đó, rồi gộp nhóm và đếm số hoá đơn theo từng khách hàng. Liệu chăng, bạn có chắc chắn biết được đầy đủ thông tin về địa chỉ của một khách hàng. Và cũng có thể trong thực tế bạn muốn thống kê số lần mua của mỗi khách hàng trong một vùng địa chỉ nào đó,… Lưu ý: Nếu bạn dùng Parameter query thì bạn nên định nghĩa kiểu dữ liệu cho các tham số nhập vào, như vậy sẽ hạn chế được một số trường hợp nhập dữ liệu sai.3.5. Tạo CrossTab Query (Cross – Tabulation)Truy vấn crosstab (truy vấn bảng 2 chiều) dùng để tóm lược dữ liệu và trình bày kết quả theo dạng như một bảng tính. Nó cho phép tổng hợp từ một khối lượng lớn thông tin và trình bày kết quả dưới hình thức dễ đọc hơn các query khác. Nên Crosstab query thường được dùng để tạo dữ liệu phục vụ cho mục đích so sánh hay dự đoán sự phát triển của dữ liệu, mặt khác nó cũng là nền tảng để tạo báo cáo một cách hữu dụng.Crosstab query hiển thị giá trị đã gộp nhóm được từ tập giá trị thực tế (1 trường dùng để gom nhóm) theo chiều dọc bên trái bảng tính và hiển thị giá trị gộp nhóm từ tập giá trị khác (một trường gom nhóm khác) theo chiều ngang ở dòng đầu tiên của bảng tính.Ví dụ: Hiển thị thông tin của các hoá đơn có số từ 1 đến 3.Nếu dùng câu truy vấn thông thường ta được kết quả

SoHD Tenhang Soluong

HD001 Mỳ ăn liền Hảo Hảo 10

HD001 Phở ăn liền Vifon 2

HD002 Bia chai 333 5

HD002 Phở ăn liền Vifon 10

HD002 Rượu Lúa mới 2

HD003 Bút máy Hero 5

HD003 Vở 48t HH 15

HD003 Vở 96t HH 10

Dữ liệu kết quả được trình bày theo chiều dọc, nếu số lượng bản ghi quá nhiều thì bạn khó có cái nhìn tổng thể, mặt khác cũng không có sự so sánh số lượng mua cùng mặt hàng trên các hoá đơn khác nhau.Nếu dùng Crosstab query ta có thể xây dựng bảng dữ liệu như sau

Tenhang HD001 HD002 HD003

Vở 48t HH 15

Vở 96t HH 10

Bút máy Hero 5

Mỳ ăn liền Hảo Hảo 10

Phở ăn liền Vifon 2 10

39C.Tiết

mua của HD001

Tiêu đề dòng

Tiêu đề cột

Các giá trị tính được

C.Tiết mua của HD002

C.Tiết mua của HD003

Page 40: Giao Trinh Access 2003

Microsoft Access

Tenhang HD001 HD002 HD003

Bia chai 333 5

Rượu Lúa mới 2

Ta thấy giá trị của một trường (cụ thể trường Số HĐ), được trình bày làm tiêu đề cho các cột (số cột phụ thuộc vào tập giá trị thực tế của trường đó) và giá trị một trường khác được trình bày tại cột trái nhất làm tiêu đề dòng (tương tự, số dòng phục thuộc vào tập giá trị thực tế của cột đó). Giá trị đưa vào trong bảng phụ thuộc vào giá trị thực tế và tương ứng với giá trị của tiêu đề dòng và tiêu đề cột. Với cách trình bày, bạn dễ dàng so sánh giá trị trên cùng một tiêu chí, chẳng hạn như so sánh số lượng mua của mặt hàng Rượu Lúa mới trên tất cả các hoá đơn, hay xem HD001 mua những mặt hàng nào số lượng bao nhiêu? Hơn nữa bảng dữ liệu gọn nhẹ hơn, dễ đọc và dễ hiểu hơn. Để tạo truy vấn Crosstab có thể dùng Tạo truy vấn bằng Wizards: cách này không cho phép đưa trực tiếp nhiều

trường từ nhiều bảng khác nhau vào truy vấn. Muốn vậy bạn phải tạo trước một query theo cách thông thường chứa tất cả các trường mà bạn muốn đưa vào Crosstab query. Sau đó, tạo Crosstab query thông qua query vừa tạo được ở trên.

Tạo truy vấn bằng Design view: cho phép tạo truy vấn Crosstab trực tiếp từ nhiều bảng khác nhau mà không gặp phải khó khăn theo cách Wizards.

Tuy nhiên, bạn cũng hoàn toàn có thể tạo Crosstab query từ một Select query hoặc Total query khác thông qua cách thiết kế bằng tay (design view).Lưu ý: Bạn chỉ có thể tạo Crosstab query từ Select query, chứ không thể tạo dựa trên một Crosstab query khác. Yêu cầu về cấu trúc của Crosstab query

Chỉ có duy nhất 1 trường làm tiêu đề cột (Column Heading).Có thể có nhiều trường làm tiêu đề dòng (Row Heading).Chỉ có duy nhất 1 trường giá trị (Value).

Cách tạo Crosstab querySau khi đã chọn các bảng tham gia vào query, và chỉ định các trường xuất hiện trong query. Chọn menu Query/ Crosstab query, trong lưới thiết kế xuất hiện thêm dòng

Total và Crosstab. Trong Crosstab query thì mặc định dòng Total, các trường tham gia vào query

đều được tự chọn là GroupBy.

40

Page 41: Giao Trinh Access 2003

Microsoft Access

Chỉ định 1 trường duy nhất làm tiêu đề cột, bằng cách chọn Column Heading tại dòng Crosstab.

Chỉ định trường làm tiêu đề dòng (có thể có 1 hoặc nhiều tiêu đề dòng), bằng cách chọn RowHeading tại dòng Crosstab. Nếu bạn muốn tổng hợp giá trị theo từng dòng, thì bạn đưa trường cần tính toán vào lưới thiết kế và chọn trường đó là RowHeading và tại dòng Total query của trường chọn hàm gộp nhóm mà bạn muốn dùng.

Chỉ định 1 trường duy nhất làm giá trị trong query, chọn Value tại dòng Crosstab. Sau đó, chọn hàm gộp nhóm (nếu cần) tính cho trường giá trị này tại dòng Total.Các hàm gộp nhóm hay xây dựng biểu thức tính toán cho trường này làm tương tự như trong Total query.

Gõ điều kiện chọn lọc các bản ghi tham gia vào crosstab query tại dòng Criteria, dòng Or,… (Chú ý: việc lọc các bản ghi trước và sau khi gộp nhóm tính toán sẽ mang lại giá trị khác nhau ).

Ví dụ: với ví dụ đưa ra ở trên ta có thiết kế như sau

Với truy vấn Crosstab, bạn có thể can thiệp nhiều vào hình thức trình bày của tiêu đề cột trong bảng kết quả. Và mặc định, tiêu đề cột được sắp xếp theo vần ABC hay theo thứ tự số, thứ tự ngày. Tuy nhiên, bạn có thể thay đổi lại tính chất mặc định này bằng cách thiết lập lại thuộc tính Column Headings của truy vấn. Các tiêu đề cột này được gõ chính xác như giá trị xuất hiện trong kết quả truy vấn tại thuộc tính Column Headings, và theo đúng thứ tự mà bạn dự định, các giá trị cách nhau bởi dấu “;”.

41

Trường giá trị, có thể dùng hàm gộp nhóm để tính giá trị, hoặc có thể xây dựng 1 trường tính toán mới dựa trên các trường khác. Nhưng nếu trong đó lại dùng hàm gộp nhóm thì nhớ chọn Expression ở dòng Total

Các trường được chỉ định làm Tiêu đề dòngTiêu đề cột

Nếu muốn sắp xếp (tăng/giảm) theo trường này thì chọn ở đây

Gõ điều kiện để lọc các bản ghi sau khi đã Group by các bản ghi

Nếu muốn lọc các bản ghi theo điều kiện này trước khi Group by các bản ghi, phải chọn Where ở dòng Total

Page 42: Giao Trinh Access 2003

Microsoft Access

Ví dụ: Tính số lượng hàng bán trên từng loại hàng theo từng hoá đơn và tổng số tiền của mỗi hoá đơn đó. Với yêu cầu trên, bạn có thể

chọn Loại hàng làm tiêu đề cột, Số hoá đơn làm tiêu đề dòng, Giá trị đưa vào Crosstab là số lượng được tính tổng, Tiền mỗi hoá đơn: tổng của số lượng * đơn giá.

Ta sẽ có thiết kế như sauField: Maloai SoHD Soluong TienHD:[Soluong]*[Dongia]Table: Loaihang CT_Hoadon CT_HoadonTotal: Group By Group By Sum Sum

Crosstab: Column Heading Row Heading Value Row Heading…

Thứ tự các trường trong khi thiết kế của CrossTab query là không quan trọng, nhưng nếu như có nhiều trường làm tiêu đề dòng thì Access vẫn ưu tiên từ trái qua phải trong hiển thị kết quả. Ví dụ trên có kết quả là

SoHD Tien L0001 L0003 L0004 L0005 L0007 L0008

HD001 14,600 10 2

HD002 68,300 10 5 2

HD003 102,500 25 5

Vì lý do phải tính tiền trên từng hoá đơn nên bạn không thể chọn Số hoá đơn làm tiêu đề cột. Và nếu như người ta thay vì yêu cầu tính tổng tiền trên mỗi hoá đơn bằng tổng số tiền hoặc tổng số lượng theo từng loại hàng, thì bạn phải chọn Loại hàng làm tiêu đề dòng. Như vậy thiết kế cho query đó như sau

Field: Maloai SoHD Soluong TongSL:SoluongTable: Loaihang CT_Hoadon CT_Hoadon CT_HoadonTotal: Group By Group By Sum Sum

Crosstab: Row Heading Column Heading Value Row Heading…

kết quả tương ứng với thiết kế đó làMaloai TongSL HD001 HD002 HD003

L0001 127 25

L0003 29 5

L0004 105 10

Các bạn luôn nhớ rằng, Crosstab query chỉ có 1 trường làm Tiêu đề cột, chỉ có 1 trường làm giá trị tính toán, nhưng có thể có nhiều trường làm Tiêu đề hàng. Đó là điểm khác biệt giữa Crosstab và PivotTable của Excel.4. Xây dựng báo cáo – Report

42

Page 43: Giao Trinh Access 2003

Microsoft Access

Nếu như query trích rút, tổng hợp dữ liệu từ nhiều bảng khác nhau, và hiển thị dưới dạng bảng thì báo cáo sẽ trình bày dữ liệu nào đó dưới dạng giấy tờ mà bạn có thể in được từ nó. Báo cáo là một dạng trình bày dữ liệu trong cơ sở dữ liệu của bạn theo định dạng có thể in được. Hầu hết thông tin đưa vào báo cáo đều là những nguồn thông tin được lấy từ các bảng, các truy vấn,… và một số thông tin khác được lưu trữ trong chính bản thân báo cáo đó.4.1. Giới thiệu chung Báo cáo là một phương thức hữu hiệu giúp bạn trình bày dữ liệu dưới dạng đầy

đủ và dễ hiểu nhất, nó cho phép tích hợp nhiều hình thức trình bày dữ liệu như hình ảnh, biểu đồ, văn bản,… để làm báo cáo sinh động và ý nghĩa.

Báo cáo dùng trong trường hợp bạn muốn trình bày dữ liệu nhưng không cho phép chỉnh sửa nội dung dữ liệu (Trong truy vấn hay hình thức biểu mẫu bạn có thể thay đổi nội dung dữ liệu).

Báo cáo thường dùng để tổ chức, sắp xếp và trình bày dữ liệu; từ đó được chuyển thông tin đó cho người dùng qua phương tiện in ấn hoặc kết xuất nó ra một trình ứng dụng khác.

Nội dung báo cáo thường là biểu mẫu tính toán, thống kê thông tin được giới hạn trong một thời gian và không gian nào đó.

Cách làm việc của báo cáo: Bạn tạo sự liên kết giữa một báo cáo và các bản ghi nguồn của nó bằng cách dùng những đối tượng đồ hoạ và đối tượng đó được gọi là Control (điều khiển). Các control có thể là

Text box: dùng để hiển thị tên và số liệu được lấy từ nguồn của nó.Label: dùng để hiển thị nhãn, xâu giá trị nào đó lên báo cáoDecorative line: trình bày đồ hoạ để tổ chức dữ liệu và làm cho báo cáo sinh

động hơn.4.2. Tạo báo cáo bằng wizardAccess cho phép tạo báo cáo nhanh chóng và tiện lợi nhờ sự hỗ trợ tối đa của cả hệ thống. Các báo cáo sẽ được lập tự động theo 1 dạng thức mặc định mà hệ thống đã thiết lập sẵn. Tuy nhiên, với kiểu tạo báo cáo tự động này bạn vẫn có thể thay đổi dạng thức của nó, bằng cách can thiệp trực tiếp vào báo cáo ở chế độ thiết kế bằng tay Design view. Bước chuẩn bị trước khi tạo báo cáo

Xác định xem cần báo cáo cái gì: bạn có thể dựa vào yêu cầu, nhu cầu sử dụng của người dùng để chỉ ra mỗi báo cáo cần đến những nội dung gì. Việc thu thập yêu cầu từ người sử dụng có thể thực hiện bằng cách hỏi người dùng hoặc dựa vào những giấy tờ mà người dùng cung cấp.

43

Page 44: Giao Trinh Access 2003

Microsoft Access

Xác định cấu trúc, dạng thức của báo cáo: bạn có thể tự đưa ra cấu trúc báo cáo, hoặc đơn giản là sao chép lại hình thức của một báo cáo trên giấy tờ mà bạn có được.

Xác định dữ liệu để đưa lên báo cáo được lấy từ những nguồn dữ liệu (bảng, truy vấn) nào?

Xác định những dữ liệu được xuất hiện trong báo cáo.Ví dụ: Hiển thị thông tin về tất cả các HĐ dưới dạng báo cáo. Các thông tin cần có trên HĐ như Số HĐ, Ngày, Tên mặt hàng mua, ĐV tính, Số lượng, Đơn giá, Số tiền và Tổng số tiền của từng HĐ. Khi đó bạn sẽ xác định được Cái cần báo cáo, hay nói cách khác cái cần giấy tờ khoá ở đây là thông tin của

các Hoá đơn bán hàng. Cấu trúc trình bày của báo cáo: không có cấu trúc yêu cầu, nên bạn có thể tự

xác định hình thức của báo cáo đó. Dữ liệu đưa lên báo cáo được lấy từ các bảng CT_Hoadon, Hoadon, Hanghoa.

Dưới đây là báo cáo cần tạo ra theo yêu cầu trên

Khi đó, nguồn dữ liệu cho báo cáo được xác định như sauCách 1

Tên hàng, ĐV tính và Đơn giá được lấy từ bảng Hanghoa,

44

Tiêu đề đầu Báo cáo

Tiêu đề đầu mỗi trang báo cáo

Chi tiết trong báo cáo

Tiêu đề cuối của Báo cáo

Tiêu đề cuối mỗi trang báo cáo

Page 45: Giao Trinh Access 2003

Microsoft Access

Số lượng được lấy từ bảng CT_Hoadon, Số tiền = Số lượng * Đơn giá Tổng tiền trên HĐ = bằng tổng số tiền mua trong HĐ đó, hoặc có thể được

lấy từ query tính tiền trên mỗi HĐ (query này có thể được tạo ra từ trước).Cách 2

Từ yêu cầu báo cáo ở trên, bạn tạo 1 query chứa đầy đủ các thông tin cần lấy:SoHD Ngayban Tenhang DVT Dongia Soluong sotien

HD001 1/1/2003 Mỳ ăn liền Hảo Hảo gói 1,100 10 11,000

HD001 1/1/2003 Phở ăn liền Vifon gói 1,800 2 3,600

HD002 1/1/2003 Phở ăn liền Vifon gói 1,800 10 18,000

HD003 1/2/2003 Vở 48t HH quyển 1,500 15 22,500

HD003 1/2/2003 Bút máy Hero chiếc 9,200 5 46,000

HD004 1/3/2003 Mỳ ăn liền Hảo Hảo gói 1,100 5 5,500

HD004 1/3/2003 Bút máy Hero chiếc 9,200 2 18,400

HD004 1/3/2003 Phở ăn liền Vifon gói 1,800 15 27,000

Sau đó báo cáo sẽ lấy dữ liệu nguồn từ query này. Cách này tiện lợp hơn cách ở trên, vì bạn đã xác định các dữ liệu cần đưa vào báo cáo, và đã tổng hợp trên 1 truy vấn. Do đó, bạn không mất nhiều thời gian trong việc lựa chọn thông tin từ các bảng/ truy vấn chứa dữ liệu.

Các bước tạo báo cáo Chọn nút Report ở dưới phần Object nằm phía bên trái hộp thoại Database Chọn Create Report by Using wizard, xuất hiện hộp thoại Report wizard Chọn tên bảng/truy vấn làm nguồn dữ liệu của báo cáo trong hộp combo có

tên Tables/Queries Kích đúp chuột vào tên các trường cần xuất hiện ở Report trong hộp

Available Fields (bên trái hộp thoại) và tên các trường mà các bạn đã chọn sẽ xuất hiện trong hộp Selected Fields.

Sau khi đã chọn xong các trường cần có trong Report, chọn Next. Ở bước tiếp theo, chọn cách hiển thị dữ liệu của Report theo thứ tự dữ liệu

của bảng nào (ở đây sự phân bổ dữ liệu trình bày trong báo cáo chú trọng việc ưu tiên dựa theo một trong số các bảng dữ liệu tham gia vào báo cáo), Ví dụ gom theo Số HĐ, bạn chọn vào By Hoadon, chọn Next.

Chọn cách gom nhóm dữ liệu theo trường nào (thứ tự ưu tiên trong Report), chọn Next.

Chọn dữ liệu được sắp xếp tăng/giảm theo trường nào. Nếu muốn tính hàm gộp nhóm trên các trường nào, chọn Summary

options… xuất hiện hộp thoại Summary Option. Chọn Hàm gộp nhóm (Sum, Avg, Max, Min) trên các trường dữ liệu số.

45

Page 46: Giao Trinh Access 2003

Microsoft Access

Nếu muốn chọn cách hiển thị giá trị gộp nhóm: Chỉ giá trị tổng (Only Summary); hiển thị thông tin chi tiết và giá trị tổng (Detail and Summary), chọn OK khi thiết lập xong các tuỳ chọn của Tính tổng gộp nhóm.

Chọn Next trong hộp thoại Report Wizard. Chọn cách trình bày báo cáo, bằng cách chọn các nút Radio Button đại diện

cho các cách trình bày báo cáo có sẵn, rồi chọn Next. Chọn mẫu Template xây dựng sẵn cho báo cáo, chọn Next. Đặt tiêu đề cho Báo cáo của bạn bằng cách gõ Tiêu đề vào mục What title

do you want for your report, chọn Finish. Lưu ý:

Nếu muốn quay lại để sửa thiết kế Wizard trong báo cáo chọn nút Back. Giả sử mẫu báo cáo tạo bằng Wizard không theo yêu cầu của bạn, bạn có thể

chọn nút Design để chọn chế độ làm việc thiết kế Report bằng tay. Để xem Report trong khi thiết kế, chọn nút Preview. Để thêm các đối tượng đồ hoạ khi trình bày báo cáo như Đường kẻ, hình

ảnh,… chọn View/Toolbar/Toolbox, sau đó chọn đối tượng cần thêm vào báo cáo.

4.2. Cấu trúc của báo cáoThông tin trong báo cáo được chia thành các phần khác nhau, ví dụ với một báo cáo đã được thiết kế và được mở ở chế độ Design View như sau:

46

Chi tiết thiết kế: bao gồm các đối tượng sẽ có trong mỗi phần của báo cáo

Page 47: Giao Trinh Access 2003

Microsoft Access

Khi mở Báo cáo dưới chế độ Design view, các phần trong báo các sẽ được bắt đầu bằng một thanh ngang trên đó có ghi tên thành phần (Section) của báo cáo ở ngay dưới nó. Report Header: Tiêu đề đầu báo cáo chỉ xuất hiện một lần duy nhất khi bắt

đầu một báo cáo. Bạn có thể đặt các đối tượng mà bạn muốn xuất hiện ở phần đầu tiên của báo cáo, ví dụ Tiêu đề báo cáo, Biểu tượng (Logo) của công ty, Ngày in Báo cáo,… Tiêu đề đầu báo cáo sẽ được in trước tiêu đề đầu trang ở ngay trang đầu tiên của báo cáo.

Page Header: Tiêu đề đầu trang xuất hiện tại trên đầu của tất cả các trang trong báo cáo. Người ta hay dùng Tên của các cột xuất hiện trong báo cáo ở phần tiêu đề đầu trang, để tên các cột này được lặp lại ở đầu tất cả các trang trong báo cáo.

SoHD Header: Phần tiêu đề nhóm mà bạn sẽ gom nhóm dữ liệu, ở đây xuất hiện dữ liệu của trường mà bạn đã sử dụng để phân nhóm dữ liệu.

Detail: phần chi tiết chứa phần dữ liệu, các số liệu chính của báo cáo. Phần này cho phép lặp lại các dòng chi tiết trong báo cáo tuỳ theo dữ liệu nguồn.

SoHD Footer: Tiêu đề cuối mỗi nhóm dữ liệu, ở đây bạn có thể để số liệu tính tổng phụ trên nhóm dữ liệu đó.

Page Footer: Tiêu đề cuối trang được lặp lại ở phần cuối của tất cả các trang trong báo cáo. Ở phần này, bạn nên đánh số thứ tự của trang báo cáo.

Report Footer: Tiêu đề cuối báo cáo chỉ xuất hiện một lần duy nhất tại cuối báo cáo. Người ta hay đặt trong phần này số liệu tính tổng giá trị của cả báo cáo hay các dòng nội dung giúp cho báo cáo hoàn chỉnh. Chẳng hạn như Tên cùng chữ ký người lập hoặc người có quyền, nghĩa vụ với báo cáo đó. Tiêu đề cuối báo cáo là phần cuối cùng trong khi thiết kế báo cáo. Tuy nhiên khi in phần này sẽ được in ngay khi phần dữ liệu chi tiết và phần tổng phụ của các phần gộp nhóm đã được in xong. Do đó Tiêu đề cuối báo cáo sẽ được in trước phần Tiêu đề cuối trang.

Các đối tượng có thể đưa vào các phần khi thiết kế báo cáoNếu như việc dùng Report Wizard vẫn không mang lại cho bạn một báo cáo như ý muốn, thì bạn có thể chuyển sang chế độ thiết kế Design View để có thể sửa báo cáo theo yêu cầu của bạn. Khi đó bạn có thể thêm, sửa, bớt hoặc xoá các đối tượng có trong phần Thiết kế báo cáo. Label: dùng để hiển thị một tiêu đề, một dòng văn bản nào đó lên trên báo

cáo. Tuy nhiên, label không thể hiển thị giá trị tính toán được của một biểu thức hay giá trị của một trường trong CSDL.

47

Page 48: Giao Trinh Access 2003

Microsoft Access

Text box: có thể hiển thị dữ liệu của một trường của một bảng/ truy vấn nào đó trong CSDL của bạn hoặc giá trị của một công thức tính toán được trên báo cáo.

Để thêm đối tượng vào báo cáo, bạn chỉ cần chọn đối tượng cần thêm trong Toolbox, rồi kéo thả vào thành phần tương ứng trong Báo cáo.

Chú ý: Label có thể được gắn liền với một Text box, và Label này sẽ là tên trường mà giá trị của trường đó được hiển thị trong Text box.

Ví dụ: Với mẫu báo cáo chỉ ra ở các trang trước, giả sử báo cáo đó bạn muốn thêm trường Giảm giá, mỗi hoá đơn đều có ghi tổng số tiền giảm giá trên hoá đơn đó. Sau đó hiển thị tổng tiền giảm giá, và số tiền doanh thu còn lại sau khi giảm giá…

Với Giảm giá được tính: Nếu mua với số lượng từ 10 trở lên thì giảm 3% giá trị hàng mua. Khi đó, báo cáo của bạn phải thêm một trường là Giảm giá. Cách làm như sau: Nếu như bạn xây dựng báo cáo lấy dữ liệu từ một query, thì bạn có thể thiết

kế lại query đó, cụ thể là thêm trường Giamgia với công thức tính ở trên. Sau đó vào báo cáo ở chế độ Design. Thêm Label có nội dung “Giảm giá” vào Section Page Header Thêm TextBox vào Section Detail, với thuộc tính Control Source chọn

trường Giamgia Thêm TextBox vào Section SoHD Footer, với thuộc tính Control Soure

là công thức =sum([Giamgia]) Thêm 2 Label có nội dung lần lượt “Tổng tiền giảm giá” và “Tổng tiền

còn lại sau khi trừ giảm giá” vào Section Report Footer. Thêm 2 Textbox vào Section Report Footer, với thuộc tính Control

Source lần lượt là các công thức=Sum([Giamgia]) và =Sum([Thanhtien]) - Sum([Giamgia])

Nếu như bạn không muốn quay trở lại thay đổi Query nguồn như cách ở trên, bạn có thể thiết kế ngay trên báo cáo. Và trường Giamgia đó sẽ là dữ liệu được lưu trong phần thiết kế báo cáo, chứ không lưu trong query theo cách trên. Tuy nhiên, cách làm này đôi khi sẽ gây nhiều khó khăn cho bạn, nên cách tốt nhất bạn hãy làm theo cách chỉ dẫn ở trên.

Thêm hoặc bỏ Gom nhóm dữ liệu (Sorting & Grouping)Bạn có thể thêm hoặc loại bỏ Việc gom dữ liệu theo một trường nào đó, bằng cách chọn View/ Sorting and Grouping, xuất hiện hộp thoại như sau

48

Nút lựa chọn tên trường cần gom nhóm

Danh sách tên trường nhóm dữ liệuDanh sách tên các trường nhóm dữ liệu

Tương ứng với trường nhóm dữ liệu đó có hiển thị

Tiêu đề đầu Tiêu đề cuối

của mỗi nhóm giá trị

Page 49: Giao Trinh Access 2003

Microsoft Access

Nếu muốn thêm trường nhóm dữ liệu Bấm chuột phải vào nút bên trái tại cột Field/Expression của một dòng

mới chọn Tên trường cần gom nhóm trong danh sách trường của dữ liệu nguồn. Sau đó chỉ định một số thuộc tính (nếu có) của trường nhóm dữ liệu mới

trong phần Group Properties Group Header: Có muốn hiển thị tiêu đề đầu của nhóm không???Group Footer: Có muốn hiển thị tiêu đề cuối của nhóm mới không?Group On: Nhóm dữ liệu dựa trên cái gì, chọn Each Value.

Nếu muốn bớt đi một trường nhóm dữ liệuChỉ cần chỉ định trường nhóm dữ liệu cần bỏ, sau đó chọn Delete.

Thuộc tính của đối tượngMỗi một đối tượng đều có thể có một số thuộc tính để mô tả cho đối tượng đó, ví dụ như: Tên của đối tượng, mầu sắc cho dữ liệu hiển thị bên trong đối tượng đó, kích thước của đối tượng, hay các thuộc tính căn chỉnh dữ liệu khi hiển thị. Để thay đổi thuộc tính nào đó của một đối tượng, các bạn chọn đối tượng đó bằng cách nhấp phím trái chuột vào đối tượng, sau đó chọn menu View/ Properties (hoặc bấm phải chuột vào đối tượng và chọn Properties trong menu nhanh).Dưới đây là một số thuộc tính của các đối tượng này: Label

Name: Tên của đối tượng (giống như Field Name khi định nghĩa bảng)Caption: Tên hiển thị khi chạy báo cáo đó.Back color: quy định mầu nền cho đối tượng.Fore color: quy định mầu cho nội dung của đối tượng.Font name, size, weight, italic,…: Quy định kiểu, cỡ, dáng, độ đậm cho nội

dung của đối tượng. Text box

Name: Tên đối tượng

49

Page 50: Giao Trinh Access 2003

Microsoft Access

Control sourse: Chỉ rõ dữ liệu hiển thị được lấy từ trường nào (tên trường), nếu là giá trị tính toán được thì hiển thị công thức tính toán cho giá trị đó.

Format: Định dạng kiểu hiển thị cho giá trị kiểu số, ngày tháng,…Decimal place: quy định số các chữ số đằng sau dấu chấm thập phân.Một số thuộc tính khác: tương tự như thuộc tính của đối tượng Label.

Trình bày báo cáoViệc trình bày báo cáo này đơn giản chỉ làm cho báo cáo bạn thiết kế thêm sinh động, rõ ràng hơn. Mặc dù đây không phải là phần quan trọng khi thiết kế báo cáo, nhưng không phải vì thế mà chúng ta bỏ qua. Báo cáo của bạn sẽ gây chú ý cho đối tượng quan tâm đến số liệu hơn nếu như nó được trình bày đẹp mắt. Để báo cáo thêm sinh động và rõ ràng bạn có thể đưa thêm các đối tượng

hình vẽ vào trong báo cáo. Các đối tượng này có thể được kéo thả vào vị trí mà bạn định chèn thêm đối

tượng hình vẽ trong báo cáo. Để di chuyển vị trí một đối tượng bạn phải chọn đối tượng đó, sau đó bấm

giữ phím trái chuột và di chuyển đối tượng đó đến vị trí mới rồi thả phím trái chuột. (Có thể dùng các phím mũi tên trên bàn phím để di chuyển đối tượng, các bạn phải giữ phím Shift trong khi bấm phím mũi tên chỉ hướng di chuyển cho đối tượng).

Nếu muốn thay đổi thuộc tính như độ rộng, chiều cao, mầu nền,… của đối tượng bạn chỉ cần chọn đối tượng, sau đó bấm phải chuột vào đối tượng và chọn vào Properties ở menu nhanh hoặc chọn nút biểu tượng Properties trên thanh Toolbar.

Cách sao chép các đối tượng được thực hiện tương tự thao tác sao chép cắt dán trong các chương trình ứng dụng khác (Copy: Ctrl+C; Paste: Ctrl+V; Cut: Ctrl+X).

Chú ý: Khi đã trình bày, thiết kế xong báo cáo, bạn có thể in ấn báo cáo từ trong Access và lưu trữ mẫu báo cáo này. Tuy nhiên, bạn cũng có thể kết xuất báo cáo này sang các chương trình ứng dụng khác như MS Word, MS Excel. Để làm được việc này bạn chọn nút Publish It with MS Word hoặc Analyze It with MS Excel trên thanh công cụ. Có thể tạo báo cáo Parameter bằng cách như sau:

Tạo truy vấn Parameter chứa những dữ liệu cần thiết có trong báo cáo. Tạo Báo cáo dựa trên dữ liệu của Parameter query ở trên.

ứng dụng: In hoá đơn mua bất kỳ cho một khách hàng có mẫu như sau:

50

Page 51: Giao Trinh Access 2003

Microsoft Access

5. Thiết kế và tạo form5.1 Giới thiệu chungNếu như Report để tạo ra các báo cáo thì Form được dùng để nhập dữ liệu cho các bảng, tìm kiếm dữ liệu, nhập dữ liệu điều kiện để in báo cáo, …Form là giao diện để người dùng làm việc với ứng dụng. Tại sao cần tạo form thay vì làm việc trực tiếp với DL?

Khi người dùng nhập dữ liệu qua form thì có thể kiểm tra được các ràng buộc trên dữ liệu nhập vào (bằng cách viết lệnh) và hướng dẫn để người dùng nhập vào dữ liệu đúng. Điều này làm cho việc nhập dữ liệu chính xác hơn và đúng yêu cầu. Việc nhập dữ liệu đúng đóng vai trò hết sức quan trọng trong việc tạo ra các báo cáo đúng và có giá trị.

Người dùng làm việc với ứng dụng thông qua form nên CSDL và mã lệnh của ứng dụng là hộp đen đối với người dùng. Chính vì thế họ không thể xóa hay sửa dữ liệu khi không được phép.

Form là đối tượng đóng vai trò như chất liên kết các đối tượng khác như bảng, query, report hay thậm chí cả các form khác lại với nhau nhằm tạo nên một ứng dụng hoàn chỉnh.

Nếu form được thiết kế đúng luồng nghiệp vụ thì sẽ tạo thuận lợi, dễ sử dụng đối với người dùng.

5.2 Thiết kế formYêu cầu khi thiết kế form:

Thân thiện với người sử dụng

51

Page 52: Giao Trinh Access 2003

Microsoft Access

Màu sắc: không quá nhiều màu, nên dùng màu giống với giao diện hệ điều hành đang dùng, đổi màu để nhấn khi cần thiết, …

Bố cục: cân đối về kích thước, hợp lý về nghiệp vụ, … Tiện dụng Với các form nhập dữ liệu, không bắt phải gõ nhiều, có các hỗ trợ để nhập

dữ liệu nhanh, chính xác. Liên kết giữa các form đúng nghiệp vụ.

Mỗi form ứng với một nghiệp vụ cụ thể. VD: quản lý hàng thì trên form QLBH cần cho phép: thêm hàng mới, sửa

đổi thông tin một hàng đã có, xóa (hạn chế), navigate (duyệt) danh sách hàng, …

Trên form có thể có liên kết tới các form khác hoặc report phục vụ nghiệp vụ của form.

VD form QLBH có thể có nút lệnh cho phép xem báo cáo về các hh theo từng loại hàng, hàng bán chạy nhất, …

5.3 Công cụ thiết kế form

5.3.1 Các đối tượng trên form

Selector và Wizard: Label:

Text box:

Combo box: Sub form/report:

Command button:

Option group:

5.3.2 Các thuộc tính của form

52

Scroll bar

Record selector

Navigation button

Page 53: Giao Trinh Access 2003

Microsoft Access

Default view: kiểu hiển thị mặc định của form: single form, continuous form, data sheet, pivot table, pivot chart.

Scroll bars: khi form có nhiều dữ liệu hay nhiều đối tượng thì có dùng thanh cuộn không (both, neither, horizontal only, vertical only)

Record selector: ký hiệu đánh dấu bản ghi (yes/no) Navigation button: các nút duyệt bản ghi (yes/no)

5.4 Các kiểu form và cách tạo Form nhập DL (của các nghiệp vụ chỉ liên quan đến 1 bảng hay 2 bảng có

quan hệ 1-n) Form lọc DL Form nhập DL điều kiện để in báo cáo 2 cách view form:

Pivot table Pivot chart

5.4.1 Form nhập DL (của các nghiệp vụ chỉ liên quan đến 1 bảng)Loại form này thường dùng để quản lý các đối tượng trong hệ thống một cách độc lập. VD quản lý hàng hóa, quản lý khách hàng, quản lý nhân viên, … Form này thường cho phép người dùng nhập dữ liệu, thêm, sửa xóa các bản ghi, duyệt qua

53

Click trái chuột vào đây -> chọn Properties để hiện thị hộp thoại các thuộc tính của form như sau:

Page 54: Giao Trinh Access 2003

Microsoft Access

các bản ghi và có thể có các nút lệnh cho phép hiển thị ra các báo cáo liên quan đến nghiệp vụ quản lý đối tượng. VD trên form quản lý khách hàng có thể có nút lệnh cho phép hiển thị danh sách khách hàng theo bảng chữ cái, hiển thị danh sách khách hàng theo quận, thành phố, …

Để tạo một form quản lý hàng hóa như trên ta làm theo các bước sau: Tạo form bằng wizard:

Chọn Create form by using wizard Table/query: chọn bảng Hanghoa, Selected fields: chọn tất cả các trường. Chọn kiểu layout: columnar Chọn kiểu form: standard Đặt tên form: f_Hanghoa -> Finish.

Chỉnh sửa form bằng tay:Form sẽ được mở ra để xem hoặc nhập dữ liệu. Để form có được giao diện đẹp hơn, tiện dụng hơn bạn cần phải chỉnh sửa một chút: tăng kích thước, mầu sắc, thay đổi bố cục, …Để làm được việc này bạn hãy mở form ở chế độ Design.

Chọn tất cả các label -> Format: Font size: 14, Font color: blue, thay đổi kích thước cho phù hợp.

Với mỗi label: Caption: gõ lại tên nhãn bằng tiếng việt có dấu. Chọn tất cả các text box, và combo box, các đối tượng để nhập dữ liệu ->

Format: Font size: 14, thay đổi kích thước cho phù hợp. Form properties: Default view: single form, Caption: QL Hàng Hóa, Record

selectors: No.

5.4.2 Form nhập DL (của các nghiệp vụ chỉ liên quan đến 2 bảng có quan hệ 1-n)Form này thường dùng để quản lý 2 đối tượng (bảng) có quan hệ 1-n với nhau. Trong form này người dùng có thể nhập dữ liệu vào 2 bảng cùng lúc.

54

Page 55: Giao Trinh Access 2003

Microsoft Access

Với loại form này, bảng đầu 1 thường ở form chính, bảng đầu nhiều ở sub form. Trong form trên, bảng Loaihang ở đầu 1, là nguồn của form chính; bảng Hanghoa ở đầu nhiều, là nguồn của subform. Để tạo form trên ta làm như sau:Bước 1: tạo subform: subform cũng là một form bình thường nhưng thường được thiết kế theo hướng phù hợp để đưa vào form khác. Tạo form bằng wizard:

Chọn Create form by using wizard Table/query: chọn bảng Hanghoa, Selected fields: chọn tất cả các trường. Chọn kiểu layout: tabular Chọn kiểu form: standard Đặt tên form: f_Loai_hang_sub. Finish.

Chỉnh sửa form ở chế độ Design: Label: Font size: 12, Font weight: bold, Caption: gõ tiếng việt có dấu. Các

label đặt ở phần Form Header -> chỉ hiển thị 1 lần, giống như tiêu đề của bảng.

Text box: Font size: 12. Các text box đặt ở phần Details -> hiển thị liên tiếp tùy vào số bản ghi. Chú ý: để các bản ghi hiển thị liên tiếp nhau giống như bảng thì các text box phải đặt sát lên thanh Details, thanh Form Footer kéo lên gần sát các text box (xem hình).

55

Page 56: Giao Trinh Access 2003

Microsoft Access

Form properties: Default view: continuous form, Record selectors: No.

Bước 2: tạo form chính: Tạo form bằng wizard:

Table/query: chọn bảng Loaihang, Selected fields: chọn tất cả các trường. Chọn kiểu layout: Column Chọn kiểu form: standard Đặt tên form: f_Loai_hang.

Mở form ở chế độ Design: Label: Font size: 12, bold, Caption: tiếng việt có dấu. Text box: Font size: 12. Kéo thanh Form footer xuống để tạo không gian cho subform. Bố trí vùng

làm việc sao cho có thể nhìn thấy cùng lúc 2 hộp thoại Design form và Database (đang hiển thị các form).

Chọn và kéo thả subform f_Loai_Hang_sub vào form chính. Form properties: Default view: single form, Record selectors: No. Subform properties: Link child fields: Loaihang, Link master field: Maloai.

Tính chất này cho phép hiển thị nội dung của subform tùy theo giá trị trong trường Maloai ở form chính. Khi form chính và subform có quan hệ 1-n thì Access sẽ tự xác định 2 thuộc tính này thông qua trường khóa chính và khóa ngoại. Trong các trường hợp khác, bạn phải xác định các thuộc tính này để có hiệu ứng như mong muốn.

5.4.3 Form lọc dữ liệu Loại form này không dùng để nhập dữ liệu mà dùng để hiển thị dữ liệu theo điều kiện nào đó, hay nói cách khác là tìm kiếm dữ liệu. Trong form lọc dữ liệu hàng hóa theo loại hàng, khi bạn chọn một loại hàng trong hộp combo thì phía dưới sẽ hiển thị ra các mặt hàng thuộc loại hàng đó.

56

Page 57: Giao Trinh Access 2003

Microsoft Access

Để tạo form này ta làm như sau:Bước 1: Tạo parameter query để hiển thị thông tin về các hàng hóa thuộc một loại hàng cho trước. (xem hình). Tên form là: f_Filter_Hang_by_Loai. Đặt điều kiện loại hàng sẽ là loại hàng được chọn trong hộp combo của form. Phần điều kiện gõ tên của hộp combo: cbo_maloai.Bước 2: Tạo subform hiển thị thông tin về các hàng hóa thuộc loại hàng được chọn trong hộp combo với nguồn là parameter query vừa tạo. Cách tạo subform giống như tạo subform trong form trên.

Bước 3: Tạo một form mới bằng chế độ Design, đặt tên là f_Filter_Hang_by_Loai. Trong phần Detail:

57

Page 58: Giao Trinh Access 2003

Microsoft Access

Tạo một hộp combo có danh sách là tất cả các loại hàng, đặt tên là cbo_maloai. Điểm mấu chốt của loại form này là tên trong vùng điều kiện ở query phải trùng với tên của hộp combo trong form chính. Để tạo hộp combo này ta làm như sau: Chọn combo box trên Toolbox, vẽ vào phần Detail của form chính. Chú ý: khi bạn chọn combo box trên Toolbox thì phải đảm bảo rằng 2 biểu

tượng phải luôn sáng để mỗi khi thêm đối tượng mới vào form thì sẽ làm theo wizard.

“I want the combo box to lookup the values in a table or query” -> Next. Chọn bảng Loaihang -> Next. Chọn các trường muốn hiển thị trong hộp combo -> Next. Bỏ tick chọn “Hide key column”-> Next. Label của combo: “Hãy chọn một loại hàng:” -> Finish. Click phải chuột vào combo box vừa tạo, chọn Properties: Name:

cbo_maloai, Column count: 2, Column width: 0.8”; 1”, Font size: 12, Bound column: 1.

Chú ý: combo box này là Unbound, tức là không liên kết tới một trường nào cả, Control source để trống.

Chọn Properties của label đi liền với combo box: Font size: 14. Thu xếp phần làm việc để có thể nhìn thấy đồng thời hộp thoại Design và

Database Click trái chuột vào form f_Filter_Hang_by_Loai, kéo và thả vào phía dưới hộp

combo, trong phần Detail.

5.4.4 Pivot table viewĐây là một loại báo cáo động. Người dùng có thể hiển thị dữ liệu theo điều kiện mong muốn.

58

Page 59: Giao Trinh Access 2003

Microsoft Access

Bước 1: Tạo Total query hiển thị tổng doanh thu của từng mặt hàng, theo từng loại hàng và theo từng tháng. Đặt tên là q_analysis.

Bước 2: Tạo form f_sales_analysis1 bằng wizard với nguồn là q_analysis, kiểu layout bất kỳ. Bước 3: Mở form ở chế độ Pivot table view:

59

Page 60: Giao Trinh Access 2003

Microsoft Access

Kéo thả các trường vào các vị trí tương ứng: Filter Fields: trường có các giá trị là điều kiện để đặt lọc. Column Fields: trường có các giá trị là tiêu đề cột. Row Fields: trường có các giá trị là tiêu đề dòng. Total or Detail Fields: trường tính toán

5.4.5 Pivot chart view

Bước 1: tạo query (ở đây sẽ dùng luôn q_analysis vừa tạo)Bước 2: Tạo form f_sales_analysis1 bằng wizard với nguồn là q_analysis, kiểu layout bất kỳ.

60

Page 61: Giao Trinh Access 2003

Microsoft Access

Bước 3: Mở form ở chế độ Pivot chart view:

Kéo và thả trường Tong doanh thu vào phần dữ liệu của biểu đồ. Click phải chuột vào Axis Title dọc, chọn Properties: Format: Caption:

Doanh thu, đây là tên trục tung. Làm tương tự với Axis Title ngang, để điền tên trục hoành là Tháng.

Click vào biểu tượng này trên thanh công cụ để hiển thị phần chú thích của biểu đồ (Legend).

5.4.5 Form nhập dữ liệu điều kiện để in báo cáo

Bạn chọn một loại hàng muốn xem báo cáo trong hộp combo. Click vào nút Preview Report, bạn sẽ thấy một báo cáo như sau:

61

Page 62: Giao Trinh Access 2003

Microsoft Access

Bước 1: Tạo báo cáo theo mẫu. Tạo sub report: hiển thị tổng doanh thu của từng mặt hàng

Tạo report bằng chế độ Design:

Record source: Maloai, Tenhang, Tongdoanhthu từ bảng q_sales_by_hang. Đặt tên: r_sales_by_loai_sub.

Tạo report r_sales_by_loai bằng Design: Record source: Maloai, Tenloai trong bảng Loaihang với điều kiện Maloai = [Forms]![f_sales_by_Loai]![cbo_MaLoai]. Sau đó trình bày theo mẫu sau:

62

Page 63: Giao Trinh Access 2003

Microsoft Access

Text box Maloai không dùng để hiển thị dữ liệu mà dùng để làm trường liên kết lọc dữ liệu cho subreport và chart.

Subreport: Source Object: r_sales_by_hang_sub; Link child field: Maloai; Link master field: Maloai.

Chart wizard: Insert Chart -> Chọn nguồn dữ liệu của biểu đồ: q_sales_by_hang -> Fields

for chart: all -> Type: bar chart -> Kéo và thả các trường thích hợp vào vị trí trục tung, trục hoành và dữ liệu -> Chọn trường link (kết nối) dữ liệu giữa

63

Label: Font: Arial, 20, Bold.

Line: Border: style: solid, color: ghi sẫm, width: 3pt.

Line: Border: style: solid, color: ghi sẫm, width: 3pt.

Text box: Control source: Tenloai, Font: Arial, 16, Bold.

Text box: Control source: ="( " & Date() & " )" Bold.

Text box: Control source: Maloai, Format: visible: No

Page 64: Giao Trinh Access 2003

Microsoft Access

report và chart: Maloai -> Title: chart_sales_by_hang -> No, I don’t display a legend (phần chú thích) -> Finish.

Sau khi Insert xong biểu đồ hoặc trong chế độ Design, biểu đồ của bạn có thể không hiển thị dữ liệu thực tế như bạn muốn. Đừng lo lắng. Biểu đồ sẽ hiển thị đúng dữ liệu khi bạn chuyển sang chế độ Print Preview.

Để điều chỉnh các thuộc tính của biểu đồ: click đúp chuột vào biểu đồ -> click phải chuột vào cùng trắng trong biểu đồ (Chart area), chọn Chart Option hoặc trên thanh menu chọn Chart/ Chart Option. Đến đây thao tác giống như phần biểu đồ trong MS Word: Chart title: Doanh thu theo mặt hàng, Category (X) axis: Mặt hàng, Value (Y) axis: Doanh thu.

Bước 2: Tạo form f_sales_by_loai bằng Design view. Tạo combo box theo mẫu. Tạo nút lệnh, để khi click vào thì sẽ hiện ra báo cáo doanh thu của loại hàng

chọn trong combo box. Chọn Command button trên Toolbox rồi vẽ vào vị trí mong muốn trong

phần Detail. Category: Report Operations, Action: Preview Report -> Next Chọn report sẽ mở ra. Text: Preview Report. Đặt tên cho nút lệnh: cmd_preview.

5.4.6 Form menuForm dạng menu là form chỉ có các nút lệnh cho phép mở ra các form khác theo một nghiệp vụ nào đó (xem cách tạo nút lệnh ở loại form trên). VD sau là form menu trong ứng dụng Northwind sample của Access.

64

Page 65: Giao Trinh Access 2003

Microsoft Access

5.4.7 Form sử dụng option group

65

Page 66: Giao Trinh Access 2003

Microsoft Access

Bước 1: Tạo form f_sales_analysis_opt_gr bằng chế độ Design.Bước 2: Tạo Option group:

Chọn biểu tượng trên thanh công cụ. Thực hiện theo các bước của wizard:

Yes, the default choice is: Doanh thu theo loại hàng. Next. Kiểm tra lại giá trị của mỗi lựa chọn: Pivot table: 1, Pivot chart: 2, Doanh

thu theo loại hàng: 3. Next. Type of controls: Option buttons, style mặc định. Next. Caption for option group: Hãy chọn loại báo cáo muốn xem! Finish. Chọn các label của Option group và chỉnh lại: Font: size, weight và vị trí.

66

Page 67: Giao Trinh Access 2003

Microsoft Access

Bước 3: Tạo nút lệnh để mở form tương ứng với lựa chọn trong Option group Frame1.

Tạo nút lệnh để mở form f_sales_analysis1 bằng wizard. Click phải chuột vào nút lệnh -> chọn Properties -> Event -> click vào

[Event Procedure] ở cuối On Click -> chọn dấu 3 chấm ở cuối dòng. Sửa lại các câu lệnh như sau:

Giải thích một số câu lệnh: Frame1 = 1: Người dùng tích chọn Pivot table, tương tự =2: Pivot chart, =

3: Doanh thu theo loại hàng. stDocName = "f_sales_analysis1": câu lệnh gán chuỗi giá trị cho biến. Docmd: thực hiện lệnh. DoCmd.OpenForm stDocName, acFormPivotTable,, stLinkCriteria: mở

form có tên chứa trong biến stDocName với kiểu view là Pivot table. Để biết thêm về các tham số của lệnh mở form: bôi đen DoCmd.OpenForm

rồi ấn F1.

Bước 4: điều chỉnh Form properties: Record selectors: No, Navigation Buttons: No.

Hết.

67