Chủ Nhật, 28 tháng 8, 2016

Phát triển HTTT kế toán bằng MS Access - Chương 6 - Khảo sát một truy vấn cung cấp dữ liệu báo cáo

James Perry, Richard Newmark


Chương 6
Tạo và dùng báo cáo


Khảo sát một truy vấn cung cấp dữ liệu báo cáo


Bạn sẽ tạo báo cáo hóa đơn. Bạn đã quen với hầu hết các bước cần thiết để tạo báo cáo hóa đơn ngoại trừ một vài. Các bước này sẽ được diễn giải cẩn thận trong từng bước bài tập. Ta bắt đầu bằng việc khảo sát câu truy vấn bạn chưa từng gặp trước đây – nối năm bảng nhằm tập hợp tất cả các trường để có thể tạo hóa đơn. Việc dùng truy vấn làm cơ sở để tạo hóa đơn là một quyết định tốt vì nó chứa biểu thức tính giá thành.

Hình 6.20 trình bày truy vấn nhằm phát sinh các trường cần thiết cho từng hóa đơn. Các cột trên lưới QBE được thu hẹp để bạn có thể thấy một số trường mặc dù không thể thấy hầu hết các trường. Truy vấn đó là nền tảng cho hóa đơn mà ta sẽ tạo, nó cung cấp mọi trường dữ liệu cho báo cáo. Để tiết kiệm thời gian, truy vấn đã được tạo sẵn. Nó ẩn trong Navigation Pane và có tên qryInvoiceReport, vì vậy bạn phải vén mở nó trước khi có thể sử dụng. Bài tập Thử nghiệm dưới đây ôn lại cách vén mở các đối tượng ẩn trong Navigation Pane.

Hình 6.20 Truy vấn nhằm chọn các trường để tạo báo cáo hóa đơn.

THỬ NGHIỆM

Kích phải All Access Objects trên đỉnh Navigation Pane, kích Navigation Options, đánh dấu ô Show Hidden Objects, rồi kích OK để đóng hộp thoại Navigation Options. Truy vấn ẩn xuất hiện với tên bị mờ. Bạn có thể mở một đối tượng ẩn giống như cách bạn làm với đối tượng hiển: kích kép hay kích phải nó rồi chọn góc nhìn bạn muốn từ pop-up menu.

Hãy mở truy vấn qryInvoiceReport ở góc nhìn Design. Quan sát cách nối các bảng. Hai bảng tblCustomer tblInvoice được nối qua cột CustomerID. Tương tự, tblInvoice được nối với tblInvoiceLine qua cột InvoiceID xuất hiện ở cả hai bảng. Các bảng nối khác là tblInvoice với tblEmployee trên cột EmployeeID, và tblInvoiceLine với tblInventory qua cột InventoryID. Như vậy, năm bảng được nối qua bốn cặp khóa chính khóa ngoại. Hãy cuộn đến trường ở bìa phải của truy vấn. Trường đó chứa công thức tính giá thành. Công thức đó như sau:

Extended: Round([tblInvoiceLine]![Quantity]*[tblInvoiceLine]![UnitPrice]*(1-[tblInvoiceLine]![Discount]),2)

Trường thứ sáu tính từ trái trong qryInvoiceReport sẽ nối tên và họ nhân viên bán hàng (với khoảng cách ở giữa) bằng biểu thức

SalesPerson: [EmpFName] & " " & [EmpLName]

Các dấu & sẽ nối tên, ký tự khoảng cách (giữa cặp ngoặc kép) và họ thành một chuỗi ký tự rồi đặt biệt hiệu là SalesPerson. Biệt hiệu của trường là chuỗi ký tự tùy chọn đứng trước dấu hai chấm và biểu thức. Biệt hiệu, nếu có, luôn xuất hiện đầu tiên trong trường – bên trái biểu thức. Có các trường bảng bổ sung trong truy vấn là chuỗi ký tự nối. Xét trường CustomerName và trường CustState Zip. Cả hai trường này, có biệt hiệu vừa đề cập, chứa một số trường bảng nối với nhau qua toán tử nối chuỗi &. Nếu bạn gặp khó khi duyệt biểu thức dài, nhấn Shift+F2 để mở hộp thoại Zoom. Đó là ô văn bản lớn tương tự Notepad nhằm hiển thị chuỗi ký tự dài tùy ý. Đóng truy vấn sau khi bạn khảo sát xong. Hình 6.21 trình bày một hóa đơn điển hình bạn có thể tạo với Access. Báo cáo phát sinh một hóa đơn khách hàng mỗi trang và sẵn sàng gửi cho khách hàng.

Hình 6.21 Trang đầu của báo cáo hóa đơn.

Để đóng và che truy vấn, hãy đảo ngược các hành động trong phần Thử nghiệm ở trên: Kích phải thanh tiêu đề của Navigation Pane, kích Navigation Options, xóa ô Show Hidden Objects, rồi kích OK để đóng hộp thoại Navigation Options. Để ý là truy vấn sẽ bị ẩn và tên nhóm Queries biến mất vì không còn truy vấn nào trong cơ sở dữ liệu.

Bạn sẽ tạo báo cáo hóa đơn theo một loạt các phác thảo. Bạn bắt đầu bằng việc tạo phác thảo đầu tiên. Sau đó, các điều chỉnh báo cáo sẽ cho các phác thảo ngày càng tốt hơn cho đến khi bạn đạt đến phác thảo cuối cùng có chất lượng tốt. (Tuy nhiên, thật ra chẳng có gì là “cuối cùng”. Có thể bạn muốn cải thiện hơn nữa nếu muốn giữ lại báo cáo này và ứng dụng nó.) Sau đây là phác họa vắn gọn các bước cần để tạo báo cáo hóa đơn từ truy vấn qryInvoiceReport:


  • Tạo báo cáo trống rồi mở bảng thuộc tính báo cáo và đặt thuộc tính Record Source của báo cáo là qryInvoiceReport.
  • Tạo đầu và chân nhóm InvoiceID.
  • Mở khung trường khả dụng available fields rồi chuyển các trường báo cáo đã chọn vào đầu nhóm InvoiceID.
  • Bố trí lại các dòng chi tiết để chúng tạo nên bài trí thành phần điều khiển dạng bảng.
  • Thêm các đối tượng ô văn bản vào InvoiceID Footer rồi viết các biểu thức Record Source để tính tổng con hóa đơn, thuế doanh thu (nếu có), phí vận chuyển, và tổng hóa đơn cho từng hóa đơn.
  • Định cỡ lại các trường báo cáo nếu cần.


Sau khi hoàn tất từng phác thảo báo cáo hóa đơn, nhớ lưu thiết kế báo cáo. Như vậy bạn có thể có một bản sao riêng của từng phác thảo bằng cách lưu với tên hơi khác. Bằng cách đó, bạn có thể quay lại phiên bản trước nếu bản hiện tại bị rối.

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

Đăng nhận xét