报表生成器FastReport .Net用户指南:“Data “带报告的操作

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

FastReport.NET官方版下载(qun:585577353)icon-default.png?t=N6B9https://www.evget.com/product/1861/download

这种类型的报告是经常需要的。它允许从数据源中打印一个行的列表。例如,这可以是一个客户名单。

连接一个带子到数据源

要打印数据源的数据,需要 "Data "带。当该条带将被打印,其次数与数据源中的行数相同。

If the "Data" band is not connected to the source, it gets printed once.  

当你创建一个新的报告时,它已经包含几个空带,包括 "Data"带。这个带子也可以从 "Configure Bands "窗口中,通过选择 "Report|Configure Bands... "菜单项添加到报告中。

为了把一个带子连接到数据上,双击它。在编辑器窗口中选择数据源并点击 "ОК":

1

打印文本

当你把带子连接到数据源后,你可以把 "Text "对象放在带子上,它将显示数据列的信息。最快的方法是--从 "Data "窗口中拖出一个数据列,然后把它放到带子上。在 "The Text object"一章中阅读更多关于 "Text "对象的内容。

数据分类

默认情况下,"Data "带按自然顺序打印数据。通常情况下,在打印前需要对数据进行排序。例如,一个客户名单可以通过按字母顺序排序来舒适地呈现。

你可以在 "Data "段编辑器中控制排序。为了调用编辑器,请双击带子上的一个空位:

2

作为一个排序条件,你可以使用一个数据列或一个表达式。你可以指出几个(不超过三个)排序条件。

例如,如果你想按城市对客户列表进行排序,然后再按客户的名字排序。对于每个条件,你可以选择排序的顺序--升序或降序。

另一种排序数据的方法 - 使用SQL查询作为数据源。该查询将在数据服务器上执行,并返回一个排序的行。

数据筛选

为了过滤打印在 "Data "带中的行,调用其编辑器并切换到 "Filter "标签:

3

作为一个过滤表达式,你可以表示任何正确的表达式。关于表达式的更多细节可以在 "Expressions"章节中找到。
在上面的例子中,使用了以下过滤器:

[Products.Discontinued] == false

表明所有断开连接标志等于false的数据行将被选中。
你可以使用复杂的过滤条件:

[Products.Discontinued] == false && [Products.UnitPrice] < 10

表明所有断开连接标志等于false的数据行,以及价格小于10的数据行将被选中。

这种过滤方法假定数据源包含所有的行,其中一部分将被过滤。如果数据源包含大量的行,这可能会严重降低报告的速度。故你可以使用SQL查询作为数据源,你可以在其中执行所需的过滤。该查询将在数据服务器上执行,只返回报告中需要的行。

You also may use dialogue forms to perform data filtering. See more details in the "Dialogue forms" chapter. 
数据页眉和页脚

一个 "Data "带可以包含一个页眉和一个页脚。页眉将在数据前打印一次,页脚将在所有数据输出后打印。

为了给 "Data "带添加页眉和页脚,选择 "Report|Configure Bands... "菜单项。在窗口中,选择 "Data "带,然后右击鼠标。在上下文菜单中选择 "Header "和/或 "Footer "项目:

4

这些带子在以下情况下可以发挥作用:

当在一页上打印多个列表时("master-master" "报告)。在这种情况下,每个数据带都可以有自己的页眉和页脚:

5

当打印一个列表时,如果该列表不适合在准备好的报告中的一页上打印。通过使用数据页眉/页脚的 "Repeat On Every Page "属性,你可以在报告的每一页打印这些带子:

6

打破数据并保持其一致性

在本节中,我们将研究两种数据打印模式--"Break "和 "Keep together"。

在常规的带状打印模式中,FastReport检查当前页是否有足够的空间来打印一个带状。如果没有,则在下一页上全部打印出带子。如果带子的 "CanBreak "属性被激活,FastReport将尝试将带子的一部分打印在可用的空间上,也就是 "Break "。

打破一个带子的尝试可以成功,也可以不成功。这取决于被放置在带子上的对象的类型和它的设置。以下物体可以被打破:

    • "Text"
    • "Rich Text"
    • "Table"
  • 这些对象也有 "CanBreak "属性。如果它被启用,那么该对象就可以被打破。不易破碎的对象总是完全显示,在那里,它们有足够的位置。

    在下图中,显示了一个带子是如何被打破的。

    7

    Break algorithm does not always work correctly. The artifacts can occur in a situation, when there are several objects with different font size on a band.

    断带的目的是为了节省印张上的空间。数据保持的目标则相反:在一张纸上完全显示一组带子。在这种情况下,虽然纸张上会有很多未使用的空间,但数据的打印方式让人很舒服。

    "keep together "机制允许将一组带子保持在一张纸上(或列,如果报告有列的话)。如果在打印时,保留的数据到了页面的末端,FastReport会将所有已经打印过的数据重新定位到新的页面。

    你可以在以下情况下使用 "keep together":

    一起打印 "Data"带的所有行;

    一起打印一个组的所有元素(页眉、数据、页脚);

    将主数据源的行与所有明细行一起打印(在 "master-detai "报告中);

    打印报告页眉或数据页眉与至少一个数据行;

    打印报告页脚或数据页脚以及至少一个数据行;

    一起打印父带和子带。

    让我们来看看 "keep together "机制的使用情况。

    要把所有的数据行或组元素(页眉、数据、页脚)放在一起,请启用 "KeepTogether "属性。这个属性在 "Data "和 "Group Header "带中使用。

    下图显示了在有和没有保持在一起的情况下数据的打印情况:

    8

    要把主数据行和详细数据行放在一起,请启用 "KeepDetail "带的 "KeepDetail "属性。这个属性用于 "master-detail "类型的报告中:

    10

    为了防止 "hanging "页眉和页脚,请使用 "KeepWithData "属性。下面这些带子都有这个属性:

    • report header
    • 报告页脚
    • data header
    • 数据页脚
    • 组头
    • 组页脚

    这个属性允许保持至少有一个数据行的页眉/页脚:

    11

    为了使一个带子和它的子带子保持在一起,启用 "KeepChild "属性。

    打印

    当数据带连接到一个空的数据源时,它将不会被打印。有时需要打印一些文本,如 "No data",而不是只打印一个空页。要做到这一点:

    • 给数据带添加一个子带
    • 将子带的PrintIfDatabandEmpty属性设置为true(可以在 "Properties "窗口中完成)
    • 把 "Text "对象放在子带上,并在其中写上 "No data to display"的文字

    12

    该报告将以如下方式打印:

    • 如果数据源有一些数据行,数据带将被打印出来,同时还有所有相关的带(数据头/数据脚);
    • 如果数据源是空的,只有带有 "No data to display "文本的子带将被打印。
    印刷层次
    一个 "Data "带允许打印一个分层的列表。为此,需要使用一个带子和一个数据源。层次结构必须在数据源中借助于两个数据列来定义:
    1. 关键列。这是数据行的标识符。
    2. 列,包含这个项目的父项的键。

    为了以分层形式打印这样的源,你需要设置以下 "Data "带属性。这可以在 "属性 "窗口中完成:

    13

    • 在 "IdColumn "属性中指出关键列;
    • 在 "ParentIdColumn "属性中指出包含父值的列;
    • 在 "Indent "属性中指出层次结构的缩进。
    让我们看看如何从 "Employees "演示表中打印雇员的层次结构的例子。该表有两列,我们需要:
    • EmployeeID列是关键,包含雇员的ID;
    • ReportsTo列包含 "parent "员工的ID。
    创建一个类似以下的报告:

    14

    设置 "Data "带属性,它负责层次结构,方法如下:

    当我们运行一个报告时,我们将看到以下内容:

    16

    当打印层次结构时,FastReport将带子向右移动(通过缩进属性中指示的值),同时也将带子宽度以相同的值减少。这使得你可以使用带子对象的锚定属性。下面是在这种情况下可以使用的该属性的可能值:

    • 左、顶(默认)--对象随带子移动;
    • 右,顶--对象保持在原来的位置;
    • 左、右、顶--对象的右边保持在原来的位置,左边随带子移动。
    你将获得一些有用的效果:

    1

    在这个例子中,图片对象的Anchor属性被设置为Left, Top;带有职位名称的对象被锚定在Left, Right, Top;带有名字的对象被锚定在Right, Top。

猜你喜欢

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