Thứ Ba, 1 tháng 3, 2016

Phát triển HTTT kế toán bằng MS Access - Chương 8 - Dùng Form Wizard để tạo form nhập đơn bán hàng

James Perry, Richard Newmark


Chương 8
Qui trình bán hàng - thu tiền


Dùng Form Wizard để tạo form nhập đơn bán hàng


Form nhập đơn bán hàng là một form phức tạp vì nó chứa một form dựa trên tblSaleOrder, qryCustomerInfo và một form con (subform) dựa trên qrySaleOrderLineItem. Việc tạo form như thế từ bước đầu sẽ mất nhiều thời gian. Vì thế, bạn sẽ dùng Form Wizard trong bài tập kế để tạo form nhập đơn bán hàng mà chỉ cần vài điều chỉnh nhỏ để làm form thân thiện.

BÀI TẬP 8.24: TẠO FORM NHẬP ĐƠN BÁN HÀNG

1. Kích tblSaleOrder trong Navigation Pane. Kích CREATE tab rồi kích Form Wizard trong nhóm Forms.

2. Bạn cần thấy tblSaleOrder trong ô danh sách Tables/Queries. Nếu không, hãy kích mũi tên ở ô danh sách, rồi chọn Table: tblSaleOrder. Kích nút >> (chọn tất cả) để chuyển tất cả các trường từ Available Fields sang Selected Fields.

3. Kích mũi tên ở ô danh sách Tables/Queries, rồi kích Query: qryCustomerInfo.

4. Di chuyển tất cả các trường ngoại trừ CustomerID sang Selected Fields. Kích CustomerName rồi kích > 7 lần. Đừng chọn CustomerID.

5. Kích mũi tên ở ô danh sách Tables/Queries, rồi kích Query: qrySaleOrderLineItem. Lần này, Kích >> để chuyển tất cả các trường từ Available Fields sang Selected Fields. Trường cuối cùng, qrySaleOrderLineItem.SaleOrderID, cần được làm nổi bật. Đây là trường SaleOrderID từ qrySaleOrderLineItem (Access sẽ gắn tên bảng / câu truy vấn vào trường khi 2 trường trong Selected Fields trùng tên). Kích < để loại qrySaleOrderLineItem.SaleOrderID khỏi Selected Fields (xem Hình 8.30).

Hình 8.30. Các hộp thoại của Form Wizard.

6. Kích Next. Kích tblSaleOrder trong ô danh sách How do you want to view your data? (nếu nó chưa được chọn) để đảm bảo gom nhóm đúng (xem Hình 8.30). Để ý nút radio Form with Subform(s) đã được chọn.

7. Kích Next. Chọn Tabular để đáp lại câu hỏi What layout would you like for your subform? (Bạn muốn bài trí nào cho form con của bạn?)

8. Kích Next. Gõ frmSaleOrder trong ô Form để đặt tên form. Đánh dấu toàn bộ văn bản trong ô Subform rồi gõ fsubSaleOrder để đặt tên cho form con. Những tên này sẽ xuất hiện trong phần Forms của Navigation Pane. Kích nút Finish. Access sẽ tạo ra cặp form/subform và hiển thị chúng ở Form View (xem Hình 8.31). Để ý rằng ta dùng frm để nhận diện forms và fsub để nhận diện subforms, tên sau tiền tố cho form và subform thì giống nhau.

Hình 8.31. frmSaleOrder được tạo bởi Form Wizard.

Mặc dù form được Wizard phát sinh sẽ hữu dụng và bao gồm nhiều thành phần điều khiển để thêm, xóa, và sửa thông tin đơn bán hàng, bạn rất có thể phát hiện một số cách cải thiện nó. Hai bài tập kế sẽ chỉ bạn cách cải thiện để làm form và subform hiệu quả hơn và dễ dùng hơn. Bạn có thể phát hiện những cải tiến khác với những gì chúng tôi đề xuất. Chúng tôi đề nghị bạn nên thử nghiệm, vì thiết kế form vừa là nghệ thuật vừa là khoa học. Chỉ cần nhớ rằng bạn đang thiết kế form cho nhân viên nhập liệu hàng ngày liên tục sử dụng form, vì vậy cần tránh dùng màu sáng và những thiết kế có thể làm người dùng phát cáu.

BÀI TẬP 8.25: CẢI THIỆN GIAO DIỆN CỦA FORM NHẬP ĐƠN BÁN HÀNG

1. Mở frmSaleOrder ở Design View. Đổi đầu đề form (Form Header) thành Sale Order Entry, và định cỡ lại cho ô văn bản và đầu đề.

2. Xóa các nhãn cho CustomerName, CustomerAddress1, CustomerAddress2, CityStateZip, và CustomerTelephone.

3. Xóa nhãn fsubSaleOrder trên đối tượng Subform.

4. Làm đậm và canh phải các nhãn còn lại trong frmSaleOrder. Các công cụ định dạng văn bản có thể thấy trên dải HOME hay FORMAT.

5. Làm subform rộng hơn. Kích subform, rồi kích và kéo một trong những thành phần điều khiển (handles) ở cạnh trái của subform sang cạnh trái của form. Làm đậm các nhãn trong fsubSaleOrder. Bạn có thể thấy dễ thay đổi subform hơn bằng cách đóng frmSaleOrder rồi mở fsubSaleOrder. Để thấy những thay đổi trông ra sao trong form, đóng fsubSaleOrder rồi mở frmSaleOrder.

6. Định lại cỡ và sắp các trường trong form và subform sao cho form trông giống Hình 8.32. Thao tác này tương tự với những gì bạn đã làm trong Bài tập 8.16. Một số thao tác có thể dễ thực hiện hơn trong Layout View và một số thao tác khác dễ thực hiện hơn trong Design View.

Hình 8.32. Form đơn bán hàng cải tiến ở Form View và Design View.

BÀI TẬP 8.26: THAY ĐỔI THUỘC TÍNH ĐIỀU KHIỂN ĐỂ NGĂN NGƯỜI DÙNG KHÔNG THAY ĐỔI DỮ LIỆU THAM CHIẾU

Một số trường trên form đơn bán hàng là dữ liệu tham chiếu và không được thay đổi trong form, chẳng hạn tên và địa chỉ khách hàng cũng như mô tả tồn kho. Trong bài tập kế bạn sẽ thay đổi các thuộc tính trường để ngăn không cho thay đổi dữ liệu tham chiếu trong form.

1. Mở frmSaleOrder ở Design View. Kích Property Sheet trong nhóm Tools.

2. Kích vùng trống của Detail ở ngay bên phải CustomerName rồi kéo con trỏ qua tất cả các thành phần điều khiển liên quan đến khách hàng từ CustomerName đến CustomerPrimaryContact để chọn chúng.

3. Định dạng các trường này cho lẫn vào nền. Kích Format tab trên Property Sheet nếu chưa được chọn. Đổi các thuộc tính Back Style và Border Style về Transparent.

4. Khóa các thành phần điều khiển để ngăn người dùng thay đổi dữ liệu trong form đơn bán hàng. Kích Data tab trên Property Sheet. Đổi Enabled về No và Locked về Yes.

5. Loại bỏ tab stop (dừng khi tab) để ngăn người dùng không chuyển con trỏ đến những trường không thể thay đổi. Kích Other tab trên Property Sheet. Đổi Tab Stop về No (xem Hình 8.33). Là người dùng, bạn cảm thấy thế nào nếu bạn tab vào một trường mà máy tính không cho bạn thay đổi nó? Có phải bạn nghĩ rằng máy tính hay ứng dụng đó có gì sai chăng?

Hình 8.33. Các tabs trên Property Sheet.

6. Lặp lại các Bước 2 đến 5 trong subform cho FullDescription, InventoryListPrice, và SaleOrderLineExtension. Form nhập đơn bán hàng bây giờ cần giống Hình 8.34.

Hình 8.34. Form nhập đơn bán hàng ở Form View sau khi hoàn thành Bài tập 8.26.

7. Lưu frmSaleOrder fsubSaleOrder.

Bạn có thể để ý rằng form không cuộn qua các đơn bán hàng theo thứ tự mã số. Form Wizard đã không bao gồm qui tắc sắp xếp trong câu truy vấn được tạo đằng sau frmSaleOrder. Hơn nữa, thứ tự tab không đúng. May thay, ta dễ dàng sửa các vấn đề này.

BÀI TẬP 8.27: THAY ĐỔI THỨ TỰ SẮP XẾP VÀ THỨ TỰ TAB TRONG FRMSALEORDER

1. Mở frmSaleOrder ở Design View. Kích Property Sheet trong Tools group nếu Property Sheet chưa được mở.

2. Chọn Form từ combo box ở trên các Property Sheet tabs nếu Form chưa được chọn.

3. Kích Data tab của Property Sheet, kích ô thuộc tính Order By rồi gõ SaleOrderID. Nếu muốn sắp xếp theo thứ tự giảm dần hay sắp xếp nhiều hơn một trường thì bạn cần thay đổi câu truy vấn đằng sau form.

4. Kích DESIGN tab. Kích Tab Order trong Tools group để mở cửa sổ Tab Order. Kích Detail trong cột Section nếu nó chưa được chọn. Trong cột Custom Order, kích và kéo các trường theo thứ tự ở Hình 8.35. Kích OK khi bạn làm xong.

Hình 8.35. Cửa sổ Tab Order.

5. Chuyển sang Form View. Để ý rằng bây giờ các tab stops đã di chuyển tuần tự qua phần bên trên form rồi vào subform.

6. Chuyển sang bản ghi kế bằng cách dùng nút chọn bản ghi ở ngoài, tức nút chọn bản ghi cho form. Để ý rằng các bản ghi giờ đây đã được sắp xếp theo mã đơn bán hàng. Lưu form.

Khi xem xét form, bạn có thể tự hỏi như sau. Làm thế nào nhân viên bán hàng tránh gõ sai mã nhân viên? Làm thế nào Pipefitters đảm bảo rằng chỉ có nhân viên bán hàng mới được làm đơn bán hàng? Trong 2 bài tập kế bạn sẽ thêm một combo box để hiển thị danh sách nhân viên bán hàng của Pipefitters theo thứ tự từ điển, loại bỏ việc yêu cầu người dùng phải nhập mã nhân viên.

BÀI TẬP 8.28: TẠO CÂU TRUY VẤN CHO COMBO BOX NHÂN VIÊN BÁN HÀNG

1. Tạo một truy vấn mới ở Design View. Kích CREATE tab rồi kích Query Design trong nhóm Queries.

2. Bảng duy nhất cần cho truy vấn này là tblEmployee. Kích kép tblEmployee từ danh sách trong hộp thoại Show Table, rồi kích nút Close.

3. Kích kép các trường theo thứ tự sau để chuyển chúng vào Criteria Pane: EmployeeID, EmployeeLastName, EmployeeFirstName, EmployeeMiddleInitial, EmployeeTypeID.

4. Hạn chế danh sách chỉ chứa nhân viên bán hàng. Trong ô Criteria dành cho EmployeeTypeID, gõ “30” rồi nhấn Enter.

5. Lưu câu truy vấn với tên qrySalesperson. Xem tập kết quả động bằng cách kích View hay Run trên dải DESIGN. Để ý rằng kết quả được sắp theo EmployeeID mặc dù bạn muốn combo box được sắp theo thứ tự từ điển. Điều này không sao vì thứ tự sắp xếp của combo box có thể được xác định khi bạn tạo nó, bất chấp thứ tự sắp xếp của bảng hay câu truy vấn. Đóng câu truy vấn.

BÀI TẬP 8.29: THAY THÀNH PHẦN ĐIỀU KHIỂN EMPLOYEE ID BẰNG SALESPERSON COMBO BOX

1. Mở frmSaleOrder ở Design View. Loại bỏ thành phần điều khiển EmployeeID và nhãn của nó bằng cách kích thành phần điều khiển rồi nhấn phím Delete.

2. Kích Combo Box trong nhóm Controls. Di chuyển con trỏ vào vị trí khoảng trống của thành phần điều khiển EmployeeID rồi kích để khởi động Combo Box Wizard.

3. Trong hộp thoại đầu tiên, kích nút I want the combo box to look up the values in a table or query. (Tôi muốn combo box tra cứu các giá trị trong một bảng hay câu truy vấn) rồi kích Next.

4. Trong hộp thoại kế, kích nút radio Queries để hiển thị danh sách các câu truy vấn rồi kích kép qrySalesperson.

5. Kích kép tất cả các trường trong Available Fields ngoại trừ EmployeeTypeID để chuyển chúng sang danh sách Selected Fields. Kích Next.

6. Sắp thứ tự tăng dần (Ascending) đầu tiên theo EmployeeLastName, kế đến theo EmployeeFirstName, cuối cùng theo EmployeeMiddleInitial. Kích Next.

7. Điều chỉnh kích cỡ cột cho Employee # và MI cho khớp với dữ liệu hiện tại vì chúng có kích cỡ cố định bằng cách kích kép vào biên phải của cột. Để nguyên các cột Last Name và First Name để có thể chứa các tên dài. Kích Next.

8. Kích EmployeeID từ danh sách Available Fields vì bạn muốn lưu giá trị này vào tblSaleOrder rồi kích Next.

9. Lưu EmployeeID từ combo box vào trường EmployeeID trong tblSaleOrder bằng cách kích nút radio thứ hai với phụ đề Store that value in this field và chọn EmployeeID từ combo box. Kích nút Next để mở hộp thoại cuối cùng.

10. Gõ cboSalesperson làm nhãn của thành phần điều khiển rồi kích Finish. Wizard sẽ tạo một thành phần điều khiển theo đặc tả của bạn và đặt nó vào form đơn bán hàng.

11. Đổi tên combo box từ tên mặc định Combo## (trong đó ## là số do Access phát sinh), bằng cách kích Property Sheet trong nhóm Tools. Kích Other tab, gõ cboSalesperson vào ô Name rồi nhấn Enter.

12. Đổi thứ tự tab. Kích Tab Index trên Property Sheet rồi kích nút Builder (nút có dấu ba chấm). Trong cột Custom Order, kích và kéo cboSalesperson lên trên cho đến khi nó nằm ngay bên dưới SaleOrderID. Kích nút OK.

13. Làm cho định dạng và kích cỡ của combo box cùng với nhãn của nó phù hợp với các thành phần điều khiển khác. Hình 8.36 cho thấy form đơn bán hàng hoàn chỉnh.

Hình 8.36. Combo box trong form nhập đơn bán hàng.

14. Kiểm tra thành phần điều khiển mới ở Form View. Để ý rằng nhân viên bán hàng được sắp xếp theo thứ tự từ điển. Lưu rồi đóng form.

Sau khi tạo xong combo box, bạn có thể đặt các câu hỏi khác liên quan đến vấn đề kiểm soát. Làm thế nào nhân viên bán hàng nhớ được mã của khách hàng Dunn Plumbing (và tránh gõ sai ngay cả khi họ nhớ mã đó)? Tổng trị giá đơn bán hàng có bằng tổng trị giá trên từng dòng không, và quá trình này có thể tự động được không? Ta sẽ giải quyết một số vấn đề kiểm soát này trong các bài tập cuối chương và một số vấn đề khác sẽ được đề cập trong các Chương 9 đến 12.

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

Đăng nhận xét