當您在 Access 中使用關聯式資料時,您經常需要在同一個表單上檢視多個資料表或查詢。 例如,您可能想要同時查看一個資料表中的客戶資料和另一個資料表中的客戶訂單資訊。 子表單讓此作業更簡單,而 Access 提供您數種快速建立子表單的方式。
您想要做什麼?
- 了解子表單
- 建立或新增子表單
- 使用表單精靈建立包含子表單的表單
- 使用 [子表單精靈] 將一或多個子表單新增至現有表單
- 將表單拖曳到其他表單以建立子表單
- 在 [設計檢視] 內的新視窗開啟子表單
- 變更子表單的預設檢視
- 新增相關資料至表單但不建立子表單
了解子表單
子表單是插入到另一個表單中的表單。 主要形式稱為主形式,封閉形式稱為子形式。 表單/子表單組合有時稱為階層表單、主表單/詳細資料表單或父/子表單。
當您想要顯示具有一對多關聯性的資料表或查詢中的資料時,子表單的運作特別有效。 在這種關聯性類型中,主資料表中每筆記錄的主索引鍵值都與相關資料表中一或多個記錄的相符欄位中的值相符。 例如,您可以建立顯示員工資料的表單,以及顯示每個員工訂單的子表單。 [員工] 資料表中的資料是關聯的「一」端。 [訂單] 資料表中的資料是關係的「多端」,因為每個員工可能有一個以上的訂單。
主表單會顯示來自關聯「一」端的資料。
子表單會顯示來自關聯「多端」方面的資料。
這種形式中的主表單和子表單互相連結,因此子表單只會顯示與主表單中目前記錄相關的記錄。 例如,當主表單會顯示方怡君的資訊時,子表單只會顯示其訂單。 如果表單和子表單未連結,則子表單會顯示所有訂單,而不只是 Nancy 的訂單。
下表定義了與子表單相關的術語。 如果您使用本文中的程序,Access 會處理大部分的詳細資料,但是如果您稍後需要進行變更,瞭解幕後發生的情況會很有幫助。
| 字詞 | 定義 |
|---|---|
| 子表單控制項 | 此控制項可將表單內嵌至表單。 您可以將子表單控制項視為資料庫中其他物件的「檢視」,而該物件可以是另一個表單、資料表或查詢。 子表單控制項提供的屬性可讓您將控制項中顯示的資料連結到主表單上的資料。 |
| [來源物件] 屬性 | 子表單控制項的這個屬性會決定控制項中顯示什麼物件。 |
| 資料工作表 | 以資料列及資料欄簡單顯示資料,類似於試算表。 當子表單控制項的來源物件是資料表或查詢,或來源物件是屬性設為 Datasheet的表單Default View時,會顯示資料工作表。 在這些情況下,子表單有時也稱為資料工作表或子資料工作表,而非子表單。 |
| [連結子欄位] 屬性 | 子表單控制項的屬性,指定子表單中的哪些欄位或欄位會將其連結至主表單。 |
| [連結主欄位] 屬性 | 子表單控制項的屬性,指定主表單上的哪些欄位或欄位會將其連結至子表單。 |
注意
- 為獲得最佳結果,請先建立資料表關聯,再依照本文中的程序執行。 如此一來,Access 可自動建立子表單和主表單之間的連結。 若要檢視、新增或修改資料庫中資料表之間的關聯,請在 [資料庫工具 ] 索引標籤上的 [ 資料庫關聯 ] 群組中按一下 [ 關聯]。
- 當子表單控制項將表單做為其來源物件時,它包含您放置在表單上的欄位。 您可以將其視為單一表單、連續表單或資料工作表。 以表單物件為基礎建立子表單的其中一個優點是,您可以將導出欄位新增至子表單,例如
[Quantity] * [Unit price]。 - 您可以建立其來源物件為資料表或查詢的子表單控制項,以將資料工作表或樞紐分析檢視插入表單。 如需詳細資訊,請參閱新增相關資料至表單但不建立子表單一節。
建立或新增子表單
請使用下表來判定最適合您狀況的程序。
| 案例 | 建議程序 |
|---|---|
| 您要 Access 建立主表單及子表單,並且將子表單連結至主表單。 | 使用表單精靈建立包含子表單的表單 |
| 您想要使用現有的表單做為主表單,但是您希望 Access 建立新的子表單,並將其新增至主表單。 | 使用 [子表單精靈] 新增一或多個子表單至現有表單 |
| 您想要使用現有的表單做為主表單,並且想要將一或多個現有表單新增至該表單以做為子表單。 | 將表單拖曳到其他表單以建立子表單 |
使用表單精靈建立包含子表單的表單
這個程序會使用 [表單精靈] 建立新表單及子表單的組合。 如果您尚未建立要做為主要表單或子表單的表單,這也是最快速的開始方式。
在 [建立] 索引標籤上,按一下 [表單] 群組中的 [表單精靈]。
在精靈第一頁的 [資料表/查詢] 下拉式清單中,選取資料表或查詢。 在此範例中,若要建立顯示子表單中每個員工訂單的 [員工] 表單,請選取 [資料表]:[員工] (一對多關聯性) 的「一」端。
注意
無論您是先選取哪一個資料表或查詢,都沒有差別。
按兩下您要從這個資料表或查詢中納入的欄位。
在精靈同一頁的 [資料表/查詢] 下拉式清單中,從清單中選取其他資料表或查詢。 在此範例中,選取一對多關聯) 中「多」端 ([訂單] 資料表。
按兩下您要從這個資料表或查詢中納入的欄位。
按 [下一步] 時 (假設您在啟動精靈前已正確設定關聯),精靈會詢問 [您要如何檢視您的資料?],也就是要依據哪個資料表或查詢。 選取一對多關聯之「一」端的資料表。 在此範例中,若要建立 [員工] 表單,請選取 [依員工]。 精靈會顯示一個小型表單圖表。 頁面應類似於下列圖例:
表單圖表下半部的方塊代表子表單。
注意
如果精靈沒有詢問 [您要如何檢視資料?],則表示 Access 在您選取的資料表或查詢之間未偵測到一對多關聯性。 精靈會繼續,但 Access 將不會新增子表單到表單。 您應該按一下 [取消] 並檢查資料表關聯,然後再繼續。
在精靈頁面的底端,選取 [有子表單的表單] 選項,然後按一下 [下一步]。
在 [您想要每一子表單為何種配置?] 頁面上,按一下想要的版面配置選項,然後按一下 [下一步]。 這兩種版面配置樣式都會以列和欄來排列子表單資料,但表格式版面配置則提供您更多選項。 您可以在表格式子表單中新增色彩、圖形及其他格式設定元素,而資料工作表比較精簡,像是資料表的資料工作表檢視。
在精靈的下一頁中,選取表單的格式化樣式,然後按一下 [下一步]。 如果您在前一頁選擇了 [表格式],那麼您選擇的格式化樣式也會套用至子表單。
在精靈的最後一頁上,輸入您要的表單標題。 Access 會根據您輸入的標題來命名表單,並根據您為子表單輸入的標題來標示子表單。
指定您是否要在 [表單檢視] 中開啟表單,以便檢視或輸入資訊,或在 [設計檢視] 中開啟表單,以便修改其設計,然後按一下 [完成]。 Access 會建立兩個表單,一個用於包含子表單控制項的主要表單,另一個用於子表單本身。
使用 [子表單精靈] 新增一或多個子表單至現有表單
使用此程序可新增一或多個子表單至現有表單。 對每個子表單,您可以選擇讓 Access 建立新表單或使用現有表單做為子表單。
- 以滑鼠右鍵按一下 [功能窗格] 中的表單,然後按一下 [設計檢視]。
- 在 [表單設計 ] 索引標籤的 [控制項 ] 群組中,按一下向下箭號以顯示 [控制項 ] 庫,並確保已選取 [使用控制項精靈 ]。
- 在 [表單設計 ] 索引標籤的 [控制項 ] 群組中,按一下 [子表單/子報表 ] 按鈕。
- 按一下您要放置子表單的表單。
- 依照精靈的指示執行。 您按一下 [完成] 時,Access 會新增一個子表單控制項至表單。 如果您選擇讓 Access 為子表單建立新表單,而不是使用現有的表單,Access 就會建立新表單物件,並將其新增至 [功能窗格]。
將表單拖曳到其他表單以建立子表單
如果您想要使用現有表單做為主要表單,並將一或多個現有表單新增到表單中做為子表單,請使用此程序。
- 在 [功能窗格] 中,以滑鼠右鍵按一下要做為主表單的表單,然後按一下 [版面配置檢視]。
- 從 [功能窗格] 將要做為子表單的表單拖曳至主表單上。 Access 會新增子表單控制項至主表單,並將該控制項繫結至您從 [功能窗格] 拖曳的表單。 Access 也會根據資料庫中定義的關聯,嘗試將子表單連結至主表單。
- 重複這個步驟,以新增其他任何子表單到主表單。
- 若要確認連結成功,請在 [常用] 索引標籤上,按一下 [檢視] 群組中的 [檢視],按一下 [表單檢視],然後使用主表單的記錄選取器移到前幾筆記錄。 如果每個員工的子表單篩選正確,表示該程序已完成。
如果先前的測試無效,Access 就無法判斷如何將子表單連結至主表單,而且 Link Child Fields 子表單控制項的 AND Link Master Fields 屬性為空白。 您必須執行下列動作,手動設定這些屬性:
以滑鼠右鍵按一下 [功能窗格] 中的主表單,然後按一下 [設計檢視]。
按一下子表單控制項以便選取。
如果未顯示 [屬性工作表] 工作窗格,請按 F4 加以顯示。
按一下 [屬性表] 中的 [資料] 索引標籤。
按一下屬性方塊旁的
Link Child Fields[組建] 按鈕。
此時會出現 [子表單欄位連結器 ] 對話方塊。在 [主欄位] 和 [子欄位] 下拉式清單中,選取要用來連結表單的欄位,然後按一下 [確定]。 如果您不確定要使用哪些欄位,請按一下 [建議],讓 Access 嘗試判斷連結欄位。
秘訣
如果您沒有看到您要用來連結表單的欄位,您可能需要編輯主表單或子表單的記錄來源,以確保包含連結欄位。 例如,如果該表單是以查詢為基礎,您應該確保連結欄位有出現在查詢結果中。
儲存主表單並切換到 [表單檢視],然後確認該表單如預期般運作。
在 [設計檢視] 內的新視窗開啟子表單
如果您想要在 [設計檢視] 中處理主表單的時候變更其子表單的設計,您可以在獨立的視窗中開啟子表單:
- 按一下子表單以選取它。
- 在 [表單設計 ] 索引標籤的 [工具 ] 群組中,按一下 [新視窗中的子表單]。
變更子表單的預設檢視
當您將子表單新增至表單時,子表單/子報表控制項會根據子表單的 Default View 屬性顯示子表單。 這個屬性可以設定為下列值:
- 單一表單
- 連續表單
- 資料工作表
- 分割表單
當您第一次建立子表單時,此屬性可能會設定為 [連續表單 ] 或 [單一表單]。 不過,如果您將 Default View 子表單的屬性設為 Datasheet,則子表單會在主表單上顯示為資料工作表。
若要設定 Default View 子表單的屬性:
關閉任何開啟的物件。
在 [功能窗格] 中,以滑鼠右鍵按一下子表單,然後按一下 [設計檢視]。
如果沒有顯示屬性表,請按 F4 以顯示屬性表。
在 [屬性表] 頂端的下拉式清單中,確定已選取 [表單]。
在 [屬性表] 的 [格式] 索引標籤上,將 [預設檢視方法] 屬性設定為您要使用的檢視。
注意
如果您想要使用的檢視不在清單中,請確定
Allow...View該檢視的屬性設為 [是]。 例如,如果要將 [資料工作表] 指定為表單的預設檢視,請確認 [允許資料工作表檢視] 屬性設定為 [是]。儲存並關閉子表單,然後開啟主表單以查看結果。
新增相關資料至表單但不建立子表單
您不一定需要建立個別的表單物件來顯示相關資料。 例如,如果您正在 [版面配置檢視] 或 [設計檢視] 中處理表單,並且將資料表或查詢從 [功能窗格] 拖曳到該表單,Access 就會建立子表單/子報表控制項來顯示該物件中的資料。 物件的 Default View 屬性決定資料的顯示方式。 一般而言,這會設為 [資料工作表檢視],但您也可以將 Default View 資料表或查詢的屬性設為 [ 單一表單]、[ 分割表單] 或 [連續表單],讓您更有彈性在表單上顯示相關資料。
注意
變更 Default View 資料表或查詢的屬性將決定無論您是從 [瀏覽窗格] 開啟,還是在子表單/子報表控制項中檢視,每當開啟資料表或查詢時該屬性的顯示方式。 因為若變更資料表的檢視設定,有時從 [功能窗格] 開啟資料表時可能會造成混淆,因此建議執行此程序時使用查詢,而不要使用表格。