创建和使用子报表

重要:  本文是由机器翻译的,请参阅免责声明。请在 此处 中查找本文的英文版本以便参考。

使用关系数据(其中相关的数据存储在不同的表中)时,通常需要从同一报表上的多个表或查询中查看信息。例如,要同时查看客户数据和客户的订单信息。此时,子报表是非常有用的工具,因为它可以按符合逻辑其易于阅读的方式在报表上同时显示订单信息和客户信息。Microsoft Office Access 2007 为您提供了多种快速创建子报表的方法。

您要做什么?

了解子报表

创建子报表

更改子报表设计

了解子报表

子报表是插入另一个报表中的报表。当合并报表时,其中之一必须作为主报表包含的其他报告。主报表是绑定未绑定。绑定的报表是一种可显示数据,具有一个表,其记录源属性中指定查询或 SQL 语句。未绑定的报表是一种不基于表、 查询或 SQL 语句 (即,报表的记录源属性为空)。

提示: Access 2010 中的报表有控件布局,帮助,请注意事项们和看起来很好 !

具有两个不相关的子报表的未绑定主报表的示例   

未绑定主报表无法显示其本身的任何数据,但是仍然可以作为要合并的不相关子报表的主报表。

带有两个显示不相关数据的子报表的未绑定主报表

1. 未绑定主报表包含两个子报表。

2. 一个子报表按照员工汇总销售额。

3. 另一个子报表按照类别汇总销售额。

绑定到同一记录源的主报表和子报表的示例   

可以使用主报表显示明细记录(如全年的每项销售额),然后使用子报表显示汇总信息(如每季度的总销售额)。

绑定到同一记录源的主报表和子报表

1. 子报表按季度汇总全年的销售额。

2. 主报表列出日常销售额。

相关记录源中的主报表和子报表绑定到的示例   

主报表包含一个或多个子报表通用的数据。在此情况下,子报表包含与主报表中的数据相关的数据。

带有两个显示相关数据的子报表的主报表

1. 主报表列出每个会议的名称和城市。

2. 子报表列出参加每个会议的代表。

报表上的子窗体

主报表可以包含子窗体除了子报表,并可以包含多个子窗体和子报表。此外,主报表可以包含多达七个级别的子窗体和子报表。例如,报表可以包含子报表,和子报表可以包含子窗体或子报表,等等,向上深层七个级别。

如果向报表中添加了子窗体,然后在“报表视图”中打开报表,则可以使用子窗体对记录进行筛选和浏览。附加到窗体及其控件的 Visual Basic for Applications (VBA) 代码和嵌入的宏仍可以运行,不过某些事件在此环境中会被禁用。无法使用报表上的子窗体添加、编辑或删除记录。

将报表链接到子窗体或子报表

插入包含与主报表中的数据相关的信息的子窗体或子报表时,必须将子报表控件链接到主报表。此链接可确保子窗体或子报表中显示的记录与主报表中显示的记录相对应。

使用向导或通过将对象从导航窗格拖动到报表创建子窗体或子报表时,如果满足下列条件的任何一个,Access 会自动将子窗体或子报表链接到主报表。

  • 定义您的选择,表的关系或您定义基础的查询选择表关系。

    有关创建关系的详细信息,请参见“请参阅”部分中的链接。

  • 主报表基于带有主键的表,而子窗体或子报表基于包含与主键同名的字段并且具有相同或兼容的数据类型的表。例如,如果主报表的基础表的主键是“自动编号”字段且其 FieldSize 属性设置为长整型,则子窗体或子报表的基础表的对应字段必须是“数字”字段且其 FieldSize 属性设置为长整型。如果选择查询作为子窗体或子报表的记录源,则查询中的基础表必须满足相同的条件。

返回页首

创建子报表

如果子报表将链接到主报表中,确保使用以下过程之前,将相关的基础记录源。有关创建关系的详细信息,请参阅另请参阅部分中的链接。

使用子报表向导创建子报表

  1. 在设计视图中打开要用作主报表的报表。

  2. 设计选项卡上的控件组中,确保使用控件向导 按钮图像 已选中。 按钮图像

  3. 设计选项卡上的控件组中,单击子窗体/子报表 按钮图像

  4. 在报表上,单击要放置子报表的位置。

  5. 在子报表向导的第一页上,如果要基于某个表或查询创建新的子窗体或子报表,请单击“使用现有的表和查询”。如果存在要用作子报表的现有报表或窗体,请单击“使用现有的报表或窗体”,从列表中选择该报表或窗体,然后单击“下一步”

    在子报表向导中选择数据源

  6. 如果在向导的上一页中选择了“使用现有的报表或窗体”,则跳过此步骤直接转到步骤 7。否则,从“表/查询”列表中选择包含要包括在子报表中的字段的表或查询,然后在“可用字段”列表中双击所需的字段以将其添加到子报表中。

    在子报表向导中选择字段

    如果计划将子报表链接到主报表,请确保包含要用于创建该链接的字段,即使您不想显示这些字段也是如此。通常,链接字段是一个 ID 字段。在上图中,“订单”表是子报表的记录源,“客户”表是主报表的记录源。因为“订单”表通过“客户 ID”字段与“客户”表相关,所以将该字段添加到了“选定字段”列表。

    注意: 可以在子报表中包含来自多个表和查询的字段。完成从一个表中添加字段后,请从“表/查询”列表中选择下一个表或查询,然后添加所需的字段。

    单击“下一步”继续。

  7. 在此向导页上,确定将子报表链接到主报表的方式。如果 Access 发现了看似适于链接子报表和主报表的字段,向导将显示可能的链接建议列表。

    Access 在子报表向导中建议链接字段

    可以根据您的情况选择最适合的链接建议,如果不希望将子报表链接到主报表,请选择“无”。如果要将子报表链接到主报表,但又没有适合的建议项,请选择“自行定义”

    注意: 如果向导找不到适合的链接字段,则不会显示链接建议列表,而是自动选择“自行定义”选项。

    在子报表向导中定义自己的链接

    选择“自行定义”选项时,向导将显示两个列表。

    • “窗体/报表字段”下,从主报表中选择要用于将主报表链接到子窗体或子报表的字段。最多可以选择三个字段,选择的每个字段必须与子窗体或子报表的数据源中的相关字段匹配。

    • “子窗体/子报表字段”下,从子窗体或子报表中选择链接到所选的主报表字段的对应字段。

    • 要使子窗体或子报表不链接到主报表,请确保所有的列表均为空。

      单击“下一步”继续。

  8. 在向导的最后一页上,键入子窗体或子报表的名称,或单击“完成”接受默认名称。

    在子报表向导中添加名称

Access 将子报表控件添加到报表,并将控件绑定 (即,设置控件的源对象属性),如下所示︰

  • 如果在向导的第一页上选择了“使用现有的报表或窗体”,Access 会将子报表控件绑定到指定的报表或窗体。

  • 如果在向导的第一页上选择了“使用现有的表和查询”,Access 会在导航窗格中创建新的报表对象,然后将子报表控件绑定到该对象。新报表对象的名称与您在向导的最后一页上键入的名称相同。

将表、查询、窗体或报表作为子报表添加到报表

若要向报表添加子报表的一种快速方法是在设计视图中打开主报表,然后将对象从导航窗格拖动到它。如果您想要链接到主报表的子报表的子窗体,请确保基础记录源相关和记录源,包括用于链接到主报表的子窗体或子报表的字段。有关创建关系的详细信息,请参阅另请参阅部分中的链接。

  1. 在导航窗格中右键单击要用作主报表的报表,然后单击快捷菜单上的“设计视图”

  2. 将表、查询、窗体或其他报表从导航窗格中拖到主报表中要显示子报表的部分。

Access 执行下列操作之一:

  • 如果 Access 可以确定链接两个对象的方法,Access 将向报表中添加一个子报表控件。如果添加窗体或报表,Access 会将子报表控件绑定到该对象。如果添加表或查询,则 Access 首先创建一个报表对象,然后将子报表控件绑定到该新对象。

  • 如果 Access 不能确定如何链接两个对象,将出现子报表向导。若要继续,请按照部分创建子报表、 启动与步骤 7 中的步骤。

    完成向导之后,Access 即将子报表添加到报表。

使用以下过程认真检查子窗体或子报表是否正确链接到了主报表。

  1. 单击子报表控件以将其选中。

  2. 如果尚未显示属性表,请按 F4 来显示它。

  3. 在属性表的“数据”选项卡上,检查“链接主字段”“链接子字段”属性。

    • 对于未链接的子窗体或子报表,这两个属性都应为空。

    • 对于已链接的子窗体或子报表,“链接主字段”“链接子字段”属性应显示将两个对象关联到一起的字段。例如,如果主报表显示来自“员工”表的信息,而子窗体或子报表显示来自“订单”表的信息,则“链接主字段”属性应显示来自“员工”表的“ID”字段,而“链接子字段”属性应显示来自“订单”表的“员工 ID”字段。

您可能会发现需要编辑这些属性以使子窗体或子报表正确工作。为此,请按照以下过程操作。

  1. 在属性表的数据选项卡上,单击链接主字段属性框,然后单击 “生成器”按钮

    将出现“子报表字段链接器”对话框。

    “子报表字段链接器”对话框

  2. “主字段”“子字段”列表中,选择要用于链接报表的字段。如果不能确定使用哪些字段,请单击“建议”以使 Access 尝试确定链接字段。完成后,单击“确定”

    如果看不到要用于链接报表的字段,则您需要编辑主报表或者子窗体或子报表的记录源以确保其包含链接字段。例如,如果报表基于查询,则您应该确保链接字段存在于查询结果中。

  3. 保存主报表并切换到报表视图,然后验证报表是否按您的预期工作。

将表或查询作为数据表添加到报表

数据表是数据的一种简单可视表示形式,与电子表格类似。数据表中的每一列表示源表或源查询中的一个字段,每一行表示一条记录。可以使用子窗体/子报表控件在报表上显示数据表。在需要紧凑显示数据而又不需要使用窗体或报表对象的格式功能的情况下,可以使用这种好方法。要将数据表添加到报表,请执行下列操作:

  1. 在导航窗格中右键单击要用作主报表的报表,然后单击快捷菜单上的“设计视图”

  2. 设计选项卡的控件组中,确保使用控件向导未选中。 按钮图像

  3. 设计选项卡上的控件组中,单击子窗体/子报表工具 按钮图像

  4. 在报表上,单击要放置子报表的位置。

  5. 如果启动了“子报表向导”,请单击“取消”将其关闭。

  6. 如果尚未显示属性表,请按 F4 来显示它。

  7. 在报表上,单击新的子报表控件以将其选中。

  8. 在属性表的“数据”选项卡上,单击源对象属性框中的箭头,然后单击要在子报表控件中显示的表或查询。例如,要显示“订单”表,请单击“表.订单”

    Access 试图基于在数据库中定义的关系将数据表链接到主报表。

  9. 在属性表的“数据”选项卡上,检查“链接主字段”“链接子字段”属性。

    • 对于未链接的数据表,请确保这两个属性都为空。

    • 对于已链接的数据表,请确保“链接主字段”“链接子字段”属性显示将主报表关联到数据表的字段。例如,如果主报表显示来自“员工”表的信息,而数据表显示来自“订单”表的信息,则“链接主字段”属性应显示来自“员工”表的“ID”字段,而“链接子字段”属性应显示来自“订单”表的“员工 ID”字段。

在某些情况下,您可能需要自己设置链接字段属性。为此,可以按照以下过程操作。

  1. 在属性表的数据选项卡上,单击链接主字段属性框,然后单击 “生成器”按钮

    将出现“子报表字段链接器”对话框。

    “子报表字段链接器”对话框

  2. “主字段”“子字段”列表中,选择要用于将主报表链接到数据表的字段。如果不能确定使用哪些字段,请单击“建议”以使 Access 尝试确定链接字段。完成后,单击“确定”

    如果看不到要用于链接的字段,则您需要编辑主报表或者数据表的记录源以确保其包含链接字段。例如,如果数据表基于查询,则您应该确保链接字段存在于查询结果中。

  3. 保存主报表并切换到报表视图,然后验证报表是否按您的预期工作。

返回页首

对子报表进行设计更改

向报表中添加子报表之后,您可能要更改子报表的设计或在主报表上引用子报表数据。以下各部分提供了如何完成这些任务的提示。

在设计视图的新窗口中打开子窗体或子报表

要在设计视图中使用主报表时更改子窗体或子报表的设计,可以在其自己的窗口中打开子窗体或子报表。

  1. 单击子窗体或子报表以将其选中。

  2. 设计选项卡的工具组中,单击在新窗口中的子报表 按钮图像

注意: 如果子窗体/子报表被绑定到表或查询,则此命令不可用。

在主报表上显示某子报表的总和

假设您正在使用名为“Orders”的子报表,此报表包含名为“Shipping Fee Total”的文本框,该文本框计算“Shipping Fee”列的总和。要在主报表上显示该子报表的总和,必须向主报表添加一个文本框,然后使用表达式引用子报表上的“Shipping Fee Total”文本框。为此,可以按照以下过程操作。

  1. 在导航窗格中右键单击主报表,然后单击快捷菜单上的“布局视图”

  2. 设计选项卡上的控件组中,单击文本框按钮图像

  3. 在主报表上,单击要放置新文本框的位置。

  4. 如果尚未显示属性表,请按 F4 来显示它。

  5. 在属性表的“数据”选项卡上的“控件源”属性框中,键入以下表达式。

    = IIf (IsError ([订单子报表]。 [报表] ![运费总费用]),0,[订单子报表]。[报表] ![传送费用合计])

    注释: 

    • 在此示例中,您可以使用更简单的表达式= [订单子报表]。 [报表] ![费用汇总了收货地址]但是,然后,如果子报表不包含任何数据,主报表上的控件显示#ErrorIsError函数内使用IIf函数,如下所示的第一个表达式,确保在主报表的文本框中显示零 (0),如果子报表不返回任何数据。

    • 可以使用表达式生成器创建表达式,通过单击控件来源属性框中的 “生成器”按钮

  6. 在属性表的“格式”选项卡上,将“格式”属性设置为合适的值(本例中为“货币”)。

  7. 保存报表并切换到报表视图,验证计算是否按您的预期工作。

返回页首

注意: 机器翻译免责声明:本文是由无人工介入的计算机系统翻译的。Microsoft 提供机器翻译是为了帮助非英语国家/地区用户方便阅读有关 Microsoft 产品、服务和技术的内容。由于机器翻译的原因,本文可能包含词汇、语法或文法方面的错误。

扩展你的技能
了解培训
抢先获得新功能
加入 Office 预览体验计划

此信息是否有帮助?

谢谢您的反馈!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×