選取下列任何主題,以瞭解在 Northwind Developer Edition 中管理公司的相關資訊。
附註: 此頁面在 Access Developer Showcase Edition 上參照
在 Northwind Starter Edition 中, 客戶 是唯一的公司類型。 在開發人員版本中,我們已將它擴展為包括 客戶、 貨運公司和 廠商。
我們也擴充了 [產品 ],以包含多個產品廠商。
每家公司只能有一種類型:客戶、 貨運公司或 廠商。 如需變更公司類型的商業案例,請參閱本文 的 frmCompanyDetail 一節。
'
公司類型和使用位置
-
訂單客戶
-
訂單的貨運公司
-
採購單的廠商
-
產品的廠商
此外,[北風開發人員] 版本中的 公司 可以有多個 連絡人。
'
功能區中的公司
從功能區選取 [公司] 會在 frmCompanyList中顯示 [Northwind 中的公司]。
公司清單 - frmCompanyList
在 Northwind 開發人員版本中, frmCompanyList 是分割表單。 分割表單同時提供兩種資料檢視,即 [ 表單檢視 ] 和 [ 資料工作表檢視]。 它也有頁首及頁尾。 在此實作中,我們不會顯示表單檢視。 若不顯示表單檢視,我們將會有一個含有頁首及頁尾的資料工作表。
以下是我們達成此目標的步驟:
在 frmCompanyList中,看不到頁首與資料工作表之間的分割列。 表單內容 [分割表單分割列 ] 設為 [否],因此會隱藏表單檢視。
分割表單和資料工作表表單就像 Excel 工作表一樣。 它們支援篩選和排序,而且您可以顯示、隱藏或移動欄位或欄。 此外,也可以將欄合計。
分割表單的頁首及頁尾區段可讓您使用命令按鈕、影像、文字 (標籤) 以及任何其他您想要改善使用者體驗的存取表單控制項。 若要深入瞭解表單和分割表單,您可以從這裡開始。 資料工作表不會顯示頁首及頁尾區段。
[公司清單] 表單支援下列五個動作:
-
套用自訂、預先建立篩選、隨選篩選或兩者
-
顯示/隱藏欄位
-
建立標籤
-
顯示篩選
-
新增公司
按兩下詳細資料列中的任何位置,即可開啟 [公司詳細資料 ] 表單 (不只是在 [識別碼] 上,就像在其他表單) 一樣。
'
預先建立篩選和隨選篩選
frmCompanyList表單具有在 Northwind 中篩選公司的機會。 在畫面頂端,您可以使用下列選項按鈕進行篩選:
-
所有公司 (預設)
-
僅限客戶
-
僅限貨運公司
-
僅供應商
此外,您還可使用資料工作表內建的隨選篩選選項。 任何套用至 [公司清單 ] 表單 (預先建立或隨選) 的篩選,都會在開啟時套用至 frmCompanyDetail 。
若要將篩選傳遞到另一個表單,您必須先清除表單的篩選字串,只包含功能變數名稱。 請參閱程式碼模組 Open_frmCompanyDetail ,以取得更多有關如何執行此操作的詳細說明,並在 frmCompanyDetail 中查看 Form_Load 如何套用此程式的批註。
我們會透過表單的OpenArgs屬性將篩選資訊傳遞至[公司詳細資料]表單,而不是以條件開啟表單。 您可以 在這裡深入瞭解 OpenArgs。
顯示/隱藏欄位
選取 [顯示/隱藏欄位 ] 以開啟含有所有可用欄位清單的對話方塊;您可以核取或取消核取一或多個欄。 選取的版面配置會持續在某個會話到另一個會話,直到部署新版本的應用程式為止。 請參閱顯示或隱藏資料工作表中的欄。
建立標籤
[建立標籤] 按鈕會開啟 Access 標籤精靈。 在這裡深入瞭解標籤精靈:在 Access 中建立郵寄標籤。
開啟公司詳細資料
按兩下詳細資料列中的任何位置以開啟 frmCompanyDetail
按一下 [識別碼] 欄位 (設定為超連結) 或按兩下詳細資料列中的任何其他欄位,以開啟所選[公司]的 frmCompanyDetail,並將套用至 [公司清單] 的任何表單篩選傳遞至frmCompanyDetail。
公司詳細資料 - frmCompanyDetail
乍看 之下,frmCompanyDetail 看起來可能相當簡單。 不過,並非這樣。 在表單後方的程式碼中,發生許多事! 表單會醒目提示下列動作和功能:
-
數個命令按鈕和連結
-
新增公司
-
Email公司清單]
-
顯示篩選
-
刪除公司
-
開啟以位址為基礎的地圖
-
從超連結開啟網站
-
-
在新增/編輯模式中取消或儲存動作
-
商務規則以控制公司類型何時可以變更
-
刪除事件
前的參考完整性檢查 '
Form_Load事件包含下列動作:
-
使用透過 OpenArgs 傳送到表單的多個參數,以及自訂的 Northwind StringToDictionary 函數
-
使用OpenArgs 窗體屬性允許使用者在執行訂單時新增公司
-
使用 GoToRecord 技術新增 新的公司
-
使用SearchForRecord技術移至在 frmCompanyList上選取的公司
-
分支/條件執行選項 (請參閱 Form_Load事件)
-
選項 1 - 案例陳述
-
選項 2 - 巢狀 If Else
-
選項 3 – ElseIf
-
選項 4 - 巢狀 If Else 和 ElseIf
'
-
在Form_Current事件中,會發生下列情況:
-
透過呼叫 sub ManageFormOptions () ,在執行時間變更子表單標題和來源物件。 這個子模式是從這個表單中的多個位置來稱呼。
'
在新增或編輯模式中取消或儲存動作。
我們的 Access 表單已系結。 這是什麼意思? 來自 Microsoft:「
「系結」表單是直接連線至資料表或查詢等資料來源的表單,可用來輸入、編輯或顯示來自該資料來源的資料。」
使用系結表單時,Access 不會要求您明確地「儲存」您的資料。 當您從一筆記錄移至下一筆記錄時,Access 會自動儲存您的資料。 通常效果與您想要的方式一樣。 但如果使用者必須採取動作來表示他們已準備好儲存,該怎麼辦?
例如,form frmCompanyDetail 有一個子表單供 連絡人 (sfrmCompanyDetail_Contacts) 。 因此,如果您開始新增或編輯公司資料,假設是電話號碼,然後暫停以修正您在連絡人資訊中所注意到的錯字,會發生什麼情況? 根據預設,當您按一下連絡人記錄時,Access 會儲存您在公司記錄中所做的任何變更, 而這並不是 您想要的。
在此表單中,我們會顯示一種以公司單筆記錄達成此目標的方法。
使用 [ 取消 ] 按鈕的原因為何? 逸出鍵 會取消 任何已輸入或變更 (但未儲存) 表單上控制項中的資料。 在此狀態下,鉛筆圖示會出現在記錄選取器中, (列) 最左側的灰色垂直線。
不過,按一下 [ 新增公司 ] 按鈕之後,您會發現在開始在新的公司記錄中輸入資料之前,沒有鉛筆圖示。 如果您此時改變新增公司的想法,該怎麼辦? 如果您按下逸出鍵,沒有任何反應,因為您尚未輸入任何資料。 這就是為什麼我們有 [取消] 按鈕的原因。
按一下 [ 取消] 按鈕一律可以運作;只有在您輸入或變更資料時,才能使用逸出鍵。
如果您開始新增或變更資料,然後關閉表單而不按一下 [儲存] 或 [取消],根據預設,Access 會儲存資料。
商務規則:
做為公司之北風商務規則,我們希望您明確指出您想要「儲存」。 為了確保這一點,我們必須檢查使用者是否已在Form_BeforeUpdate事件中按一下 [儲存],如果他們沒有按一下 [儲存],請提示使用者指出是否要儲存或取消變更。
'
公司類型變更
商務規則: 如果公司有任何現有的訂單、採購單或是產品的廠商,使用者就無法變更公司類型。 我們已建立 CompanyIsActive () 函數,以判斷上述任何狀況是否存在。 如果是,使用者必須先清除這些參照, (刪除) ,才能變更公司類型。
此規則僅在此表單中強制執行。 在生產就緒的應用程式中,您不允許使用者直接開啟資料表來變更資料。 在 [北風] 中,我們允許您開啟資料表並執行任何您想要的動作。 這是學習的好方法,但也可讓您自由進行可能違反規則的變更。
您應該隨時以防禦方式執行程式。 規劃非預期的狀況。 即使公司目前是貨運公司,這並不表示他們在某個時候不是廠商或客戶。 在 [產品廠商 ] 或 [ PurchaseOrder ] 資料表中較舊的記錄中可能會找到他們的識別碼。
'
自訂對話方塊表單。
若要顯示其結果, cboCompanyTypeID_BeforeUpdate 使用對話方塊表單 frmGenericDialog。 當您有許多資訊要顯示時,這可以是標準訊息方塊的絕佳替代方案。 此表單也會與員工表單搭配使用,以達到類似的目的。
「
刪除參考完整性檢查」
在 Northwind Starter Edition 中,我們讓 Access 預設行為通知您公司有相關記錄時無法刪除。
在 Northwind Developer Edition 中,我們會在刪除之前先通知您,而不是接受 Access 預設行為。 我們會使用與變更公司類型相同的函數來執行這項作業;function CompanyIsActive () .
差異在於我們只考慮 訂單 或 採購單。 如果沒有 訂單 或 採購單,我們會確認您打算刪除,如果產品 廠商 和 連絡人 適用于您,我們將會刪除。