子报表是包含在另一个报表(主报表)中的某个字段中的常规报表。子报表通常被设计在一个主从应用场景中,用来基于主报表中的一个当前值显示详细的信息。在接下来的示例中,主报表包含了分组而位于内容区域的子报表包含当前分组的产品详细信息。
为了基于Categories 和Products数据表生成一个主从报表,您需要创建一个Categories(主视图)报表和一个Products报表(详细视图)。
步骤一:创建主报表
- 1.使用C1Report向导创建一个基本的报表定义。
- 从Northwind数据库选择(位于“ComponentOne Samples\Common”目录下的Nwind.mdb)Categories数据表。
- 包含CategoryName和Description字段至报表。
- 在C1ReportDesigner应用程序中,单击Close Print Preview按钮以开始编辑报表。
- 设置页眉和报表页眉报表节的Visible属性的值为False。
- 在内容区域,选择DescriptionCtl并将其直接移动至CategoryNameCtl下方。
- 通过属性窗体改变外观设置(字体和前景色)。注意,在本示例中,我们向内容区域添加了一个渐变字段。关于渐变字段的更多信息,请参见“添加渐变字段”章节。
- 单击预览按钮,Categories报表现在应当看起来如下图所示:
步骤二:创建详细报表
- 在C1ReportDesigner应用程序中,通过单击新建报表按钮使用C1Report向导创建一个基本的报表定义。
- 从Northwind数据库选择Products数据表。
- 包含以下字段至报表:ProductName,QuantityPerUnit,UnitPrice,UnitsInStock,以及UnitsOnOrder。
- 在报表设计器中,单击Close Print Preview以开始编辑报表。
- 设置页眉和报表页眉报表节的Visible属性的值为False。
- 在内容区域,排布所有的控件,使其对齐到相关的标题标签。使用属性窗体改变外观设置。
步骤三:创建子报表字段
现在C1ReportDesigner程序拥有了两个独立的报表,Categories报表和Products报表。下一步是创建一个子报表:
- 在设计器的报表列表中,选择Categories(主报表)。
- 在设计模式下,从Design标签页的Fields分组,单击AddSubreport按钮,并从下拉菜单选择Products报表。
- 在报表的Detail区域,单击并拖拽鼠标指针创建一个子报表区域:
步骤四:将子报表链接到主报表
主从关系由子报表字段的Text属性进行控制。该属性应当包含一个表达式,该表达式可以计算出一个筛选子报表数据源的条件。
报表设计器可以为您自动生成这个表达式。尝试完成以下步骤:
- 右键单击子报表字段,并从菜单上选择Link Subreport。
- 弹出的对话框允许您选择通过哪些字段进行链接。
- 完成选择,并单击OK,报表设计器将生成链接表达式并将其设置给子报表字段的Text属性。在本示例中,生成的表达式为:
"[CategoryID] = '" & [CategoryID] & "'"
您同样也可以通过以下步骤链接子报表到主报表:
- 在属性窗体,单击子报表的Text属性,并选择位于下拉列表上的ScriptEditor。
- 在VBScript编辑器中输入以下表达式:
"[CategoryID] = '" & [CategoryID] & "'"
- 单击OK关闭VBScript编辑器以生成表达式。