Thứ Năm, 7 tháng 4, 2016

Phát triển HTTT kế toán bằng MS Access - Chương 1 - Tạo tiêu chí chọn dùng toán-tử-hay OR

James Perry, Richard Newmark


Chương 1
Nhập môn Microsoft Access


Tạo tiêu chí chọn dùng toán-tử-hay OR


Bạn có thể gặp những truy vấn tương tự như sau: “Liệt kê các khách hàng đã đặt hàng trong 30 ngày qua hay đã mua hơn $500 trong 90 ngày qua.” Một ví dụ khác là: “Liệt kê mọi sản phẩm có từ chocolate trong phần mô tả hay có giá dưới $10.” Cả hai câu hỏi trên bao gồm hai điều kiện, chỉ cần một trong hai điều kiện đó thỏa. Tiêu chí đó được gọi là điều kiện OR. Không như điều kiện AND, trong đó mọi điều kiện phải thỏa thì dòng mới được trả về trong tập động dynaset, điều kiện OR chỉ cần một trong hai điều kiện thỏa là dòng được trả về.

Làm thế nào bạn tạo truy vấn có điều kiện OR? Có hai cách cơ bản để tạo tiêu chí OR, tùy thuộc tiêu chí đó liên quan một trường hay nhiều trường. Nếu bao gồm hai trường khác nhau (mô tả sản phẩm và giá sản phẩm trong ví dụ trên), bạn tạo truy vấn chứa hai dòng tiêu chí Criteria – mỗi dòng cho một điều kiện. Nếu tiêu chí chỉ gồm một trường, bạn có thể đặt các giá trị chấp nhận trong một trường và phân cách chúng bằng từ Or.

Bài tập kế dùng phương pháp đầu tiên, vì bao gồm hai trường khác nhau. Hãy đóng mọi cửa sổ Access đang mở nhưng vẫn mở cơ sở dữ liệu Chương 1.

BÀI TẬP 1.12: TẠO TRUY VẤN VỚI TIÊU CHÍ “OR”

1. Kích tab lệnh CREATE rồi kích Query Design trong nhóm Queries.

2. Kích kép bảng tblProducts trong hộp thoại Show Table rồi kích nút Close.

3. Kích kép dấu * (hoa thị) trong danh sách trường của tblProducts để đặt nó vào ô đầu tiên trên dòng Field trong lưới QBE. (Điều này qui định là câu truy vấn sẽ bao gồm mọi trường bảng.)

4. Kích kép trường mô tả sản phẩm ProductDescription và giá bán lẻ RetailPrice trong danh sách trường để tự động đặt chúng vào cột thứ hai và thứ ba trên dòng Field.

5. Xóa trống các ô bên dưới cột ProductDescription và RetailPrice để Access không hiển thị các cột đó hai lần trong tập động dynaset.

6. Kích ô tiêu chí Criteria bên dưới cột ProductDescription trong lưới QBE, nhấn Shift+F2 để mở hộp thoại thu phóng Zoom để phóng to ô Criteria (hành động này gọi là “mở cửa sổ Zoom”). Trong hộp thoại Zoom gõ tiêu chí like “*choc*” (gõ luôn các dấu nháy kép) rồi kích OK để đóng. Access sẽ không phân biệt chữ hoa khi tìm chuỗi ký tự. (Thật ra, hộp thoại Zoom không cần ở đây. Tuy nhiên, chúng tôi muốn bạn biết rằng bạn có thể hiển thị hộp thoại này khi cần để bạn có được khoảng không rộng rãi cho ô Fields hay ô Criteria khi gõ vào đó.)

7. Kích dòng thứ hai thuộc dòng Criteria bên dưới cột RetailPrice. (Hãy đảm bảo là tiêu chí này nằm trên dòng khác với dòng tiêu chí ProductDescription.) Gõ biểu thức <10.

8. Kích nút View để xem tập động dynaset. (Vẫn để mở câu truy vấn để làm tiếp bài tập Thử nghiệm dưới đây.)

Tập động dynaset sẽ trả về các dòng được sắp tăng dần theo khóa chính ProductID. Tập động dynaset và câu truy vấn được thể hiện ở Hình 1.25. Thường thì bạn thấy hoặc câu truy vấn hoặc tập động dynaset chứ không thấy cả hai, vì chúng là hai mặt của cùng một “đồng xu”.

Hình 1.25 Dùng tiêu chí or trong câu truy vấn.

Để ý rằng để tạo một truy vấn OR, bạn có số dòng tiêu chí Criteria trong lưới truy vấn QBE bằng số tiêu chí chọn độc lập. Mỗi dòng chứa ký tự, giá trị, hay biểu thức trong một cột. Khi các điều kiện OR chỉ bao gồm một trường, có cách viết tiêu chí khác. Chẳng hạn, giả sử bạn muốn hiển thị các dòng trong bảng sản phẩm mà cột mô tả sản phẩm chứa chocolate hay peanut (đậu phộng). Vì cả hai tiêu chí áp dụng trên cùng một trường, ProductDescription, bạn có thể viết cả hai trên cùng một dòng tiêu chí, phân cách chúng bằng từ khóa OR (viết thường hay hoa):

Like “*peanut*” Or Like “*chocolate*”

Mặc dù hầu hết các hệ cơ sở dữ liệu khác phân biệt chữ thường chữ hoa, Access thì không. Access lờ đi chữ thường chữ hoa và chỉ so khớp dựa trên nội dung. Tuy nhiên, qui tắc so khớp ký tự thay đổi tùy thuộc sản phẩm cơ sở dữ liệu. Bạn phải thí nghiệm điều này trước khi áp dụng. Nếu bạn không dùng Microsoft Access, Chocolate Fudge trong câu truy vấn có thể không khớp với chocolate fudge trong cơ sở dữ liệu.

Dấu hoa thị ở trước và sau từ chocolate là một trong các ký tự thay thế (wildcard). Dấu hoa thị có thể thay cho 0 hay nhiều chữ. Cách này cho kết quả khớp với chuỗi như Dutch German Chocolate, Chocolate Creme, … Dấu hoa thị có thể được dùng ở một trong hai phía hoặc cả hai phía của chuỗi truy vấn bất kỳ. Khi bạn dùng ký tự thay thế cho chuỗi ký tự, Access sẽ tự động thêm từ Like phía trước. Dĩ nhiên, thứ tự chuỗi phân cách bởi OR sẽ không quan trọng.

Điều gì sẽ xảy ra nếu bạn tạo truy vấn với duy nhất một dòng và đặt biểu thức <10 bên dưới RetailPrice và (trên cùng dòng Criteria) Like “*choc*” bên dưới ProductDescription? Chẳng có dòng nào trong tập động dynaset được trả về vì không có dòng nào trong bảng thỏa đồng thời cả hai tiêu chí. Truy vấn đó là một ví dụ qui định tiêu chí AND. Tóm lại, mỗi dòng Criteria sẽ qui định điều kiện phải thỏa toàn bộ.

THỬ NGHIỆM

Hãy sửa truy vấn bạn đã tạo trước đây ở Bài tập 1.12 bằng cách di chuyển tiêu chí <10 lên cùng dòng với tiêu chí Like “*choc*” (bằng cách dùng kỹ thuật cắt dán chuẩn trong Windows). Kích nút View. Bạn thấy gì trong tập động dynaset? Chỉ có một dòng trống xuất hiện. Điều đó nghĩa là không có dòng nào thỏa tiêu chí. Kích phải Query1 tab, kích Close trên pop-up menu, rồi kích No khi được hỏi bạn có muốn lưu các thay đổi không.

Không có nhận xét nào:

Đăng nhận xét