向原始报表添加子报表

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

添加子报表

  1. 打开在前一教程“教程:使用集成安全性登录安全的 SQL Server 数据库”中创建的项目。

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

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

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

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

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

<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>“插入子报表”对话框包含其他选项,允许选择现有报表和按需显示子报表。有关这些功能的更多信息,请参见<a href="ms227973(v=vs.90).md">““子报表”选项卡(“插入子报表”对话框)”</a>。</p></td>
</tr>
</tbody>
</table>
  1. 在“新建报表名称”字段中,键入“CustomerOrders”。

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

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

  4. 展开“OLE DB (ADO)”文件夹。

该文件夹包含创建报表时为该报表配置的数据库服务器。

<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>如果服务器未显示,请按照前一教程中的说明登录 SQL Server 数据库。</p></td>
</tr>
</tbody>
</table>
  1. 展开节点“Northwind”、“dbo”和“Tables”。

  2. 选择“订单”表并单击“>”符号把“订单”表移动到“选择表”面板中,然后单击“下一步”。

  3. 从“可用字段”面板中,选择“Order ID”、“Order Date”、“Shipped Date”和“Ship Name”。

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

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

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

  7. 在出现的“Customers.CustomerID 字段链接”面板中,保留默认选择不变。

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

  8. 单击“确定”。

新的子报表 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-Customers.CustomerID”。

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

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

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

现已成功地将 CustomerOrders 子报表添加到报表。在下一节中,将要添加代码,为主报表中找到的所有子报表设置安全的 SQL Server 数据库登录信息。