Thứ Năm, 16 tháng 6, 2016

Phát triển HTTT kế toán bằng MS Access - Chương 4 - Dùng biểu thức trong câu truy vấn

James Perry, Richard Newmark


Chương 4
Tạo và dùng câu truy vấn


Dùng biểu thức trong câu truy vấn


Đôi khi bạn muốn xem kết quả tính toán dẫn xuất từ một truy vấn. Chẳng hạn, bạn muốn hiển thị tuổi một người từ trường ngày sinh trong bảng. Có thể bạn muốn biết tổng trị giá của từng mặt hàng trong kho, là tích giữa số lượng và đơn giá. Dù Access cho phép, bạn biết là không nên thêm một cột bảng mà có thể được tính hay được dẫn xuất từ các cột khác trong cùng bảng. Điều này sẽ vi phạm qui tắc chuẩn hóa, và quan trọng hơn, sẽ phát sinh dữ liệu sai hay lỗi thời. Chẳng hạn, thiết kế cơ sở dữ liệu và qui tắc chuẩn hóa tốt sẽ ngăn việc thêm cột chứa giá thành (extended price) trong bất kỳ bảng hóa đơn của The Coffee Merchant. Vì giá thành được tính từ các trường số lượng Quantity, đơn giá UnitPrice, và phần trăm giảm giá Discount trong bảng tblInvoiceLine, giá thành không nên lưu trong bảng. Tại sao vậy? Giả sử được lưu trong tblInvoiceLine cùng với Quantity, UnitPrice, và Discount. Điều gì xảy ra nếu có người phát hiện một sai sót trong giá trị Quantity hay UnitPrice trong một hay nhiều hóa đơn? Việc thay đổi sẽ làm sai giá thành. Chuyên gia cơ sở dữ liệu bảo rằng cơ sở dữ liệu đó bất nhất.

Điều đó đưa ta đến câu hỏi sau: Làm sao bạn cho ra giá thành hay các tính toán hữu ích khác? Một đáp án là bạn bỏ tính toán bất kỳ vào câu truy vấn. Access cho phép bạn viết biểu thức tính tổng, trung bình, và đếm giá trị cũng như viết biểu thức chứa các toán tử số học, trường, hằng số, và toán tử so sánh. Toán tử số học là các toán tử quen thuộc: cộng (+), trừ (-), nhân (*), và chia (/). Có ba toán tử so sánh để hình thành sáu tổ hợp so sánh nhằm đưa ra kết quả đúng hay sai. Sáu tổ hợp đó là nhỏ hơn <, nhỏ hơn hay bằng <=, lớn hơn >, lớn hơn hay bằng >=, không bằng <>, và bằng =. Bạn tham chiếu đến các trường bảng bằng cách đặt tên của chúng trong cặp ngoặc vuông. Điều này không bắt buộc đối với những trường không chứa khoảng cách trong tên, nhưng đây là cách tốt và nhất quán khi tham chiếu một trường. Nó có lợi ích phụ là tên trường bạn viết trong cặp ngoặc vuông sẽ chuyển thành chữ hoa nếu bạn viết đúng tên trường. Để tính một kết quả và hiển thị nó trong câu truy vấn, bạn chỉ việc viết biểu thức vào ô trên dòng Field thuộc lưới QBE trong cửa sổ thiết kế truy vấn.

Bạn định nghĩa trường tính toán bằng cách cung cấp cho Access hai điều: tên trường tính toán và biểu thức tính kết quả. Tên đứng trước biểu thức trong lưới QBE. Theo sau là dấu hai chấm rồi đến biểu thức. Nếu bạn không cung cấp tên trường, Access sẽ tự đặt bắt đầu bằng exp1 và đánh số tăng dần. Cú pháp trường biểu thức như sau:

Tên-trường: biểu-thức

Tên-trường không được trùng với từ khóa Access và biểu-thức là tổ hợp tùy ý gồm các tên trường bảng, toán tử, và hàm Access. Ví dụ, bạn có thể tạo trường tính toán tính giá bán từ giá bán lẻ nhưng bớt 20 phần trăm như sau:

SalePrice: [RetailPrice] * 0.80

SalePrice là tên cột mới trong kết quả truy vấn và RetailPrice là trường thuộc một bảng bao gồm trong câu truy vấn. Giá trị 0.80 là hằng số. Mỗi dòng trong tập động dynaset sẽ hiển thị giá bán, vì vậy nếu có 120 dòng trong tập động dynaset, thì biểu thức sẽ tính 120 giá bán. Biểu thức tính toán có một nhược điểm. Bạn không thể sửa giá trị của biểu thức tính toán trong tập động dynaset, không như các cột phi biểu thức khác trong câu truy vấn.

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

Đăng nhận xét