FastReport .Net是一款全功能的Windows Forms、ASP.NET和MVC报表分析解决方案,使用FastReport .NET可以创建独立于应用程序的.NET报表,同时FastReport .Net支持中文、英语等14种语言,可以让你的产品保证真正的国际性。
FastReport.NET官方版下载(qun:585577353)https://www.evget.com/product/1861/download
在上文中我们已经向您介绍了创建互动报告,本文我们将继续为您介绍互动报告示例,
示例 1.网页链接
在本例中,我们将创建一个包含 "Text "对象的简单报告。点击预览窗口中的对象后,我们将进入 FastReport 网页。
创建新报告并添加 "Text "对象。在其中写入以下文本:
Go FastReport home page
右键单击对象,选择右键菜单中的 "Hyperlink... "项。按以下方式配置链接:
然后,启用 "Modify the object's appearance..."复选框,以便为对象应用一些链接属性(蓝色文本颜色、下划线和手形光标)。
运行报告并点击对象。网络浏览器窗口打开,您将进入 FastReport 主页。
在本例中,我们将创建一个包含 "Text "对象的简单报告。点击预览窗口中的对象后,我们将进入 FastReport 网页。
创建新报告并添加 "Text "对象。在其中写入以下文本:
Go FastReport home page
右键单击对象,选择右键菜单中的 "Hyperlink... "项。按以下方式配置链接:
然后,启用 "Modify the object's appearance..."复选框,以便为对象应用一些链接属性(蓝色文本颜色、下划线和手形光标)。
运行报告并点击对象。网络浏览器窗口打开,您将进入 FastReport 主页。
示例 2.创建详细报告
在本例中,我们将创建一个显示类别列表的报告。点击类别名称后,将显示详细报告,其中包含给定类别中的产品列表。
您需要执行以下操作:
- 首先创建详细报告;
- 定义识别类别的报告参数;
- 根据该参数设置数据过滤;
- 创建主报告;
- 在主报告中配置超链接,以便在运行详细报告时将参数设置为所选类别。
首先,我们将创建一个打印产品列表的详细报告。为此,创建一个新报告并选择 "Products "表作为数据源。按以下放置对象:
创建一个参数,用于将所选类别从主报告传递到详细报告。为了识别类别,我们将使用 "CategoryID "表和 "Products"表中都包含的 "CategoryID "列。按以下方式配置参数:
现在,我们需要设置数据过滤,以过滤属于指定类别的所有产品。为此,请双击 "Data"带。切换到 "Filter "选项卡,并输入以下条件:
现在创建主报告。创建新报告并选择 "Categories"表作为数据源。按以下方式放置对象:
右击 "Text "对象,选择 "Hyperlink..."菜单项。按以下方式设置链接:
选择详细报告文件的名称作为报告名称。按列表右侧的按钮,可从下拉列表中选择报告参数。作为参数值,请使用"[Categories.CategoryID]"表达式。
运行报告后,您将看到类别列表:
如果点击其中一个类别,就会生成一份详细报告。它将显示在预览窗口的一个单独选项卡上:
如图所示,标签页的标题被设置为超链接的值。在我们的例子中,这是 "CategoryID "数据列中的数值。这看起来既不翔实,也不美观。让我们更改报告,使用类别名称而不是其编号。为此,请执行以下操作:
在详细报告中
- 将参数的 "DataType(数据类型)"属性更改为 "String(字符串)";
- 在报告中添加 "Categories"数据源。它将用于在筛选数据时引用 "CategoryName "列;
- 更改 "Data "带的过滤表达式:
[Products.Categories.CategoryName] == [SelectedCategory]
在主要报告中
- 更改超链接设置。现在,我们将把"[Categories.CategoryName]"值传入报告参数。
如果我们现在运行报告,就会看到标签页的标题被设置为类别名称。我们可以稍微改进一下详细报告。添加 "Text "对象,它将在报告标题中打印所选类别的名称:
在使用这个示例时,我们创建了两份报告,并在它们之间交换了好几次。这样做很不方便。为了简化操作,可以将两份报告合二为一:主要报告放在第一页,详细报告放在第二页。在这种情况下,需要按以下方式设置超链接:
在本例中,我们需要选择 Page2 作为详细报告页面。
示例 3.交互式
在本例中,我们将看到如何通过单击 "Matrix "对象的单元格来创建详细报告。例如,我们将使用一个矩阵来显示按年份分组的员工销售额。
矩阵的数据源是 "MatrixDemo "表。该表显示了按年和月分组的员工销售额:
Name | Year | Month | ItemsSold | Revenue |
---|---|---|---|---|
Nancy Davolio | 1999 | 2 | 1 | 1000 |
Nancy Davolio | 1999 | 11 | 1 | 1100 |
Nancy Davolio | 1999 | 12 | 1 | 1200 |
Nancy Davolio | 2000 | 1 | 1 | 1300 |
Nancy Davolio | 2000 | 2 | 2 | 1400 |
Nancy Davolio | 2001 | 2 | 2 | 1500 |
Nancy Davolio | 2001 | 3 | 2 | 1600 |
Nancy Davolio | 2002 | 1 | 2 | 1700 |
Andrew Fuller | 2002 | 1 | 2 | 1800 |
Andrew Fuller | 1999 | 10 | 2 | 1900 |
Andrew Fuller | 1999 | 11 | 2 | 2000 |
Andrew Fuller | 2000 | 2 | 2 | 2100 |
Janet Leverling | 1999 | 10 | 3 | 3000 |
Janet Leverling | 1999 | 11 | 3 | 3100 |
Janet Leverling | 2000 | 3 | 3 | 3200 |
Steven Buchanan | 2001 | 1 | 3 | 4000 |
Steven Buchanan | 2001 | 2 | 4 | 4100 |
Steven Buchanan | 2000 | 1 | 4 | 3999 |
按以下方式配置矩阵:
- 将 "MatrixDemo.Year "数据列放在列头;
- 将 "MatrixDemo.Name "数据列放在行标题中;
- 将 "MatrixDemo.Revenue "数据列放在单元格中。
准备好的矩阵如下:
如图所示,单元格的值是员工全年销售额的总和。让我们创建一个详细报告,点击单元格后就会显示该报告。在我们的例子中,详细报告可以包含所选员工在所选年度每个月的销售额。
如何将单元格与打印数据连接起来?矩阵的每个单元格都有自己的地址。这是来自列标题和行标题的值的组合。在我们的示例中,单元格的地址是雇员年份和姓名的组合。这些数据可以准确地传递到详细报告中。如何做到这一点呢?非常简单:设置超链接,只显示报告名称和参数名称。参数值无需标明:对于矩阵单元格,FastReport 本身会形成值并将其传递到参数中。
假设我们点击了左上角包含数字 3900 的单元格。这是名为 "Andrew Fuller "的员工 1999 年的销售额总和。使用什么表格将此值传入参数?FastReport 使用分隔符合并列和行的值:
1999;Andrew Fuller
这是否意味着我们必须从这个字符串中提取年份值和员工姓名,将年份转换为 int,然后使用这些值进行数据筛选?不,这要简单得多。我们只需创建一个具有嵌套参数的参数。你可以在 "数据 "一章中了解到这一点。在本例中,父参数可以是这样的
创建参数时,请考虑以下时刻:
- 不需要设置父参数。只需给它命名即可;
- 父参数的嵌套参数数量必须与矩阵传递的值数量相同。在本例中,有两个值;
- 嵌套参数的顺序必须与矩阵传递值的顺序一致。在本例中,年份将在第一个参数中传递,雇员姓名将在第二个参数中传递;
- 嵌套参数可以随意命名,但最好与矩阵元素名称一致;
- 正确设置每个嵌套参数的数据类型非常重要。数据类型必须与传入参数的值一致。在我们的例子中,第一个参数(年份)必须是整数类型,第二个参数(员工姓名)必须是字符串类型。
在明确所有必要事项后,我们将创建报告。选择矩阵的单元格并调用超链接编辑器:
在超链接配置中,将父参数指定为报告参数(在我们的示例中为 "SelectedCell"):
FastReport 将这些值传入 SelectedCell.Year 和 SelectedCell.Name 嵌套参数。这些值将转换为参数配置中指定的数据类型,因此正确配置参数数据类型非常重要。
详细报告位于主报告的单独页面上,使用相同的数据源:
为了显示所选员工在所选年份的销售额,请设置筛选条件。为此,请打开 "Data"带编辑器,并输入以下筛选条件:
[MatrixDemo.Year] == [SelectedCell.Year] && [MatrixDemo.Name] == [SelectedCell.Name]
报告已准备就绪。运行报告并点击左上角的单元格。将打开一份详细报告,其中包含以下数据:
如图所示,数值之和(1900+2000)与我们点击的矩阵单元格相对应。
示例 4.带目录、导航和大纲的报告
在本例中,我们将创建一份具有以下功能的报告:
- 在第一页打印 "Table of Contents"(TOC),它是交互式的,即您可以单击其中的元素导航到相应的页面;
- 在预览窗口中显示大纲,大纲也是交互式的。
报告将使用"Categories"和 "Products" 表。在 TOC 中,我们将打印类别列表。报告的其余部分将打印产品分类列表。报告模板将由两页组成:第一页用于打印 TOC;第二页是报告的主要部分。
我们将首先讨论 TOC。创建新报告并添加 "Categories"和 "Products" 数据源。将 "Data "带连接到 "Categories"表,并按以下方式放置对象:
为了使 TOC 对象具有交互性,请配置其 "Hyperlink "属性:
将类别名称作为书签。我们稍后将定义对象的书签。
要在 TOC 中打印页码,需要执行以下操作:
启用报告的 "double pass "设置。这可以在 "Report|Options..."菜单中完成。需要这样做是因为 TOC 页面会在其他页面之前打印。此时,FastReport 不知道类别将在何处打印;
使用 "Engine.GetBookmarkPage "函数,该函数返回指定书签的页码。在本例中,我们使用"[Categories.CategoryName]"表达式作为书签名称,因此函数调用如下:
[Engine.GetBookmarkPage([Categories.CategoryName])]<
在报告的第二页,我们将创建一个主从报告,如下图所示:
设置我们在 TOC 中点击元素时导航到的书签。为此,请选择第一个 "Data "带,并在其 "Bookmark "属性中注明以下表达式:
[Categories.CategoryName]
要设置报告大纲,请执行以下操作:
- 选择第一个报告页面。这可以通过切换到该页面来完成;
- 在 "Properties "窗口中,为 "OutlineExpression "属性设置以下值:
"Contents"
- 切换到第二个报告页面;
- 选择第一个 "数据 "带,并设置其 "OutlineExpression "属性:
[Categories.CategoryName]
选择第二个 "Data "并设置其 "OutlineExpression "属性:
[Products.ProductName]