finereport报表软件技术培训手册内容摘要:
就可以在浏览器中进行浏 览。 动态隔间运算 层次坐标原理 由于 FineReport 采用的数据模型,是通过单元格绑定数据列,扩展来实现数据的读取和展现。 那么也就是说在设计界面的一个格子,可能对应扩展后得到多条数据。 28 但是通常像 EXCEL 中设计表格的时候,需要所得的数据进行一些运算,在 FineReport 当中,也就是要对数据列扩展返回的结果集进行运算。 较为常见的运算:对扩展出的数据进行编号,数据排名,同期比与环比,占比,累计等。 动态格间运算包括两种运算规则:绝对层次坐标,相对层次坐标。 下面就概念 进行一个简单的介绍: 1. 绝对层次坐标 在进行模板设计时,单元格尚未进行扩展,但是单元格的表达式往往需要对扩展后的单元格进行运算。 例如, A1 单元格扩展成了A1A5,如果其中一个单元格的表达式希望对扩展后的 A2 和 A3 进行求和,在扩展前,表达式很难描述这样的关系。 对扩展后的单元格进行唯一性的定义,这就是单元格的层次坐标。 单元格扩展后的定位规则 层次坐标的表达式如图: 说明: Cellx:目标单元格,是 Lk,Lk1...L1。 Tk,Tk1...T1 的附属格。 29 Lk: Cellx 的左父格, Lk 的次序是从远到近的,也就是从离当前最远的左父格开始 Tk: Cellx 的上父格, Tk 的次序是从远到近的,也就是从离当前最远的上父格开始 lk:左父格 LK 扩展后的次序,即扩展后的第几个单元格,如果不指定 lk 或者 lk 为 0,则表 示为当前表达式所在单元格所属的当前左父格 LK tk:上父格 Tk 扩展后的次序,即扩展后的第几个单元格,如果不指定 tk 或者 tk 为 0,则表示为当前表达式所在单元格所属的当前上父格 TK 注:左父格和上父格的坐标通过分号来隔开 例如:下图模板 30 对照上面的模板,若有如下公式: ► C1[A1:1,B1:2]: A1:1,表示 A1 单元格扩展出来的第一个单元格; B1:2,表示在 A1 的第一个扩展格区域内 B1 扩展出来的第二个单元格; C1[A1:1,B1:2]就表示在这个 B1 的第二个扩展格区域下的 C1 单元格,即值为 6 的单元格,所以返回值为 6 31 ► C1[A1:1],表示 A1 父格的第一个扩展格下的所有 B1 扩展格下的 C1 单元格,即值为 5, 6, 7 的单元格,返回的值以数组的形式显示: [5,6,7] ► C1[B1:1],如果这个公式写在单元格在 D1 中,即写在以 C1为父格的单元格中,则返回的 C1 单元格所属的 A1 左父格为当前 C1所属的左父格,公式就表示当前 A1 父 格下的 B1 的第一个扩展格区域中的 C1单元格,得到的结果如图: 若这个公式写在其他与 A1,B1,C1 单元格没有关系的单元格中,则返回的是 A1 所有扩展格下 B1 的第一个扩展格区域中的 C1 单元格,即值为 5, 10, 15, 20 的单元格, 返回值为: [5,10,15,20] 2. 相对层次坐标 32 报表中常常需要计算同期比、比上期之类的与 时间相关的运算,而这些运算往往需要用到下一行的数据减上一行数据,后一列数据减前一列数据,等等,这种涉及到行间、列间的运算,称为位移运算,这种位移运算通过相对层次坐标来表示。 单元格扩展后的定位规则 与绝对层次坐标类似 , Lk和 Tk 分别表示 Cellx的左父格和上父格,不同的是这里的 177。 lk 和 177。 tk 表示的是对应父格的位移量,对于左父格来说, +表示向下移动 lk 个单元格, 表示向上移动 lk 个单元格;对于上父格来说, +表示向右移动 tk 个单元格, 表示向左移动 tk 个单元格。 如果不指定所在单元格 lk,则表示为当前所在的父格 LK 例子:依旧使用绝对层次坐标中的模板,在 D1 单元格中输入公式 C1[A1:1],则返回的是当前 A1 扩展出来的上一格,对应 B1 扩展出来的值,如下图: 33 累计 累计的方式有很多,例如简单分组累计,交叉报表累计等,下面我们一一介绍各种累计的实现方法。 简单分组 逐层累计 简单分组 跨曾累计 交叉报表累计 简单分组累计 逐层累计 逐层累计,就是将每层与上一层数据相加得到这一层的数据结果,如下图所示: 34 该报表的设计过程如下: 1. 连接数据库 FRDemo 2. 设计报表 新建报表 表样设计 按照下图设计好报表的基本框架 新建一数据集名为 ds1 SQL 语句: SELECT MONTH(SIGNDATE) AS MONTH,ORDERID,AMOUNT FROM ORDERS 35 绑定数据列 按照下列表格将数据集的字段拖入对应单元格内,并作相应的设置 单元格 数据集 数据列 属性 A4 ds1 MONTH 从上到下扩展,居中,其余默认 B4 ds2 ORDERID 数据设置:汇总 |个数,居中,其余默认 C4 ds2 AMOUNT 数据设置:汇总 |求和,居中,其余默认 在 D4 单元格中写入累计公式 =D4[A4:1]+C4。 D4[A4:1]写在D4 单元格中,所以 D4 就是当前格, A4:1 表示当前单元格所属的A4 分组格的上一个格子所对应的 D4 单元格,也就是当前 D4 格子的上一行的值。 所以 D4[A4:1]+C4 表示的就是将 C4 格子中的值累计相加。 可得最终模板: 36 3. 保存预览 保存为 %FR_HOME%\WebReport\WEBINF\reportlets\\doc\Tutorial\advanced\Cacuate_Between_Cells\ 点击设计器界面的分页预览就可以在浏览器中进行浏览。 在上面一张报表的基础上我们还可以有一个稍微复杂一些的计算。 例如,我们在这张报表当中计 算的是合同成交量,那么如果我们希望在上一年的数据基础上进行累加,要怎么做呢。 下图是这个报表的设计图: 从设计图里我们可以看到,这里我们要在一个初始值的基础上对数 据 进 行 累 计。 所 以 在 D5 单 元 格 中 的 公 式 就 是 37 =IF(amp。 A5==1,D4,D5[A5:1])+C5。 amp。 A5 即判断 D5 的位置,如果 amp。 A5的返回值为 1,即 D5 是 A5 分组格区域内的第一行值,那么读取 D4的值作为累计的第一个值,如果 amp。 A5 的返回值不为 1,则读取上一个D5 的值。 最 后 将 这 张 报 表 保 存为 %FR_HOME%\WebReport\WEBINF\reportlets\\doc\Tutorial\advanced\Cacuate_Between_Cells\ 简单分组累计 跨层累计 如上图所示,需要将每个销售员的 销售额及产品成本进行累计。 跨层累计是相对于逐层累计而言的,很多报表由于格式的变化或具体的应用,扩展之后不是每行都有数据,而此时我们仍需要将有数据的进行累加,这时在公式编写方面就会有变化。 该报表的设计过程如下: 1. 连接数据库 FRDemo 2. 设计报表 38 新建报表 表样设计 按照下图设计好报表的基本框架 新建数据集 ds1 SQL 语句 : SELECT ORDERID,PRODUCTNAME,OR,PRICE,COST FROM ORDERSDETAIL,PRODUCT WHERE = 绑定数据列 按照下列表格将数据集的字段拖入对应单元格内,并作相应的设置 单元格 数据集 数据列 属性 A3 ds1 ORDERID 从上到下扩展,居中,其余默认 39 B4 ds1 PRODUCTID 从上到下扩展,左父格: A3,其余默认 C4 ds1 PRODUCTNAME 从上到下扩展,居中 ,其余默认 D4 ds1 QUANTITY 从上到下扩展,居中,其余默认 E4 ds1 PRICE 从上到下扩展,居中,其余默认 H4 ds1 COST 从上到下扩展,居中,其余默认 跨层累积 在 F4 单元格中写入公式: =D4*E4,在 G4 单元格中写入公式:=if(amp。 B4 1,G4[B4:1],G4[A3:1,B4:!1]) + F4。 该公式中 amp。 C4 即判断 G4 的位置,如果 amp。 C4 的返回值大于 1,那么读取上一个 G4 的值,如果 amp。 C4 的返回值不大于 1,则读取上一层最后一个扩展单元格的值,同样 在 I4 单元格中写入公式: =D4*H4,J4 单元格中写入公式:=if(amp。 B4 1,J4[B4:1],J4[A3:1,B4:!1]) + I4,对销售总成本进行累加。 可得最终模板: 3. 保存预览 40 保存为 %FR_HOME%\WebReport\WEBINF\reportlets\\doc\Tutorial\advanced\Cacuate_Between_Cells\ 点击设计器界面的分页预览就可以在浏览器中进行浏览。 交叉报表累计 上图这张报表,是一个简单的交叉表,纵向是按照班级的分组,横向是按照科目的分组。 交叉表的累计比上述报表复杂的一点是累计的单元格不仅仅会左父格纵向扩展开来,也会随着上父格横向扩展开来,但对 FineReport 来说很轻松就可以解决。 该报表的设计过程如下: 1. 连接数据库 FRDemo 2. 设计报表 新建报表 新建一数据集名为 ds1 SQL 语句: SELECT * FROM STSCORE 绑定数据列 41 按照下列表格将数据集的字段拖入对应单元格内,并作相应的设置 单元格 数据集 数据列 属性 A2 ds1 CLASSNO 从上到下扩展,居中,其余默认 B1 ds1 COURSE 从左到右扩展,居中,其余默认 B2 ds1 GRADE 数据设置:汇总 |求和,居中,其余默认 在 C2 单元格中写入公式 : =B2+C2[A2:1]。 其中 C2[A2:1]表达式中, A2:1 表示 A2 分组格的上一个格子, C2 表示当前格所在的 C2 单元格。 最终模板如下: 3. 保存预览 保存为 %FR_HOME%\WebReport\WEBINF\reportlets\doc\Tutorial\advanced\Caculate_Between_Cells\ 点击设计器界面的分页预览就可以在浏览器中进行浏览 42 具体内容为制作展示模板 》高级报表设计 》动态隔间运算 》层次坐标原理 +累计 分页 动态重复标题 动态重复标题行是指在报表数据分多页显示的时候,通过重复标题的设置,将左表头或者上表头重复显示在每一页当中。 如下图所示: 第一页: 第二页:。finereport报表软件技术培训手册
相关推荐
以太网口的编号为“槽号 /0/0”,右侧以太网口的编号为“槽号 /0/1”。 如防火墙处理板上的固定以太网口的编号分别为 0/0/0(左)和 0/0/1(右)。 1 槽位以太网接口板 2FE 上的编号为 1/0/0(左)和 1/0/1(右)。 Eudemon500/1000防火墙的外观 介绍 Eudemon500/1000防火墙 机箱的外形结构类似,下面以 Eudemon1000 防火墙的
配置备份组的定时器 vrrp vrid 1255 timer advertise 1255 说明:设置备份组中组播报文的发送间隔,默认值为 1秒。 配置监视指定接口 vrrp vrid 1255 track ether [reduced 1255] 说明:接口监视命令,其目的是同一台设备上的各个 VRRP 组能够统一 变化状态。 当监控的接口 down 掉后,该监控方会根据设置的
ress = 0x01e83f60, Next to be executed Instruction Address = 0x0022f568 Stack Address = 0x01e83f78, Next to be executed Instruction Address = 0x00253fdc Stack Address = 0x01e83f80, Next to be
4M的广告量, 在本地和区域 p p2各投 1M,拿到了 4个订单,这次的广告投入量相对比较合理,企业顺利完成了订 单要求。 并继续对新产品投币进行研发,新市场开拓和产品 ISO 资格认证投资也在稳妥进行。 因此 P3产品在本年研发成功, ISO9000取得资格认证,国内市场也在本年开拓完成。 在第四年的生产当中,虽然进入了国内市场、新产品 p3也研发成功,但由于本企业现金的短缺,
品及药品。 将 ERCP 检查病人带入检查室。 病人进入 ERCP 检查室即热情接待病人,给予咽喉部局 麻。 肌肉注射术前针。 根据不同的检查要求、给予适当的体位。 操作中的药品、器械、仪器等应预先准备好,做到忙而不乱。 一次性无菌医疗用品使用后、必须进行消毒、毁型,禁止重复使用。 操作结束整理用物,将纤维十二指肠镜送内镜室清洗及消毒并保养。 操作毕,作好病人的健康指导和病情记录。 作好
确市场未来需求趋势,掌握竞争对手在生产能力、发展方向、战略目标等方面的各种资料。 综合各种信息及时调整自身生产线,确定经营目标及方向。 灵活运用资金,使生产能力、投入产出比、收益率、供需平衡等各方面达到最大值。 对市场需求判断失误、产能落后或过剩、资金短缺或闲臵,这些都 不利于公司效益。 只有协调好这三者,才能使公司很好的经营下去,任何方面出现小差错,都有可能使公司进入恶性循环,面临破产危机。