建立和使用子報表

重要:  本文係由機器翻譯而成,請參閱免責聲明。本文的英文版本請見這裡,以供參考。

當您使用相關資料 (其中相關資料儲存在其他資料表中) 時,經常需要在同一份報表上檢視來自多個資料表或查詢的資訊。例如,您想要查看客戶資料,但是也想要同時查看有關客戶訂單的資訊,那麼子報表就是一項很有用的工具,可以執行這項作業,因為它能夠以一種符合邏輯、容易閱讀的方式,在包含客戶資訊的報表上顯示訂單資訊。而 Microsoft Office Access 2007 提供了許多方式協助您迅速建立子報表。

您想要做什麼?

了解子報表

建立子報表

變更子報表的設計

瞭解子報表

子報表是插入其他報表中的報表。當您合併的報表時,其中必須做為包含其他報表的主報表。主報表就是繫結繫結。結合的報表是可以顯示的資料具有表格,其記錄來源] 屬性中指定的查詢或 SQL 陳述式。繫結的報表是不基礎資料表、 查詢或 SQL 陳述式 (也就是報表的 [記錄來源] 屬性是空白)。

提示: 在 Access 2010 中的報表有控制項版面配置,有助於防止對齊項目,尋找 [建議 !

兩個不相關的子報表的未結合主報表的範例   

未結合的主報表無法顯示本身擁有的任何資料,不過仍然可以做為您要結合的不相關子報表的主報表。

含有兩個顯示不相關資料之子報表的未結合主報表

1. 未結合主報表包含兩個子報表。

2. 其中一個子報表會依照員工合計銷售量。

3. 另一個子報表會依照類別合計銷售量。

繫結至相同的記錄來源的主報表和子報表的範例   

您可以使用主報表顯示詳細記錄 (例如一年中的每一筆銷售),然後使用子報表顯示摘要資訊 (例如每一季的總銷售量)。

與相同資料來源結合的主報表和子報表

1. 子報表會按季合計年度銷售量。

2. 主報表會列出每天的銷售量。

範例主報表和子報表繫結至相關記錄來源   

主報表可以包含一個或多個子報表常用的資料。在此案例中,子報表包含與主報表中資料相關的資料。

包含兩個顯示相關資料之子報表的主報表

1. 主報表會列出每個商展的名稱和城市。

2. 子報表會列出將參與每個商展的銷售代表。

報表上的子表單

主報表可以包含子表單,除了子報表可以包含多個子表單並為您的報表。此外,主報表可以包含子表單和子七個層級。例如,報表可以包含子報表,及該報表可以包含子表單或子報表和等等,最多七個層。

如果您將子表單新增至報表,然後在 [報表] 檢視中開啟該報表,則可以使用子表單篩選和瀏覽記錄。即使內容中的某些事件已停用,附加至表單的 Visual Basic for Applications (VBA) 程式碼和內嵌巨集及其控制項仍會執行。您無法使用報表上的子表單新增、編輯或刪除記錄。

連結報表至子表單或子報表

如果您插入的子表單或子報表中包含的資訊與主報表中的資料相關,則子報表控制項必須連結至主報表。連結可確保子表單或子報表中顯示的記錄正確對應到主報表中列印的記錄。

當您使用精靈或從功能窗格將物件拖曳到報表中的方式建立子表單或子報表時,如果符合下列其中一項條件,則 Access 會自動將子表單或子報表連結至主報表。

  • 定義關聯資料表選取,或由您定義查詢基礎資料表的關聯。

    如需有關建立關聯性的詳細資訊,請參閱 [請參閱] 區段中的連結。

  • 主報表是以含有主索引鍵的資料表為基礎,而子表單或子報表是以包含與主索引鍵同名的欄位,且資料類型相同或相容的資料表為基礎。例如,如果主報表之下的資料表中,主索引鍵為 [自動編號] 欄位,而且其 [欄位大小] 屬性設為 [長整數],則子表單或子報表之下的資料表中,對應的欄位必須是 [數字] 欄位,且其 [欄位大小] 屬性必須設為 [長整數]。如果您選取查詢做為子表單或子報表的記錄來源,則查詢中的基本資料表必須符合相同的條件。

頁面頂端

建立子報表

If the subreport will be linked to the main report, ensure that the underlying record sources are related before using the following procedure. For more information about creating relationships, see the links in the See Also section.

使用子報表精靈建立子報表

  1. 在 [設計檢視] 中開啟要用來做為主報表的報表。

  2. 在 [設計] 索引標籤的 [控制項] 群組中,確認已選取 [使用控制項精靈 按鈕圖像按鈕圖像

  3. 按一下 [設計] 索引標籤的 [控制項] 群組中的 [子表單/子報表 按鈕圖像

  4. 在報表上按一下要放置子報表的位置。

  5. 如果您要建立新的子表單或子報表,並且以資料表或查詢做為其基礎,請在 [子報表精靈] 的第一頁上按一下 [使用現存的資料表或查詢]。如果有要做為子報表使用的現有報表或表單,請按一下 [使用現有的報表或表單],選取清單中的報表或表單,然後按 [下一步]

    在 [子報表精靈] 中選擇資料的來源

  6. 如果您在精靈的上一頁中選擇了 [使用現有的報表或表單],請略過這個步驟並直接移到步驟 7。否則從 [資料表/查詢] 清單中,選取包含要納入子報表中之欄位的資料表或查詢,然後按兩下 [可用的欄位] 清單中需要的欄位,將這些欄位新增至子報表。

    在 [子報表精靈] 中選擇欄位

    如果您打算將子報表連結至主報表,務必包括要用來建立連結的欄位 (即使您不想顯示這些欄位)。一般來說,連結欄位為編號欄位。在上圖中,[訂單] 資料表為子報表的記錄來源,而 [客戶] 資料表為主報表的記錄來源。由於 [訂單] 資料表是透過 [客戶編號] 欄位與 [客戶] 資料表相關聯,因此該欄位會新增至 [已選取的欄位] 清單中。

    附註: 您可以在子表單中加入來自多個資料表和查詢的欄位。當您完成從某個資料表新增欄位時,請從 [資料表/查詢] 清單選取下一個資料表或查詢,然後新增您要的欄位。

    請按 [下一步] 繼續。

  7. 在精靈的這一頁上,您會決定如何將子報表連結至主報表。如果 Access 發現適合用來連結子報表至主報表的欄位,則精靈會顯示可能連結建議的清單。

    Access 在 [子報表精靈] 中建議連結的欄位

    您可以選取最適合的連結建議,或是如果您不想讓子報表連結至主報表,則選取 [無]。如果您要將子報表連結至主報表,但是沒有適合的建議,請按一下 [定義自己專屬的欄位]

    附註: 如果精靈找不到適合的連結欄位,則不會提供連結建議清單,而會自動選取 [定義自己專屬的欄位] 選項。

    在 [子報表精靈] 中定義自己的連結

    選取 [定義自己專屬的欄位] 選項時,精靈會顯示兩份清單。

    • [表單/報表欄位] 下,選取主報表上要用來連結主報表與子表單或子報表的欄位。您最多可以選取三個欄位,而且您選取的每個欄位都必須符合子表單或子報表的資料來源中相關的欄位。

    • [子表單/子報表欄位] 下,選取子表單或子報表上連結至所選取主報表欄位的對應欄位。

    • 如果不要讓子表單或子報表連結至主報表,請確定所有清單都是空的。

      請按 [下一步] 繼續。

  8. 在精靈的最後一頁上,輸入子表單或子報表的名稱,或是按一下 [完成] 接受預設值。

    在 [子報表精靈] 中新增名稱

Access 會子報表控制項至報表並繫結控制項 (也就是設定控制項的來源物件屬性),如下所示︰

  • 如果您在精靈的第一頁上選取 [使用現有的報表或表單],則 Access 會將子報表控制項繫結至您指定的報表或表單。

  • 如果您在精靈的第一頁上選取 [使用現存的資料表或查詢],則 Access 會在功能窗格中建立新的報表物件,然後將子報表控制項繫結至此物件。新報表物件的名稱與您在精靈最後一頁上輸入的名稱相同。

新增資料表、查詢、表單或報表至報表做為子報表

A quick way to add a subreport to a report is to open the main report in Design view and then drag an object from the Navigation Pane to it. If you want the subform or subreport to be linked to the main report, ensure that the underlying record sources are related and that the record sources include the fields that will be used to link the subform or subreport to the main report. For more information about creating relationships, see the links in the See Also section.

  1. 在功能窗格中,用滑鼠右鍵按一下要用來做為主報表的報表,然後按一下快顯功能表中的 [設計檢視]

  2. 從功能窗格將資料表、查詢、表單或另一個報表拖曳至主報表中要顯示子報表的區段。

Access 會執行下列其中一項操作:

  • 如果 Access 能夠決定如何連結兩個物件,則 Access 會將子報表控制項新增至報表。如果您新增表單或報表,Access 會將子報表控制項繫結至該物件。如果您新增資料表或查詢,則 Access 會先建立報表物件,然後將子報表控制項繫結至新物件。

  • 如果 Access 無法決定如何連結兩個物件,則會出現子報表精靈。若要繼續,請遵循建立子報表、 啟動步驟 7] 區段中的程序。

    完成精靈之後,Access 會將子報表新增至報表。

請使用下列程序再次檢查子表單或子報表是否正確連結至主報表。

  1. 按一下子報表控制項加以選取。

  2. 如果屬性表尚未顯示,請按 F4 鍵以顯示屬性表。

  3. 在屬性表的 [資料] 索引標籤上,檢查 [連結主欄位][連結子欄位] 屬性。

    • 針對未連結的子表單或子報表,這兩個屬性都應該是空白的。

    • 針對連結的子表單或子報表,[連結主欄位][連結子欄位] 屬性應顯示建立兩個物件之間關聯的欄位。例如,如果主報表顯示來自 [員工] 資料表的資訊,而子表單或子報表顯示來自 [訂單] 資料表的資訊,則 [連結主欄位] 屬性應顯示 [員工] 資料表的 [編號] 欄位,而 [連結子欄位] 屬性應顯示 [訂單] 資料表的 [員工編號] 欄位。

您可能會發現這些屬性需要經過編輯,子表單或子報表才能正常運作。請依照下列程序執行。

  1. 在 [資料] 索引標籤的屬性工作表上按一下 [連結主欄位] 屬性方塊,然後按一下 [建立器] 按鈕

    [子報表欄位連結器] 對話方塊隨即出現。

    [子報表欄位連結器] 對話方塊

  2. [主欄位][子欄位] 清單中,選取要與報表連結的欄位。如果您不確定要使用哪些欄位,請按一下 [建議] 讓 Access 嘗試決定連結欄位。完成時按一下 [確定]

    如果您沒有看見要用來連結報表的欄位,則需編輯主報表或子表單或子報表的記錄來源,以確定其中包含連結欄位。例如,如果報表是以查詢為基礎,則應確認查詢結果中有連結欄位。

  3. 儲存主報表並切換至 [報表檢視],然後驗證報表是否如預期地運作。

新增資料表或查詢至報表,做為資料工作表

資料工作表是簡單的資料視覺呈現,與試算表相似。資料工作表中的每個資料行代表來源資料表或查詢中的一個欄位,而每個資料列則代表一筆記錄。您可以使用 [子表單/子報表] 控制項在報表上顯示資料工作表。當您想要顯示壓縮的資料,但是不會用到表單或報表物件的格式設定功能時,這會是相當實用的技巧。若要新增資料工作表至報表:

  1. 在功能窗格中,用滑鼠右鍵按一下要用來做為主報表的報表,然後按一下快顯功能表中的 [設計檢視]

  2. 在 [設計] 索引標籤的 [控制項] 群組中,確定未選取 [使用控制項精靈按鈕圖像

  3. 按一下 [設計] 索引標籤的 [控制項] 群組中的 [子表單/子報表工具 按鈕圖像

  4. 在報表上按一下要放置子報表的位置。

  5. 如果 [子報表精靈] 啟動,請按一下 [取消] 將它關閉。

  6. 如果屬性表尚未顯示,請按 F4 鍵以顯示屬性表。

  7. 在報表上按一下新的子報表控制項予以選取。

  8. 在屬性表的 [資料] 索引標籤上,按一下 [來源物件] 屬性方塊中的箭頭,然後按一下要在子報表控制項中顯示的資料表或查詢。例如,若要顯示 [訂單] 資料表,請按一下 [表單。訂單]

    Access 會根據資料庫中定義的關聯性,嘗試將資料工作表連結至主報表。

  9. 在屬性表的 [資料] 索引標籤上,檢查 [連結主欄位][連結子欄位] 屬性。

    • 針對未連結的資料工作表,務必確定這兩個屬性都是空白的。

    • 針對連結的資料工作表,務必確定 [連結主欄位][連結子欄位] 屬性,顯示了將主報表連結到資料工作表的欄位。例如,如果主報表顯示來自 [員工] 資料表的資訊,而資料工作表顯示來自 [訂單] 資料表的資訊,則 [連結主欄位] 屬性應顯示 [員工] 資料表的 [編號] 欄位,而 [連結子欄位] 屬性應顯示 [訂單] 資料表的 [員工編號] 欄位。

在某些情況下,您可能需要自行設定連結欄位的屬性。您可以使用下列程序執行這項操作。

  1. 在 [資料] 索引標籤的屬性工作表上按一下 [連結主欄位] 屬性方塊,然後按一下 [建立器] 按鈕

    [子報表欄位連結器] 對話方塊隨即出現。

    [子報表欄位連結器] 對話方塊

  2. [主欄位][子欄位] 清單中,選取要用來將主報表連結至資料工作表的欄位。如果您不確定要使用哪些欄位,請按一下 [建議] 讓 Access 嘗試決定連結欄位。完成時按一下 [確定]

    如果您沒有看見要用於連結的欄位,就必須編輯主報表或資料工作表的記錄來源,以確定其中包含了連結欄位。例如,如果資料工作表是以查詢為基礎,則應確認查詢結果中有連結欄位。

  3. 儲存主報表並切換至 [報表檢視],然後驗證報表是否如預期地運作。

頁面頂端

對子報表進行設計變更

新增子報表至報表之後,您可能想要對子報表進行設計變更,或是想要在主報表上參考子報表的資料。以下各節將提供如何完成這些工作的秘訣。

在設計檢視中以新視窗開啟子表單或子報表

在 [設計檢視] 中,若要在主報表上執行工作的同時,對子表單或子報表進行設計變更,您可以讓子表單或子報表以自己的視窗開啟。

  1. 按一下子表單或子報表予以選取。

  2. 在 [設計] 索引標籤中 [工具] 群組中,按一下 [在新視窗中的子報表 按鈕圖像

附註: 這個指令無法在子表單/子報表控制項與資料表或查詢結合時使用。

在主報表上顯示子報表的總計

假設您使用名為 [訂單子報表] 的子報表,其中包含名為 [總運費] 的文字方塊,而且該文字方塊會計算 [運費] 資料行的合計。若要在主報表上顯示子報表的合計,您必須將文字方塊新增至主報表,然後使用運算式參考子報表上的 [總運費] 文字方塊。您可以使用下列程序執行這項操作。

  1. 用滑鼠右鍵按一下功能窗格中的主報表,然後按一下快顯功能表中的 [設計檢視]

  2. 按一下 [設計] 索引標籤的 [控制項] 群組中的 [文字] 方塊按鈕圖像

  3. 在主報表上,按一下要放置新文字方塊的位置。

  4. 如果屬性表尚未顯示,請按 F4 鍵以顯示屬性表。

  5. 在屬性表的 [資料] 索引標籤上,於 [控制項來源] 屬性方塊中輸入下列運算式。

    = IIf (IsError ([訂單子報表]。 [報表] ![運送費用總計]),0,[訂單子報表]。[報表] ![傳送費用總計])

    附註: 

    • 在此範例中,您可以使用更簡單的運算式= [訂單子報表]。 [報表] ![傳送費用總計]但是,如果子報表不含任何資料,主報表上的控制項會顯示#Error。使用IIf函數,內IsError函數,如下圖所示,在第一個運算式中,可確保在主報表中的 [文字] 方塊會顯示零 (0),如果子報表不會傳回任何資料。

    • 您可以使用 [運算式建立器建立運算式,即可在 [控制項資料來源] 屬性方塊中的 [建立器] 按鈕

  6. 在屬性表的 [格式] 索引標籤上,將 [格式] 屬性設為適當的值 (本案例中為 [貨幣])。

  7. 儲存報表,然後切換至 [報表檢視],驗證計算是否如預期般運作。

頁面頂端

附註: 機器翻譯免責聲明︰本文係以電腦系統翻譯而成,未經人為介入。Microsoft 提供此等機器翻譯旨在協助非英語系使用者輕鬆閱讀 Microsoft 產品、服務及技術相關內容。基於本文乃由機器翻譯而成,因此文中可能出現詞辭、語法、文法上之錯誤。

擴展您的技能
探索訓練
優先取得新功能
加入 Office 測試人員

這項資訊有幫助嗎?

感謝您的意見反應!

感謝您的意見反應! 我們將協助您與其中一位 Office 支援專員連絡以深入了解您的意見。

×