Chọn chủ đề bất kỳ bên dưới để tìm hiểu về cách quản lý Đơn hàng trong Northwind Developer Edition. 

Phiên bản Nhà phát triển của ứng dụng mẫu Đơn hàng Northwind này nâng cao hơn phiên bản Starter Edition. Nó mở rộng trên sơ đồ cơ sở dữ liệu (các bảng được sử dụng) và giờ đây cung cấp các tính năng nâng cao bổ sung. Mục đích ở đây là giới thiệu với bạn các tính năng của Microsoft Access, không phải để điều hành bất kỳ doanh nghiệp cụ thể.

  • Danh sách Thứ tự sẵn dùng từ Dải băng. Ứng dụng này có một vài tùy chọn lọc và siêu kết nối để mở từng thứ tự.

  • Cả Danh sách Đơn hàng và Dải băng đều có nút Thêm Thứ tự để mở một thứ tự trống mới.

  • Trên biểu mẫu Đơn hàng Mới, chọn một khách hàng hiện có từ danh sách thả xuống. Tại thời điểm đó tên Nhân viên của bạn và trạng thái mới được chọn. Ngày Đặt hàng cũng đã được điền sẵn. Thuế suất được đọc từ bảng SystemSettings và mặc định Trạng thái Thuế từ hồ sơ Khách hàng.

  • Đơn hàng mới và đơn đặt hàng được thêm vào danh sách MRU (Sử dụng Gần đây Nhất) trong Ribbon. Tìm hiểu thêm thông qua mục Danh sách MRU trong bài viết này

  • Để trống Ngày Vận chuyển vàNgày Thanh toán ngay bây giờ.

  • Để thêm đơn hàng cho khách hàng mới, hãy nhập tên công ty và tab ra. Biểu mẫu Chi tiết Công ty sẽ mở để hoàn tất bản ghi khách hàng mới. Sau đó, đóng địa chỉ đó và tiếp tục với đơn hàng. Công ty mới bây giờ sẽ ở trong danh sách thả xuống Khách hàng.

  • Để thêm các mặt hàng vào đơn hàng, hãy chọn Danh mục Sản phẩm vàSản phẩm cho đơn hàng này, rồi nhập Số lượng. Đơn Giá được điền và Giá được tính bằng một biểu thức.

  • Nâng cao Trạng thái Đơn hàng và di chuyển thứ tự qua dòng công việc từ > Hóa đơn > Được giao > Đã đóng bằng cách dùng các nút ở đầu biểu mẫu Đơn hàng.

  • Invoicing chỉ có thể xảy ra nếu sản phẩm được phân bổ cho đơn hàng đó. Nếu một mục hàng ở trạng thái Không có Chứng khoán hoặc Khi Đặt hàng, lỗi xác thực sẽ xảy ra. Người dùng có thể tạo Đơn hàng cho sản phẩm đó và nhận và trạng thái mục đơn hàng sẽ được điều chỉnh thành Đã phân bổ.

  • Để gửi hàng, người gửi và phí vận chuyển phải được nhập. Nếu bạn quên làm như vậy, lỗi xác thực sẽ xảy ra. Phí Vận chuyển được thêm vào Tổng Đơn hàng.

  • Có thể xóa các đơn hàng không được vận chuyển bằng cách sử dụng nút Xóa Đơn hàng.

  • Không thể sửa đổi các mục dòng đơn hàng sau khi đơn hàng vượt qua trạng thái Mới.

  • Trong phiên bản Northwind Starter, quy trình Đặt hàng vô cùng đơn giản (ví dụ: thư mục luôn khả dụng, không bao giờ hết và không bao giờ phải mua). Giờ đây, trong phiên bản Dev này, quy trình thực tế hơn sẽ giải quyết ít nhất một số vấn đề như vậy. Hãy nhớ rằng chúng tôi đang trình bày các tính năng và biện pháp tốt nhất của Access, không triển khai ứng dụng trong thế giới thực. 

  • Bằng chứng rằng chúng tôi không thực hiện ứng dụng trong thế giới thực ở đây bao gồm thực tế là ngày tháng không được xác thực. Do đó, có thể nhập các ngày vô lý chẳng hạn như Ngày Vận chuyển trước Ngày Đặt hàng. 

Mục này đề cập đến chi tiết thực hiện đáng chú ý của biểu mẫu Đơn hàng, frmOrderDetails:

Biểu mẫu đơn hàng nhận dữ liệu từ một qryOrder truy vấn đơn giản (xem thuộc tính RecordSource ). Dựa trên biểu mẫu mục nhập dữ liệu trên truy vấn một bảng đơn giản là cách thực hành tốt nhất. Lưu ý rằng không cần đưa bảng OrderDetails vào truy vấn này. Chi tiết Đơn hàng được biểu mẫu con xử lý.

Biểu mẫu OrderList có thể mở nhiều phiên bản của biểu mẫu Đơn hàng. Điều này rất tiện dụng vì đại diện bán hàng xử lý nhiều gián đoạn và có thể cần phải mở một đơn hàng khác trong khi làm việc trên đơn hàng đầu tiên hoặc so sánh nó với đơn hàng thứ ba. Kỹ thuật này được ghi ở đây.

Các trường ID khác nhau nhận giá trị từ các hộp tổ hợp hai cột: cột ID ẩn và cột Mô tả hiển thị. Các hộp tổ hợp này được liên kết với truy vấn hai cột đơn giản: hãy xem thuộc tính RowSource .

Các nút dòng công việc có lô-gic kinh doanh liên kết với chúng buộc người dùng tạm ứng thứ tự từ 1 đến 4. Nhóm Phát triển Northwind đã biết rằng một số công ty có thể sử dụng các quy tắc khác nhau. Điều này sau đó sẽ dẫn đến việc triển khai khác nhau cho các sự kiện bấm vào nút, cũng như xem xét lại thời điểm xác định đơn hàng và khi nào đơn hàng vẫn có thể bị xóa.

SfrmOrderDetails của biểu mẫu con được liên kết với một truy vấn phức tạp hơn. Lý do cho điều đó được thảo luận trong phần Cascading Comboboxes dưới đây. Chúng tôi kiểm tra thư mục trong Form_AfterUpdate kiện khi hàng được lưu và chúng tôi có thể chạy các truy vấn cơ sở dữ liệu mạnh mẽ hơn.

Danh mục Sản phẩm và Sản phẩm là các hộp tổ hợp Xếp tầng: việc chọn từ (Danh mục Sản phẩm) đầu tiên sẽ thu hẹp danh mục tiếp theo để khớp với bản ghi Sản phẩm con. Kỹ thuật được sử dụng ở đây được mô tả chi tiết bên dưới.

Khi lưu bản ghi, các trường bắt buộc phải được điền. Trong phiên bản Starter, chúng tôi cho phép xảy ra hành vi mặc định của Access; trong phiên bản Dev này, kỹ thuật thân thiện với người dùng hơn đã được triển khai. Kỹ thuật được sử dụng ở đây được mô tả chi tiết bên dưới.

Đối với từng mục hàng của đơn hàng, thư mục sẵn có được chọn và trạng thái được đặt tương ứng. Ý tưởng cơ bản của tính năng này được mô tả ở đây.  

HỘP TỔ HỢP XẾP TẦNG

Việc triển khai danh sách thả xuống Danh mục Sản phẩm và Sản phẩm vì Hộp tổ hợp Xếp tầng khó khăn vì Access không hỗ trợ tính năng này ra khỏi hộp. Bốn bước cần thiết trong kỹ thuật này:

Biểu mẫu phải ở chế độ Forms liên tục (không phải Biểu dữ liệu). Các hộp văn bản chờm lấp lên phần văn bản của mỗi hộp tổ hợp, chỉ hiển thị các mũi tên thả xuống của chúng. 

Truy vấn nguồn bản ghi của biểu mẫu, qryOrderLineItems, sử dụng bảng OrderDetails theo bình thường, nhưng cũng kết hợp với các bảng Sản phẩm và Danh mục Sản phẩm để chọn ProductName và ProductCategoryName. Hai hộp văn bản chồng lấp được liên kết với các trường này.

RowSource dành cho hộp tổ hợp Sản phẩm sẽ quay lại cboProductCategories để chỉ trả về các sản phẩm cho danh mục được chọn trong hộp tổ hợp đó. Lưu ý cú pháp "[Biểu mẫu]! [cboProductCategories]" trong biểu thức tiêu chí linh hoạt hơn biểu thức Forms! FormName! Cú pháp ControlName tham chiếu đến một biểu mẫu theo tên.

Sau khi chọn danh mục sản phẩm trong hộp tổ hợp Thể loại Sản phẩm không liên kết, sự kiện AfterUpdate sẽ đặt hộp tổ hợp Sản phẩm thành giá trị đầu tiên trong danh sách. Thao tác này sẽ tạo ra một hàng mới trong RecordSource của biểu mẫu, điền Tên Thể loại để có thể được hiển thị bằng hộp văn bản chồng lên nhau.  

XÁC NHẬN

Việc sử dụng mã xác thực được thực thi trong phiên bản Northwind Dev chỉ mất 3 dòng mã:

  • Trong mục Form_BeforeUpdate:    Hủy = ValidateForm(Tôi)

  • In Form_AfterUpdate and Form_Current:     ValidateForm_RemoveHighlights Me

Làm mã rất tự chứa là một mô hình tốt để làm theo bởi vì nó làm cho nó dễ dàng để thực hiện ở khắp mọi nơi. Các nhà phát triển chuyên nghiệp có thể tiếp tục thực hiện điều này hơn nữa, ví dụ, bằng cách sử dụng tính năng phân lớp biểu mẫu. (Điều này nằm ngoài mục tiêu của Northwind Dev.)

Đối tượng biểu mẫu được chuyển đến mã xác thực tự chứa để xác thực. Sau đó, bộ sưu tập RecordsetClone Fields cơ sở sẽ kiểm tra xem điều khiển nào được liên kết với các trường bắt buộc và kiểm tra xem chúng có giá trị hay không. Nếu không, chúng sẽ được tô sáng.

Bạn cần thêm trợ giúp?

Bạn muốn xem các tùy chọn khác?

Khám phá các lợi ích của gói đăng ký, xem qua các khóa đào tạo, tìm hiểu cách bảo mật thiết bị của bạn và hơn thế nữa.

Cộng đồng giúp bạn đặt và trả lời các câu hỏi, cung cấp phản hồi và lắng nghe ý kiến từ các chuyên gia có kiến thức phong phú.