James Perry, Richard Newmark
Chương 4
Tạo và dùng câu truy vấn
Dùng các hàm thời điểm
Các hàm thời điểm gồm hàm quen thuộc Date() nhằm hiển thị thời điểm hiện tại. Đó là hàm hữu ích để tính số ngày quá hạn từ thời điểm lưu trong hóa đơn (chẳng hạn, Date() – InvoiceDate). Bên cạnh việc dùng hàm trong ô Field của câu truy vấn, hàm có thể được dùng trên dòng tiêu chí Criteria của câu truy vấn để lọc kết quả. Chẳng hạn, việc đặt biểu thức < Date() - 60 vào ô tiêu chí Criteria bên dưới InvoiceDate trong câu truy vấn trên bảng tblInvoice sẽ hiển thị các hóa đơn quá hạn hơn 60 ngày. Để trích thông tin từ một thời điểm, bạn có thể dùng hàm DatePart. Hàm DatePart có dạng:
DatePart(“khoảng”, biểu-thức)
Trong đó, khoảng có thể là chuỗi bất kỳ ở Hình 4.17 và biểu-thức, là hằng hoặc trường từ bảng hay câu truy vấn có giá trị là thời điểm.
Hình 4.17 Các tham biến chọn lọc của hàm DatePart.
Hàm DateDiff đặc biệt hữu ích trong các ứng dụng kế toán vì hàm trả về khoảng, hay độ lệch, giữa hai thời điểm. DateDiff có thể tính sự trễ hạn 30, 60, hay 90 ngày. Hàm có dạng
DateDiff(“khoảng”, thời-điểm-1, thời-điểm-2)
Trong đó, khoảng là chuỗi bất kỳ ở Hình 4.17, thời-điểm-1 và thời-điểm-2 là hằng hay tên trường có giá trị là thời điểm. Tham biến thứ hai, thời-điểm-1, thường là thời điểm “xưa hơn” và thời-điểm-2 là thời điểm gần đây hơn. Khoảng được trả về theo đơn vị mà bạn qui định (số năm, số quí, số tháng, số tuần, …). Chẳng hạn, biểu thức sau sẽ trả về số tuần nguyên giữa thời điểm đặt hàng và thời điểm lập hóa đơn:
DateDiff(“w”, OrderDate, InvoiceDate)
Tương tự, biểu thức sau sẽ tính số ngày quá hạn, dựa trên thời điểm hôm nay, cho từng hóa đơn trong bảng tblInvoice. Hàm có sẵn Date() không có tham biến và trả về thời điểm hôm nay.
DateDiff(“d”, InvoiceDate, Date())
Một bài tập sẽ giúp bạn hiểu cách vận hành của những hàm này. Hãy nối hai bảng tblInvoice và tblInvoiceLine rồi hiển thị giá trị tính toán của các dòng được chọn. Bạn sẽ dùng tiêu chí để lọc sao cho chỉ có dòng được chọn xuất hiện trong tập động dynaset.
BÀI TẬP 4.8: DÙNG HÀM DATEDIFF
1. Kích CREATE tab, kích Query Design, kích kép tblInvoice rồi kích kép tblInvoiceLine trong hộp thoại Show Table. Kích nút Close để đóng hộp thoại Show Table. Hai khung bảng xuất hiện trong khung thiết kế truy vấn.
2. Kích kép các trường sau trong các khung bảng để thêm chúng, từ trái sang phải, vào dòng Field thuộc lưới QBE: CustomerID, OrderDate, và InvoiceDate.
3. Kích ô trống bên phải ô InvoiceDate thuộc lưới QBE rồi gõ biểu thức tính giá thành mà bạn đã gõ trước đây. Tuy nhiên, lần này bạn không cần chỉ định tên bảng cho trường UnitPrice vì đó là trường có tên duy nhất trong hai khung bảng. Nhấn Shift+F2 để mở cửa sổ Zoom rồi gõ biểu thức sau:
ExtendedPrice: Round([Quantity] * [UnitPrice] * (1 - [Discount]), 2)
4. Kích OK để đóng cửa sổ Zoom. Kích phải ô Field trống kế tiếp, ô thứ năm tính từ trái, rồi kích Zoom để mở cửa sổ Zoom. Gõ biểu thức sau để tính và hiển thị số ngày giữa thời điểm đặt hàng OrderDate và thời điểm lập hóa đơn:
OrderToInvoiceDays: DateDiff(“d”, [OrderDate], [InvoiceDate])
Hình 4.18 hiển thị cửa sổ Zoom (có cỡ chữ hơi lớn hơn một tí) với biểu thức hoàn chỉnh.
Hình 4.18 Tính số ngày đã qua giữa hai thời điểm.
5. Kích OK để đóng cửa sổ Zoom.
6. Kích ô Sort bên dưới cột biểu thức OrderToInvoiceDays, kích mũi tên danh-sách-sổ-xuống, rồi kích Descending. Hành động này sẽ sắp các hóa đơn theo thứ tự số ngày đã qua từ nhiều đến ít.
7. Kích biểu tượng Save trên thanh công cụ truy xuất nhanh Quick Access Toolbar, gõ MyDateDifference vào ô Query Name, rồi kích OK để lưu truy vấn.
8. Kích View trong nhóm Results. Tập động dynaset hiển thị các dòng hóa đơn được sắp giảm dần theo số ngày đã qua giữa thời điểm đặt hàng và thời điểm lập hóa đơn (xem Hình 4.19).
Hình 4.19 Tập động dynaset hiển thị số ngày đã qua.
9. Đóng tập động dynaset. Kích phải tab MyDateDifference rồi kích Close All trong pop-up menu.
Không có nhận xét nào:
Đăng nhận xét