报表生成器FastReport .Net用户指南:组别和总数

FastReport .Net是一款全功能的Windows Forms、ASP.NET和MVC报表分析解决方案,使用FastReport .NET可以创建独立于应用程序的.NET报表,同时FastReport .Net支持中文、英语等14种语言,可以让你的产品保证真正的国际性。

浏览完整系列教程>>

前面我们看了 "Master-detail "报告类型,它打印了两个相关来源的数据。FastReport可以创建一个相似的报表,使用一个数据源。故我们使用了组。(qun:761297826)

一个组是三个带子的集合:"Group header"、"Data "和 "Group footer”。在设计器中,这看起来如下:

一个组总是包含一个页眉和数据。组的页脚是可选的,可以进行删除。

为了使用一个组,你应该为组头设置组的条件,并将数据源连接到 "Data "带。条件可以是任何表达式,但作为一项规则,这是数据源的一个列。组的打印是以下列方式进行的:

  1. 组头被打印。
  2. 数据行被打印。
  3. 检查分组条件是否有变化。
  4. 如果条件没有改变,打印下一个数据行(第2页)。
  5. 如果条件改变了,则打印组脚,并开始打印一个新的组(第1页)。

假设我们有一个产品表,数据如下: 

数据可以在CategoryName列上进行分组。这一列将被打印在组头中。数据本身是由ProductName字段呈现的。该报告将如下:

扫描二维码关注公众号,回复: 16477359 查看本文章

1

如果我们运行该报告,将看到以下内容:

创建团体

将一个组添加到一个报告中可以通过两种方法来完成。

第一种方法:你在 "Group header "窗口中添加 "组头 "组别。要做到这一点,按 "Add "按钮并选择 "组头 "带。FastReport将该组添加到可用的 "Data "带中,或者将创建一个完整的组,如果报告中没有这样的带:

为了配置一个组,双击 "Group header "带。你会看到组头编辑窗口:

你需要设置组的条件。这可以是任何表达式或数据源列。也要选择排序方式。默认情况下,数据是按升序排序的。

第二种方法:你使用向导,可以从 "Report|Group Expert..."菜单中调用该向导。为了创建一个组,输入组的条件并按 "Add "按钮:

该向导将把该组的所有元素添加到报告中。它还会在组的标题上创建 "Text"对象,在其中打印组的条件:

数据分类

组的工作正确,需要满足以下条件:数据源必须在组条件中使用的那一列上排序。如果这个条件没有得到满足,你会看到很多组包含1-2个数据行:

1

内容有可能以两种方式对数据源进行排序。

  • 你可以在组编辑器中设置数据排序。数据源将自动根据组条件进行排序;
  • 你可以在 "Data"带编辑器中设置排序。

这两种方法是等同的,然而使用第一种方法是很容易的。创建组时,你可以在一个对话框中设置数据分组和排序。

在某些情况下,不应使用第一种方法。我们应根据产品名称的第一个字母设置分组,产品将只按第一个字母排序,这表现为错误。你应使用第二种方法,并表示根据产品的全名进行排序。

Nested groups

一个嵌套组有几个 "Group header "带。最后一个带子包含 "Data "带:

1

每个组头都有自己的组别条件。

创建一个嵌套组可以用与普通组相同的方式进行。在第一种情况下,你创建一个简单的组并在 "Configure Bands "窗口中添加嵌套组。为此,选择现有的 "Group header "带,按 "Add "按钮,再添加一个 "Group header "带:

2

然后调用所添加组的编辑器,设置组的条件。

在第二种情况下,使用分组专家。设置分组条件并点击 "Add "按钮。向导将把新组添加到现有组中。
嵌套组的打印与普通组的打印没有多大区别。在打印数据时,FastReport将检查所有组的所有分组条件。如果条件改变,相应的组会结束,新的组开始打印。

Managing groups

对于组的管理,可以使用组专家。可从 "Report|Group Expert... "菜单中调用:

打印总值

分组通常用于打印每组中的某些总值。如可以是组中的行数,也可以是某一数据列的总和。打印此类值时,使用合计。在  "Data" 一章中将介绍如何使用合计。

为了打印组中的总值,需要执行以下操作:

在 "Data(数据)"窗口中选择 "Actions|New total...(Actions|New total...)"项,创建总计;

在 "Evaluate on each row of the band "组合框中选择组的数据段;

在 "Print on the band "组合框中选择组页脚;

将打印总值的 "Text "对象放在组页脚上。

若要打印每组中的行数,请按如下方式配置总数:

为了显示总计的值,将其拖到组页脚:

准备的报告如下:

在向导】的帮助下,您可以添加或删除分组,也可以更改分组顺序。更改分组顺序可使用按钮 

和 

 。通过 "Edit...(编辑...)"按钮,您可以更改所选组的分组条件。

重复页眉和页脚

组页眉和页脚具有 "RepeatOnEveryPage "属性。如果组不适合打印在报表的某一页上,,使用该属性,您可以在打印组的每一页上打印组页眉/页脚。当打印这样的页眉/页脚时,FastReport设置其 "Repeated "标志。这可用于在普通组头和重复时打印不同的对象,如在新页面上打印 "continue... "文本。故请使用 "Text "对象的 "PrintOn "属性(更多详情请参见 "Booklet "报告类型 "部分)。

为了打印不同的文本,请在组头放置两个对象,:

第一个对象将打印在普通页眉上。将其 "PrintOn "属性值设置为 "FirstPage, LastPage, OddPages, EvenPages"(即除 "RepeatedBand "外的所有值);

第二个对象将只打印重复的页眉。将其 "PrintOn "属性设置为 "RepeatedBand"。在页眉上添加带有 "continue... "文本的 "Text "对象。

报告打印如下:

组页脚可以在每一页上重复出现:

在本报告中,组页脚有两个对象,一个位于另一个之上:

Group 属性

 "Group Header" 带具有一些有用的属性。

 "StartNewPage "属性允许在打印组之前形成新页面。故每个组都将放置在新页面上。

为避免第一页为空,新页面不会在第一组之前添加。

“ResetPageNumber "属性允许在打印组时重置页码。通常它与 "StartNewPage "属性一起使用。如果同时启用这两个属性,每个组都将打印在新页面上,并有自己的页码。

猜你喜欢

转载自blog.csdn.net/m0_67129275/article/details/132711325