Applies To
Access for Microsoft 365 Access 2024 Access 2021 Access 2019

選取下列任何主題,以瞭解在 Northwind Developer Edition 中管理訂單的相關信息。 

此 Northwind Orders 範例應用程式的 Developer Edition 比 Starter Edition 更進階。 它會展開資料庫架構 () 使用的數據表,並提供其他進階功能。 本文旨在向您介紹 Microsoft Access 的功能,而非執行任何特定業務。

  • [訂單清單] 可從功能區取得。 它有幾個篩選選項,以及可開啟每個訂單的超連結。

  • [訂單清單] 和功能區都有 [新增訂單] 按鈕,可開啟新的空白訂單。

  • 在 [新訂單] 窗體上,從下拉式清單中選取現有的客戶。 此時會選取您的 員工 名稱和 狀態。 訂單日期也已填入。 系統 設定 數據表會讀取稅率,而客戶記錄中的 [稅金狀態] 則為預設值。

  • 新的訂單和採購單會新增至功能區中的 MRU ([最近使用) ] 清單。 Learn more via the MRU List section in this article

  • [出貨日期 ] 和 [已付款日期 ] 保留空白。

  • 若要新增新客戶的訂單,請輸入公司名稱並按 Tab 鍵。 [公司詳細數據] 表單將會開啟以完成新的客戶記錄。 然後將它關閉並繼續進行訂單。 新公司現在會在 [ 客戶 ] 下拉式清單中。

  • 若要新增專案至訂單,請選取此訂單 的產品類別產品 ,然後輸入 [數量]。 [單價] 會填入,而 [價格] 則以表達式計算。

  • [進階訂單狀態],然後使用 [訂單] 窗體頂端的按鈕,將訂單從 [新 > 已開 > 出 貨] > 關閉

  • 只有在該訂單已配置產品時,才會開啟發票。 如果明細項目處於 [無庫存] 或 [訂單] 狀態,將會發生驗證錯誤。 使用者可以為該產品建立採購單並接收,訂單項目狀態也會調整為 已配置

  • 若要出貨訂單,必須輸入 [貨運公司 運送費用] 。 如果您忘記這麼做,將會發生驗證錯誤。 運費會新增至訂單總計。

  • 您可以使用 [刪除訂單 ] 按鈕刪除未清除的訂單。

  • 訂單超過 [ 新增 ] 狀態后,無法修改訂單明細專案。

  • 在 [北風入門] 版本中,[訂單] 程式非常簡單 (例如,庫存永遠可用、永不用完,也不必購買) 。 現在,在這個 Dev 版本中,更實際的程式至少能解決一些這類問題。 請記住,我們展示的是 Access 功能和最佳做法,而不是實作實際的應用程式。 

  • 我們在此未實作實作實務實作實務的實例包括日期未經過驗證的事實。 因此,您可以輸入不合邏輯的日期,例如訂單日期 之前的 出貨日期。 

本節說明訂單窗體 frmOrderDetails 的值得注意的實作詳細數據:

訂單窗體會從簡單的查詢 qryOrder 取得其數據 (請參閱 RecordSource 屬性) 。 最佳作法是以簡單的單一數據表查詢為基礎建立數據輸入表單。 請注意,您不需要在此查詢中包含 OrderDetails 數據表。 訂單詳細數據由子表單處理。

OrderList 窗體可以開啟多個 Order 表單實例。 這非常實用,因為銷售代表處理許多中斷,可能需要在第一筆訂單時開啟另一筆訂單,或將它與第三筆訂單進行比較。 此處會記錄這項技術。

各種標識符欄位會從兩欄下拉式方塊取得其值:隱藏的標識符欄,以及可見的 [描述] 欄。 這些下拉式方塊系結至簡單的兩欄查詢:請參閱 RowSource 屬性。

工作流程按鈕具有與其相關的商業邏輯,強制使用者將訂單從1轉為4。 Northwind 開發小組發現有些公司可能會使用不同的規則。 這會導致按鈕按兩下事件有不同的實作,以及重新考慮訂單的明確時間,以及何時可以刪除訂單。

子窗體 sfrmOrderDetails 系結至更複雜的查詢。 以下串聯下拉式方塊一節中討論的原因。 我們會在儲存數據列時檢查Form_AfterUpdate事件中的庫存,並且可以執行功能更強大的資料庫查詢。

ProductCategory 和 Product 是串聯下拉式方塊:從第一個 (ProductCategory 中選取) 將下一個縮小為相符的子產品記錄。 以下詳述此處所使用的技術。

儲存記錄時,必須填寫所需的欄位。 在 Starter 版本中,我們讓 Access 預設行為發生;在此 Dev 版本中實作更方便用戶的技術。 以下詳述此處所使用的技術。

針對每個訂單明細專案,會檢查可用的庫存,並據此設定狀態。 此 處說明此功能的基本概念。  

串聯下拉式方塊

實作 [產品類別] 和 [產品] 下拉式清單做為串聯下拉式方塊會有些複雜,因為Access不支援此功能。 此技巧需要四個步驟:

表單必須處於 [接續本頁] Forms 模式 (而非 [數據工作表]) 。 文本框會與每個下拉式方塊的文字部分重疊,只顯示下拉式箭號。 

表單的記錄來源查詢 qryOrderLineItems 依往常使用 OrderDetails 數據表,但也與 [產品] 和 [ProductCategories] 數據表聯結以挑選 [ProductName] 和 [ProductCategoryName]。 兩個重疊的文字框系結到這些欄位。

[產品] 下拉式方塊的 RowSource 會回頭查看 cboProductCategories ,僅傳回該下拉式方塊中所選類別的產品。 請注意“[Form]!準則表達式中的 [cboProductCategories]“,比明確 Forms 更有彈性!FormName!ControlName 語法,會依名稱參照一個窗體。

在未系結 的 [ProductCategories ] 下拉式方塊中選取產品類別后,其 AfterUpdate 事件會將 [產品] 下拉式方塊設定為其清單中的第一個值。 這會在表單的 RecordSource 中建立新的列,其中會填入 CategoryName ,以便透過其重疊的文字框來顯示。  

驗證

使用在 Northwind Dev 版本中實作的驗證碼,只需要 3 行程式代碼:

  • 在 Form_BeforeUpdate 中:    Cancel = ValidateForm (Me)

  • 在 Form_AfterUpdate 和 Form_Current:     ValidateForm_RemoveHighlights Me

讓程式代碼完全獨立是很好的遵循模式,因為它可讓您輕鬆地在任何地方實作。 專業開發人員可能更進一步地執行這項作業,例如使用窗體子分類。 (這是超出 Northwind Dev.)

表單物件會傳遞到自我包含的驗證碼以進行驗證。 然後,它會檢查基礎 RecordsetClone Fields 集合,找出哪些控件系結至必要字段,並檢查它們是否有值。 如果沒有,則會醒目提示它們。

Need more help?

Want more options?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。