使用 Microsoft 登入
登入或建立帳戶。
您好:
選取其他帳戶。
您有多個帳戶
選擇您要用來登入的帳戶。

選取下列任何主題,以瞭解在 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 () .

差異在於我們只考慮 訂單 採購單。 如果沒有 訂單 採購單,我們會確認您打算刪除,如果產品 廠商連絡人 適用于您,我們將會刪除。 

需要更多協助嗎?

想要其他選項嗎?

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

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。

這項資訊有幫助嗎?

您對語言品質的滿意度如何?
以下何者是您會在意的事項?
按下 [提交] 後,您的意見反應將用來改善 Microsoft 產品與服務。 您的 IT 管理員將能夠收集這些資料。 隱私權聲明。

感謝您的意見反應!

×