Thứ Sáu, 4 tháng 3, 2016

Phát triển HTTT kế toán bằng MS Access - Chương 8 - Tạo truy vấn cho các mục trên từng dòng bán hàng Sale Line Item

James Perry, Richard Newmark


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


Tạo truy vấn cho các mục trên từng dòng bán hàng Sale Line Item


Khác biệt duy nhất giữa truy vấn các mục trên từng dòng đơn bán hàng và truy vấn các mục trên từng dòng bán hàng Sale Line Item là tblReservation-SaleOrderInventory và các trường của nó được thay bằng tblOutflow-SaleInventory và các trường của nó.

BÀI TẬP 8.33: TẠO QRYSALELINEITEM CHO FORM NHẬP LIỆU BÁN HÀNG

1. Kích phải qrySaleOrderLineItem trong Navigation Pane. Kích Copy. Kích phải rồi chọn Paste. Trong hộp thoại Paste Table As, gõ qrySaleLineItem vào ô Query Name, rồi kích OK.

2. Mở qrySaleLineItem ở góc nhìn Design.

3. Kích Show Table trong nhóm Query Setup, kích kép tblOutflow-SaleInventory, rồi kích nút Close. Bạn có thể cần di chuyển và định cỡ tblOutflow-SaleInventory trong Table Pane để dễ làm việc hơn.

4. Đổi tham chiếu bảng cho InventoryID. Trên Criteria Pane, kích ô Table cho InventoryID rồi đổi thành tblOutflow-SaleInventory.

5. Đổi tham chiếu bảng cho QuantityOrdered thành tblOutflow-SaleInventory. Đổi Field từ QuantityOrdered thành QuantitySold.

6. Đổi tham chiếu bảng cho SOPrice thành tblOutflow-SaleInventory. Đổi Field từ SOPrice thành InvoicePrice.

7. Đổi tham chiếu bảng cho SaleOrderID thành tblOutflow-SaleInventory. Đổi Field từ SaleOrderID thành InvoiceID. Lưu các thay đổi.

8. Kích SaleOrderLineExtension trên Criteria Pane, kích Builder trong nhóm Query Setup. Trong Expression Builder, đổi biểu thức ban đầu thành InvoiceLineExtension: [QuantitySold]*[InvoicePrice]. Kích OK.

9. Xóa tblReservation-SaleOrderInventory khỏi Table Pane. Lưu các thay đổi.

10. Kiểm thử truy vấn. Kích Run trong nhóm Results. Tập động dynaset cần giống Hình 8.40. Đóng truy vấn.

Hình 8.40. Tập động dynaset qrySaleLineItem.

Thứ Năm, 3 tháng 3, 2016

Phát triển HTTT kế toán bằng MS Access - Chương 8 - Tạo các quan hệ với bảng bán hàng Sale

James Perry, Richard Newmark


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


Tạo các quan hệ với bảng bán hàng Sale


Trong Bài tập 8.32 bạn sẽ thêm các quan hệ với tblSale cần để tạo form nhập liệu bán hàng Sale Entry.

BÀI TẬP 8.32: TẠO CÁC QUAN HỆ CHO BIẾN CỐ BÁN HÀNG SALE

1. Đóng tất cả các bảng và forms đang mở.

2. Trên DATABASE TOOLS tab, kích Relationships trong nhóm Relationships. Cửa sổ quan hệ Relationships cần giống cửa sổ ở cuối Bài tập 8.21 (xem Hình 8.25).

3. Thu gọn Navigation Pane bằng cách kích << ở góc phải trên của pane.

4. Kích Show Table trong nhóm Relationships (trên DESIGN tab), kích kép tblSale tblOutflow-SaleInventory. Rồi kích Close.

5. Tạo các liên kết như cách đã làm ở Bài tập 8.21. Kéo khóa chính đến khóa ngoại tương ứng hoặc từ khóa chính đến phần khóa chính phức hợp tương ứng.

6. Khi hộp thoại soạn thảo quan hệ Edit Relationships xuất hiện, hãy chắc rằng thuộc tính đúng xuất hiện trong các bảng mà bạn đã kéo từ đó và đến đó. Kiểu quan hệ ở đáy hộp thoại phải luôn là một-nhiều One-To-Many. Đánh dấu Enforce Referential IntegrityCascade Update Related Fields. Cuối cùng, kích Create trong hộp thoại.

7. Định cỡ và di chuyển các bảng vừa thêm cho giống cửa sổ quan hệ Relationships ở Hình 8.39. Bạn có thể liên hệ lại Hình 8.5, nơi đó liệt kê khóa chính và khóa ngoại trong từng bảng.

Hình 8.39 Cửa sổ quan hệ Relationships sau khi thêm biến cố bán hàng Sale.

8. Đóng cửa sổ Relationships và kích Yes trong hộp thoại để lưu các thay đổi, rồi kích >> trên Navigation Pane để phục hồi nó.

Giờ đây bạn đã thiết lập các liên kết khóa ngoại và bảng-quan-hệ cần thiết, bạn có thể tạo form nhập liệu bán hàng Sale Entry. Mặc dù form nhập liệu bán hàng Sale Entry tương tự với form nhập đơn bán hàng Sale Order Entry, sẽ dễ hơn nếu tạo form mới từ đầu. Vì bạn đã tạo truy vấn thông tin khách hàng cho form nhập đơn bán hàng Sale Order Entry, bạn chỉ cần tạo truy vấn cho các mục trên từng dòng bán hàng.

Phát triển HTTT kế toán bằng MS Access - Chương 8 - Form nhập liệu bán hàng Sale Entry

James Perry, Richard Newmark


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


Form nhập liệu bán hàng Sale Entry


Form nhập liệu bán hàng Sale Entry rất giống form nhập đơn bán hàng Sale Order Entry mà bạn đã tạo trước đây trong chương. Form nhập đơn bán hàng Sale Order Entry cho phép Pipefitters nhập các mặt hàng mà khách hàng đã đặt. Nếu Pipefitters chắc rằng lúc nào cũng đủ hàng tồn kho, thì họ có thể phát sinh hóa đơn trực tiếp từ thông tin trong bảng đơn bán hàng. Tuy nhiên, giả định này không thực tế cho hầu hết công ty.

Phát triển HTTT kế toán bằng MS Access - Chương 8 - Bảng Bán hàng - Tồn kho

James Perry, Richard Newmark


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


Bảng Bán hàng - Tồn kho


Bảng Bán hàng – Tồn kho ghi nhận quan hệ dòng-ra nhiều-nhiều giữa tblSaletblInventory. Đây là hàng thực sự gửi đến khách hàng. Vì thế, tblOutflow-SaleInventory sẽ lưu 4 trường:

1. Khóa chính tblSale.
2. Khóa chính tblInventory.
3. Số lượng từng hàng tồn kho xuất hiện trên từng hóa đơn bán hàng.
4. Đơn giá từng hàng tồn kho xuất hiện trên từng hóa đơn bán hàng

Các khóa chính từ tblSale tblInventory sẽ kết hợp để tạo nên khóa chính phức hợp trong tblOutflow-SaleInventory. Trước khi bạn bắt đầu bài tập kế, hãy đóng tất cả các bảng và forms đang mở.

BÀI TẬP 8.31: TẠO BẢNG-QUAN-HỆ TBLOUTFLOW-SALEINVENTORY

1. Kích phải tblReservation-SaleOrderInventory trong Navigation Pane. Kích Copy. Kích phải rồi kích Paste. Trong hộp thoại Paste Table As, gõ tblMyOutflow-SaleInventory vào ô Table Name, kích nút radio Structure Only, rồi kích OK.

2. Mở tblMyOutflow-SaleInventory ở Design View.

3. Tạo các thay đổi sau cho Field Name và Caption. ĐỪNG xóa trường:

  • Đổi SaleOrderID (khóa chính) thành InvoiceID.

                  * Đổi Caption của InvoiceID từ Sale Order # thành Invoice #.

  • Đổi QuantityOrdered thành QuantitySold.
  • Đổi SOPrice thành InvoicePrice.


4. Lưu rồi đóng bảng.

Thứ Tư, 2 tháng 3, 2016

Phát triển HTTT kế toán bằng MS Access - Chương 8 - Bảng bán hàng Sale

James Perry, Richard Newmark


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


Bảng bán hàng Sale


Bảng bán hàng Sale sẽ lưu thông tin tương tự bảng đơn bán hàng Sale Order. Hình 8.37 chỉ ra những tương tự giữa các trường thuộc 2 bảng. Khác biệt chủ yếu là khóa chính trong tblSaleOrder được dùng làm khóa ngoại trong tblSale. Liên kết này cho phép Pipefitters xác định được đơn bán hàng nào đã hoàn thành, đối với đơn bán hàng nào chưa hoàn thành hay hoàn thành một phần, thì những hàng tồn kho nào vẫn cần được gửi đi.

Hình 8.37. So sánh trường giữa tblSaleOrder tblSale.

BÀI TẬP 8.30: TẠO BẢNG BÁN HÀNG SALE

1. Kích phải tblSaleOrder trong Navigation Pane. Chọn Copy. Kích phải lần nữa rồi kích Paste. Trong hộp thoại Paste Table As, gõ tblMySale trong ô Table Name, kích nút radio Structure Only, rồi kích OK.

2. Mở tblMySale ở Design View.

3. Chép SaleOrderID. Kích phải trường khóa chính SaleOderID rồi chọn Copy. Di chuyển con trỏ đến dòng trống đầu tiên, kích phải rồi kích Paste để tạo một bản sao SaleOrderID. Để ý rằng bản sao SaleOrderID không phải là khóa chính. Đổi thuộc tính Indexed về Yes (Duplicates OK) nếu cần.

4. Tạo các thay đổi sau cho tên trường Field Name và phụ đề Caption. ĐỪNG xóa trường:
Đổi SaleOrderID (khóa chính) thành InvoiceID.
                * Đổi Caption của InvoiceID từ Sale Order # thành Invoice #.
Đổi SaleOrderDate thành ShippingDate (thời điểm gửi hàng)
Đổi SaleOrderAmount thành SaleAmount (trị giá của thương vụ).

5. Xóa CustomerPO. Kích phải CustomerPO, kích Delete Rows.

6. Di chuyển dòng bằng cách kích bộ chọn dòng (cạnh Field Name) rồi kích và kéo dòng đó đến vị trí mong muốn. Di chuyển EmployeeID SaleOrderID sao cho các trường có thứ tự như bảng ở Hình 8.38.

Hình 8.38. Danh sách trường của tblMySale.

Phát triển HTTT kế toán bằng MS Access - Chương 8 - Ghi nhận thông tin bán hàng

James Perry, Richard Newmark


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


Ghi nhận thông tin bán hàng


Những công ty như Pipefitters Supply Company buôn bán sản phẩm và dịch vụ cho các doanh nghiệp khác thường bán hàng với điều kiện chi trả là n/30 (trả hết trong vòng 30 ngày). Thông thường, các đơn bán hàng phải được phòng tín dụng chuẩn thuận trước khi gửi hàng đi. Vì một đợt bán được xem là hoàn tất khi chuyển giao trách nhiệm pháp lý, các công ty ghi nhận đợt bán vào hệ thống kế toán của họ vào thời điểm hàng được gửi đi, thậm chí gửi hàng chỉ là một phần thương vụ. Vì thế, nhân viên kho hàng của Pipefitters sẽ nhập thông tin hóa đơn khi chuẩn bị hàng hóa để gửi. Khi hàng hóa đã sẵn sàng để gửi, hệ thống sẽ tạo một hóa đơn và tài liệu chuyên chở trên giấy và/hay dưới dạng điện tử. Các tài liệu chuyên chở, chẳng hạn vận đơn (bill of lading) hay phiếu giao hàng (packing slip), thay đổi rất nhiều về hình thức cũng như thiết kế.

Trong phần này, bạn sẽ học cách tạo hóa đơn để sử dụng nội bộ và điều chỉnh nó để phát sinh tài liệu trên giấy cho khách hàng. Hơn nữa, bạn có thể dễ dàng sửa đổi hóa đơn này để tạo các vận đơn phù hợp với nhu cầu cụ thể của bạn. Dữ liệu hóa đơn được phát sinh trong qui trình bán hàng - thu tiền. Để nắm bắt dữ liệu thương vụ, cơ sở dữ liệu sẽ dùng các bảng đã dùng để ghi nhận đơn bán hàng, ngoài tblReservation-SaleOrderInventory, bạn sẽ tạo thêm tbSale và bảng-quan-hệ tblOutflow-SaleInventory như được trình bày ở Hình 8.5.

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.