第 6 课:添加包含参数的子报表

新建日期: 2006 年 7 月 17 日

子报表提供了在主报表中嵌入报表的途径。 钻取报表是在同一窗口中打开单独的报表,而子报表是以嵌入主报表中的报表项的形式出现。 虽然任何报表都可以是子报表,但通常需要对用作子报表的报表设置格式,以便改善其在主报表中的显示方式。

在本课中,您将添加 ContactInformation 报表作为 Resellers Worldwide 报表的子报表。 您将学习如何向表添加子报表并在主报表中设置其属性,包括将主报表参数绑定到子报表参数。

打开“高级参数教程”报表服务器项目

  1. SQL Server Business Intelligence Development Studio 中,打开“高级参数教程”报表服务器项目(如果尚未打开)。

  2. 在解决方案资源管理器中,双击 Resellers Worldwide 报表。 系统将在“布局”视图中打开此报表。

在下一步中,您将向该主报表添加多值参数 ContactDisplayFields。 在子报表上设置参数属性时,您将把主报表多值参数 ContactDisplayFields 绑定到子报表多值参数 FieldsToDisplay。

添加多值参数 ContactDisplayFields

  1. 在“布局”视图中,单击设计图面。 此时将显示**“报表”“格式”**菜单项。

  2. 从**“报表”菜单中选择“报表参数”。 此时将打开“报表参数”**对话框。

  3. 单击**“添加”**。 此时将创建包含默认值的新参数。

  4. 在**“属性”部分的“名称”**文本框中,键入 ContactDisplayFields。 请确保数据类型为 String

  5. 在**“提示”**文本框中,输入要在子报表中显示的信息。

  6. 选中**“允许空白值”**选项。

  7. 选中**“多值”**选项。

  8. 在**“可用值”部分中,请确保选中了“无查询”**并使用下表设置可用值:

    标签

    Phone

    Phone

    电子邮件

    EmailAddress

    <空白>

  9. 在**“默认值”部分中,选择“无查询”并将以下表达式粘贴到“值”**文本框中:EmailAddress。

  10. 单击**“确定”**。

  11. 单击**“预览”**。

由于您提供了可用值列表,因此**“全选”**值将自动添加到 ContactDisplayFields 参数的下拉列表中。

在下一步中,您将添加名为 Colors 的多值参数。 在本教程中,您将为多值参数 Colors 设置两个值。 设置子报表的参数属性时,您将把该多值参数的一个值绑定到子报表参数 BackgroundColorFontColor

添加多值参数 Colors

  1. 在“布局”视图中,从**“报表”菜单中选择“报表参数”**。 此时将打开“报表参数”对话框。

  2. 单击**“添加”**。 此时将创建包含默认值的新参数。

  3. 在**“属性”部分的“名称”**文本框中,键入 Colors。 请确保数据类型为 String

  4. 将现有提示替换为文本“选择背景和字体颜色:”。

  5. 选中**“多值”**选项。

  6. 清除**“允许空白值”**选项。

  7. 在**“可用值”部分中,请确保选中了“无查询”**。 请保留值表为空白。

  8. 在**“默认值”部分中,选择“无查询”并将以下两个值粘贴到“值”**文本框中:#C9DEF6SlateBlue

    必须为该参数设置两个值。 数组中的第一个值将传递给子报表作为背景颜色。 第二个值将传递给子报表作为字体颜色。

    在此示例中,背景颜色值为十六进制 RGB 颜色代码 #C9DEF6,字体颜色为 Web Color SlateBlue。

  9. 单击**“确定”**。

  10. 单击**“预览”**。

    由于没有为 Colors 参数设置任何可用值集,因此其下拉列表中未显示任何**“全选”**值。

在下一步中,您将在表中准备一个地方以添加子报表项。 您将向表组头添加第二行。 您将合并列,从而使该行中只有两个文本框,其中一个有足够的宽度来显示子报表。 然后,您将为该标题行设置可见性,以便获得参数值 ShowSalesDetails 的预期行为:当该参数为 true 时,使联系信息的详细信息行可见。

向表组头添加新行并合并其文本框

  1. 单击表。 此时将出现表控点。

  2. 右键单击组头行。 文本框的内容以 =Fields!Store.Value 开头。 选择**“在下方插入行”**。 此时将显示第二个标题行。

  3. 在仍选中该行的情况下,从报表工具栏“字号”下拉列表中选择 8

    若要使子报表周围的空白区域减到最小,请最小化将包含子报表的行。 子报表项将根据需要自行扩大,但不会缩小。

  4. 选择第 2、3、4 列中的文本框。右键单击并选择**“合并单元”**。 现在,新标题行中有两个文本框。

  5. 在选中了新表行的情况下,在“属性”窗口中,滚动到 Visibility,然后展开该节点。 将 Hidden 设置为 =Not Parameters!ShowSalesDetails.Value

向主报表添加子报表

  1. 在解决方案资源管理器中,单击报表 ContactInformation.rdl,然后将其拖到标题行中的第二个文本框,放在“联系信息”文本框旁边。

  2. 右键单击子报表的灰色区域,然后选择**“属性”。 将打开“子报表属性”**对话框。

  3. 单击**“参数”选项卡,然后单击第一个“参数名称”**文本框。 将显示下拉列表,其中包含为 ContactInformation 定义的四个参数。 使用下表设置子报表参数。

    参数名称 参数值

    ContactID

    =Fields!StoreContactID.Value

    FieldsToDisplay

    =Parameters!ContactDisplayFields.Value

    BackgroundColor

    =Parameters!Colors.Value(0)

    FontColors

    =Parameters!Colors.Value(1)

  4. 单击**“确定”**。

  5. 单击新组头行的行控点。 在“属性”窗口中,滚动到 Height,然后将值设置为 0.01 或为消除多余的空白区域所能对行高设置的最小值。

  6. 主报表中的子报表项的 Height 属性将设置最小高度。 子报表项将扩大以容纳其所绑定到的报表。

  7. 单击子报表的灰色区域。 在“属性”窗口中,滚动到 Width,然后将值设置为 3 或符合子报表定义宽度的任意宽度。

    若要消除不需要的空白区域,子报表元素的宽度应小于或等于子报表定义中定义的宽度。 子报表将根据需要在主报表中增大,但不会缩小。

  8. 预览报表。 为 FieldsToDisplay 选择不同的值,并确保子报表显示您所选的值。

    由于现在已经定义了八个参数,因此报表工具栏显得有点挤。 若要在预览模式下隐藏工具栏,请单击报表工具栏上的**“显示或隐藏参数区域”**按钮。

在下一步中,您将把 Colors 参数设置为 Internal。 内部参数可用作报表的内部变量;不能通过报表工具栏或其他任何途径设置它们的值。

将报表参数设置为内部参数

  1. 从**“报表”菜单中选择“报表参数”。 此时将打开“报表参数”**对话框。

  2. 从**“参数”**列表中选择 Colors

  3. 在**“属性”部分中,选中“内部”**选项。

    将参数值设为 Internal 意味着该参数仅显示在报表定义中。 将报表发布到服务器时,您将无法从报表服务器管理该参数。 报表工具栏将不显示该参数的提示,如果将该报表作为子报表,该参数将不显示在主报表中的子报表参数列表中。

  4. 单击**“确定”**。

  5. (可选)单击**“预览”**。 工具栏上未显示 Colors 参数的任何提示。

在第 8 课中,当报表发布到报表服务器之后,您将隐藏 Resellers Worldwide 报表的许多参数以使外观显得更加简洁。

后续步骤

在本课中,您成功地向表组头添加了另一行,合并了单元,并向单元添加了包含参数的子报表。 您根据报表参数 ShowSalesDetails 值设置了该行的可见性。 在下一课中,您将向现有 AdventureWorks 示例报表“Territory Sales Drilldown”添加参数。 请参阅第 7 课:创建钻取报表

请参阅

其他资源

在 Reporting Services 中使用参数
使用报表项

帮助和信息

获取 SQL Server 2005 帮助