向原始报表添加子报表

首先,您要向原始报表添加子报表。

添加子报表

  1. 打开在前一教程“教程:读取和设置离散参数”中创建的项目。

  2. 从“解决方案资源管理器”中,双击“CustomersByCity”报表打开它。

  3. 右击“详细资料”灰色栏并选择“在下方插入节”。

  4. 在创建的新“详细资料 b”节中右击,指向“插入”,然后单击“子报表”。

在鼠标光标周围会出现灰色的方块。
  1. 将灰色的矩形拖入新的“详细资料 b”节中,然后单击释放它。

  2. 在“插入子报表”对话框中,选择“子报表”选项卡中的“使用报表向导创建子报表”。

    Note注意

    “插入子报表”对话框包含其他选项,允许选择现有报表和按需显示子报表。有关这些功能的更多信息,请参见““子报表”选项卡(“插入子报表”对话框)”

  3. 在“新建报表名称”字段中,键入“CustomerOrders”。

  4. 单击“报表向导...”。

  5. 在“标准报表创建向导”窗口的“可用数据源”面板中,展开“创建新连接”文件夹。

  6. 从打开的子文件夹中,展开“ODBC (RDO)”文件夹。

该文件夹包含数据库服务器,这是在创建报表时就已为报表配置的。

<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images/8yfdxzdx.alert_note(zh-cn,VS.90).gif" alt="Note" class="note" />注意</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>如果服务器未显示,则请按照前一教程中的说明连接到 Xtreme 示例数据库。</p></td>
</tr>
</tbody>
</table>
  1. 选择“订单”表并单击“>”符号把“订单”表移动到“选择表”面板中,然后单击“下一步”。

  2. 从“可用字段”面板中,选择“订单 ID”、“订单日期”、“发货日期”和“承运商”。

  3. 单击“>”符号,将这些字段移至“要显示的字段”面板,然后单击“完成”。

  4. 在“插入子报表”对话框中,选择“链接”选项卡。

  5. 在“容器报表字段链接到”面板的“可用字段”列表中,展开“客户”表,选择“客户 ID”,然后单击“>”符号。

  6. 在出现的“客户.客户 ID 字段链接”面板中,保留默认选择不变。

    这些参数和数据选择会在主报表和子报表之间自动产生关联。

  7. 单击“确定”。

新的子报表 CustomerOrders 会显示在主报表的“详细资料 b”节中。

<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images/8yfdxzdx.alert_note(zh-cn,VS.90).gif" alt="Note" class="note" />注意</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>向“详细资料”节添加子报表时,对每一行都会显示该子报表,这会增加报表的性能成本。如果不需要此详细程度的子报表信息,请将子报表放在“组”节而不是“详细资料”节中。</p></td>
</tr>
</tbody>
</table>

现在即可验证子报表中的设置。

验证子报表中的设置

  1. 在报表“详细资料”节中,双击“CustomerOrders”子报表查看它。
在设计器视图的底部,会同时出现主报表和 CustomerOrders 子报表的导航按钮。
  1. 如果“字段资源管理器”不可见,请在 Crystal Reports 工具栏上单击“切换字段视图”。
<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images/8yfdxzdx.alert_note(zh-cn,VS.90).gif" alt="Note" class="note" />注意</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>显示“字段资源管理器”的另一种方法是转到“Crystal Reports”菜单,然后单击“字段资源管理器”。</p></td>
</tr>
</tbody>
</table>
  1. 在“字段资源管理器”中,展开“参数字段”。

  2. 验证当链接子报表时,是否会自动生成参数字段“Pm-客户.客户 ID”。

  3. 在工具栏上,单击“选择专家”。

  4. 在“选择专家”对话框中,验证是否设置了条件“订单.客户 ID 等于 {Pm-客户.客户 ID}”,然后单击“确定”。

  5. 从“文件”菜单中选择“全部保存”。

已成功地将 CustomerOrders 子报表添加到 CustomersByCity 报表。在下一节中,将向子报表添加 OrderDateRange 参数。

向子报表添加 OrderDateRange 参数

  1. 在“字段资源管理器”中,右击“参数字段”,然后选择“新建...”。
  2. 在“创建参数字段”对话框中:
    • 将“名称”设置为“OrderDateRange”。
    • 将“提示文本”设置为“指定要显示的订单的日期范围”。
    • 将“值类型”设置为“日期”。
    • 将“选项”设置为仅选定一个“区域值”。
  3. 单击“确定”。
  4. 在工具栏上,单击“选择专家”。
  5. 单击“新建”选项卡。
  6. 在“选择字段”对话框中,展开“订单”表,选择“订单日期”,然后单击“确定”。
  7. 在新的“订单.订单日期”选项卡中,从下拉条件列表选择“公式”。
  8. 键入以下公式:{订单.订单日期} in {?OrderDateRange}。
  9. 单击“确定”。
  10. 从“文件”菜单中选择“全部保存”。

您已成功地将 OrderDateRange 参数添加到子报表,并将其链接到 Orders.OrderDate 列。在下一节中,将添加用于处理子报表中的 OrderDateRange 参数的代码。