彩票走势图

logo FastReport中文文档

示例 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

如图所示,单元格的值是员工全年销售额的总和。让我们创建一个详细报告,点击单元格后就会显示该报告。在我们的例子中,详细报告可以包含所选员工在所选年度每个月的销售额。

如何将单元格与打印数据连接起来?矩阵的每个单元格都有自己的地址。这是来自列标题和行标题的值的组合。在我们的示例中,单元格的地址是雇员年份和姓名的组合。这些数据可以准确地传递到详细报告中。如何做到这一点呢?非常简单:设置超链接,只显示报告名称和参数名称。参数值无需标明:对于矩阵单元格,FastReport 本身会形成值并将其传递到参数中。

假设我们点击了左上角包含数字 3900 的单元格。这是名为 "Andrew Fuller "的员工 1999 年的销售额总和。使用什么表格将此值传入参数?FastReport 使用分隔符合并列和行的值:



1999;Andrew Fuller
这是否意味着我们必须从这个字符串中提取年份值和员工姓名,将年份转换为 int,然后使用这些值进行数据筛选?不,这要简单得多。我们只需创建一个具有嵌套参数的参数。你可以在 "数据 "一章中了解到这一点。在本例中,父参数可以是这样的
fastreport

创建参数时,请考虑以下时刻:

  • 不需要设置父参数。只需给它命名即可;
  • 父参数的嵌套参数数量必须与矩阵传递的值数量相同。在本例中,有两个值;
  • 嵌套参数的顺序必须与矩阵传递值的顺序一致。在本例中,年份将在第一个参数中传递,雇员姓名将在第二个参数中传递;
  • 嵌套参数可以随意命名,但最好与矩阵元素名称一致;
  • 正确设置每个嵌套参数的数据类型非常重要。数据类型必须与传入参数的值一致。在我们的例子中,第一个参数(年份)必须是整数类型,第二个参数(员工姓名)必须是字符串类型。
在明确所有必要事项后,我们将创建报告。选择矩阵的单元格并调用超链接编辑器:
fastreport

在超链接配置中,将父参数指定为报告参数(在我们的示例中为 "SelectedCell"):
fastreport

FastReport 将这些值传入 SelectedCell.Year 和 SelectedCell.Name 嵌套参数。这些值将转换为参数配置中指定的数据类型,因此正确配置参数数据类型非常重要。

详细报告位于主报告的单独页面上,使用相同的数据源:

fastreport

为了显示所选员工在所选年份的销售额,请设置筛选条件。为此,请打开 "Data"带编辑器,并输入以下筛选条件:



[MatrixDemo.Year] == [SelectedCell.Year] && [MatrixDemo.Name] == [SelectedCell.Name]
报告已准备就绪。运行报告并点击左上角的单元格。将打开一份详细报告,其中包含以下数据:
fastreport

如图所示,数值之和(1900+2000)与我们点击的矩阵单元格相对应。

扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP